LINUX.ORG.RU
ФорумAdmin

Как правильно настроить port forwarding с помощью iptables?

 , ,


0

3

Провайдер не предоставляет белый ip адрес, но нужен был доступ к web интерфейсу расположенному в домашней сети. Поэтому решено было купить vds, c помощью wireguard организовать туннель до компьютера дома, а на сервере задействовать форвардинг портов. На сервере были задействованы следующие правила iptables:


~# iptables-save
# Generated by iptables-save v1.8.7 on Thu Oct  6 18:42:19 2022
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [24918:26019366]
-A INPUT -i eth0 -p udp -m udp --dport <wireguard_port> -j ACCEPT
-A INPUT -i wg0 -j ACCEPT
-A INPUT -i eth0 -j ACCEPT
-A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -j DROP
-A FORWARD -i wg0 -o eth0 -j ACCEPT
-A FORWARD -i eth0 -o wg0 -j ACCEPT
-A FORWARD -i wg0 -j ACCEPT
-A FORWARD -i eth0 -p tcp -m tcp --dport 80 -j ACCEPT
COMMIT
# Completed on Thu Oct  6 18:42:19 2022
# Generated by iptables-save v1.8.7 on Thu Oct  6 18:42:19 2022
*nat
:PREROUTING ACCEPT [1833:131264]
:INPUT ACCEPT [1240:59269]
:OUTPUT ACCEPT [77:6435]
:POSTROUTING ACCEPT [57:2848]
-A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j DNAT --to-destination <home_ip_inside_wireguard>
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT


eth0 - внешний интерфейс с постоянным ip
wg0  - виртуальный  интерфейс wireguard

Если все устройства находятся внутри wireguard все работает, а вот если из интернета обратиться на ip vds, то нет.

-A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j DNAT --to-destination <home_ip_inside_wireguard>

Поменяет dst но не src.

-A POSTROUTING -o eth0 -j MASQUERADE

Прилетел пакт с адреса 1.1.1.1 на ваш адрес 2.2.2.2. После правила DNAT у него dst поменялся на <home_ip_inside_wireguard> но src остался тем же. И вы отвечаете на него уже со своего «расположенному в домашней сети»
Намек понятен?

anc ★★★★★
()
-A INPUT -i eth0 -j ACCEPT
-A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -j DROP
...
-A FORWARD -i wg0 -o eth0 -j ACCEPT
...
-A FORWARD -i wg0 -j ACCEPT

Это специально?

Tanger ★★★★★
()