Scenariu:
Un simplu script PHP (myip.php) găzduit pe un server cu IP public WSIP. Scriptul este disponibil prin http și https.
Am un server mic (GW) cu IP public GWIP.Acest server este destinat să fie utilizat doar ca gateway.
Un alt server (WORKER) trebuie să acceseze scriptul php, dar doar prin GW. WORKER are Docker instalat pe el.
Wireguard este configurat între GW și WORKER, acționând GW ca server VPN.
GW wg0.conf
[Interfață]
PrivateKey = <GW-PRI-K>
Adresa = 10.1.0.1/24
ListenPort = 51820
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
PublicKey = <WORKER-PUB-K>
IP-uri permise = 10.1.0.2/32,10.1.0.0/24
LUCRĂTOR wg0.conf
[Interfață]
PrivateKey = <WORKER-PRI-K>
Adresa = 10.1.0.2/24
[Peer]
PublicKey = <GW-PUB-K>
Punct final = GWIP:51820
AllowedIPs = 10.1.0.1/24, WSIP/32
PersistentKeepalive = 25
De la WORKER (gazdă) pot ajunge la serviciul web. Totul este bine.
curl http://$WSIP/myip.php
xxx.xxx.243.174
curl https://$WSIP/myip.php
xxx.xxx.243.174
Dar, dacă rulez aceeași comandă dintr-un container docker:
curl http://$WSIP/myip.php
xxx.xxx.243.174
curl https://$WSIP/myip.php
NICIUN RASPUNS pentru https.
Intrări relevante din tabelul de rutare ale WORKER:
10.1.0.0/24 dev wg0 proto kernel scope link src 10.1.0.2
WSIP dev wg0 scope link
Se pare că nu există nicio problemă la accesarea serverului WS, dar ceva se întâmplă cu răspunsul.
Sunt destul de convins că soluțiile ar trebui să fie legate de masquerading, dar după câteva ore sunt puțin pierdut.
Orice indiciu?