У меня есть два сервера, к одному из которых я могу получить доступ через wireguard. У меня есть служба, которая прослушивает порт 4559 на втором сервере. Как я могу перенаправить порт на второй сервер через iptables.
[laptop] [server1] [server2]
10.10.0.1 (wireguard) -------> 10.10.0.2:4559 --------> 192.168.1.20:4559
Чтобы перенаправить TCP-порт 4559 с вашего интерфейса WireGuard на server1 на server2, добавьте это в раздел [Interface]
конфигурации WireGuard server1:
PreUp = sysctl -w net.ipv4.ip_forward=1
PreUp = iptables -t nat -A PREROUTING -i %i -p tcp --dport 4559 -j DNAT --to-destination 192.168.1.20
PreUp = iptables -t nat -A POSTROUTING ! -o %i -j MASQUERADE
PostDown = iptables -t nat -D PREROUTING -i %i -p tcp --dport 4559 -j DNAT --to-destination 192.168.1.20
PostDown = iptables -t nat -D POSTROUTING ! -o %i -j MASQUERADE
Замените -p tcp
с -p udp
, если вы пытаетесь перенаправить UDP-порт 4559.
Это будет прекрасно работать для доступа к server2 с ноутбука как 10.10.0.2:4559
; но ваш конкретный сценарий очень похож на общий шаблон доступа «точка-к-сайту» - ноутбук является удаленной «точкой», а server1 обеспечивает доступ к более крупному «сайту». С помощью этого шаблона вы обычно либо настраиваете маршрутизатор на сайте для маршрутизации вашей подсети WireGuard (например, 10.10.0.24.00
) напрямую через server1 (без NAT), или вы должны настроить SNAT на server1 для маскировки пакетов от WireGuard на сайт.
При любом из этих двухточечных подходов вы получите доступ к порту 4559 на server2 с ноутбука как 192.168.1.20:4559
(точно так же, как если бы ноутбук был физически в локальной сети сайта). Вот хороший обзор ваших параметров маршрутизации «точка-сайт» WireGuard со ссылками на пошаговые руководства, если вы хотите подробнее изучить эти параметры.