По сути, я хочу использовать публичный IP облачной виртуальной машины Google для доступа к своему локальному веб-серверу. У меня нет публичного IP на моей локальной стороне.
Когда я ставлюgcloud_public_ip:80в адресной строке браузера я хочу получить доступ к веб-порту моего локального сервера вместо веб-порта облачной виртуальной машины.
Я успешно настроил wireguard. Интерфейсы wg0 на gcloud vm и локальном сервере запущены и работают. На моем локальном маршрутизаторе нет блокировки портов или фильтрации IP. Я также открыл веб-порты 80/443 udp/tcp ingress на google cloud firewall + некоторые другие порты для туннеля wireguard.
Я читал, что мне нужно использовать команду iptables на облачной виртуальной машине, чтобы перенаправить входящий трафик из интернета на веб-порт 80/443 моего локального сервера, который находится на другой стороне туннеля Wireguard. Я не очень хорошо с этим знаком, но насколько я знаю, мне нужно выполнить две команды: одну для PREROUTING и одну для POSTROUTING.
Это команды, которые я дал, но они не работают или, по крайней мере, мне кажется, что я все еще что-то упускаю.
sudo iptables -t nat -A PREROUTING -i ens4 -p tcp --dports 80,443 -j DNAT --to-destination 10.0.3.2
sudo iptables -t nat -A POSTROUTING -p tcp -d 10.0.3.2 --dports 80,443 -j SNAT --to-source 10.140.0.2
ens4 — это внутренний интерфейс виртуальной машины Google Cloud, которому сопоставлен публичный IP-адрес.
10.0.3.2 — это IP-адрес туннеля локального сервера.
10.140.0.2 — это IP-адрес ens4, которому сопоставлен публичный IP-адрес.
решение1
Вы настроили правила на своем VPS-сервере, чтобы он мог правильно обрабатывать трафик с/на ваш веб-сервер.
Однако вам необходимо настроить правила на вашем веб-сервере, которые будут перенаправлять весь трафик через туннель Wireguard.
Вам необходимо настроить маршрут по умолчанию через туннель Wireguard на вашем веб-сервере. Должен быть маршрут хоста к VPS через фактическое интернет-соединение, которое вы используете.
Все детали зависят от более подробных настроек вашей сети.