проброс портов с интерфейса wireguard на другой хост с помощью iptables

У меня есть два сервера, к одному из которых я могу получить доступ через wireguard. У меня есть служба, которая прослушивает порт 4559 на втором сервере. Как я могу перенаправить порт на второй сервер через iptables.

[laptop]                         [server1]                 [server2]
10.10.0.1 (wireguard) -------> 10.10.0.2:4559 --------> 192.168.1.20:4559
0
задан 25 August 2021 в 14:11
1 ответ

Чтобы перенаправить 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 со ссылками на пошаговые руководства, если вы хотите подробнее изучить эти параметры.

0
ответ дан 25 August 2021 в 21:21

Теги

Похожие вопросы