Сценарий:
Простой PHP-скрипт (myip.php), размещенный на сервере с общедоступным IP-адресом WSIP. Скрипт доступен по http и https.
У меня есть небольшой сервер (GW)с общедоступным IP-адресом GWIP. Этот сервер предназначен для использования только в качестве шлюза.
Другой сервер (WORKER)должен получить доступ к скрипту php, но только через GW . WORKER, на нем установлен Docker.
Wireguard настраивается между GW и WORKER, при этом GW действует как VPN-сервер.
GW wg0.conf
[Interface]
PrivateKey = <GW-PRI-K>
Address = 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>
AllowedIPs = 10.1.0.2/32,10.1.0.0/24
WORKER wg0.conf
[Interface]
PrivateKey = <WORKER-PRI-K>
Address = 10.1.0.2/24
[Peer]
PublicKey = <GW-PUB-K>
Endpoint = GWIP:51820
AllowedIPs = 10.1.0.1/24,WSIP/32
PersistentKeepalive = 25
С WORKER (host)я могу получить доступ к веб-сервису. Все ок.
curl http://$WSIP/myip.php
xxx.xxx.243.174
curl https://$WSIP/myip.php
xxx.xxx.243.174
Но если я запускаю ту же команду из док-контейнера:
curl http://$WSIP/myip.php
xxx.xxx.243.174
curl https://$WSIP/myip.php
НЕТ ОТВЕТА для https.
Соответствующие записи в таблице маршрутизации WORKER:
10.1.0.0/24 dev wg0 proto kernel scope link src 10.1.0.2
WSIP dev wg0 scope link
Похоже, проблем с доступом к серверу WS нет, но что-то происходит с ответом.
Я почти уверен, что решения должны быть связаны с маскировкой, но через несколько часов я немного потерялся.
Есть зацепки?
Поскольку вы получаете ответ с помощью http, это не должно быть ошибкой маршрутизации или нации. Кроме того, вы не получите ошибку с curl, так что это может быть просто пустой ответ.
Не могли бы вы попробовать получить http-код curl -I https://$WSIP/myip.php
и сделать curl подробным с помощью curl -v https://$WSIP /myip.php
?
Вы также можете проверить журналы php.