Приветствую. Возникла проблема проброса портов наружу через туннель.
Логика работы следующая: На удаленный IP приходят запросы на подключение к определенным портам; запросы переадресовываются через туннель к локальному узлу который не есть шлюзом по-умолчанию в сети; локальный узел переадресовывает запросы на соседа по сети с подстановкой IP-источника запроса на себя, чтобы сосед отвечал в туннель, а не через шлюз.
Внутренняя сеть с выходом в Интернет: 192.168.0.0/24 gw 192.168.0.1
Во внутренний сети:
- 192.168.0.51 — узел с поднятым туннелем
- 192.168.0.252 — хост на которого нужно пробросить 80,554,8000,9010
Туннель:
- 192.168.2.1 — сервер с pptpd (он же 90.90.90.90)
- 192.168.2.2 — клиент pptp (он же 192.168.0.51)
На удаленной машине (90.90.90.90):
# echo 1 > /proc/sys/net/ipv4/ip_forward
# iptables -P PREROUTING ACCEPT
# iptables -P FORWARD ACCEPT
# iptables -P POSTROUTING ACCEPT
# iptables -t nat -A PREROUTING -d 90.90.90.90/32 -p tcp -m tcp --dport 8000 -j DNAT --to-destination 192.168.2.2:80
# iptables -t nat -A PREROUTING -d 90.90.90.90/32 -p tcp -m tcp --dport 554 -j DNAT --to-destination 192.168.2.2:554
# iptables -t nat -A PREROUTING -d 90.90.90.90/32 -p tcp -m tcp --dport 8000 -j DNAT --to-destination 192.168.2.2:8000
# iptables -t nat -A PREROUTING -d 90.90.90.90/32 -p tcp -m tcp --dport 9010 -j DNAT --to-destination 192.168.2.2:9010
# iptables -t mangle -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
# iptables -t nat -A POSTROUTING -d 192.168.2.2/32 -p tcp -m tcp --dport 80 -j SNAT --to-source 90.90.90.90
# iptables -t nat -A POSTROUTING -d 192.168.2.2/32 -p tcp -m tcp --dport 554 -j SNAT --to-source 90.90.90.90
# iptables -t nat -A POSTROUTING -d 192.168.2.2/32 -p tcp -m tcp --dport 8000 -j SNAT --to-source 90.90.90.90
# iptables -t nat -A POSTROUTING -d 192.168.2.2/32 -p tcp -m tcp --dport 9010 -j SNAT --to-source 90.90.90.90
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
На локальном хосте 192.168.0.51:
# echo 1 > /proc/sys/net/ipv4/ip_forward
# iptables -P PREROUTING ACCEPT
# iptables -P FORWARD ACCEPT
# iptables -P POSTROUTING ACCEPT
# iptables -t nat -A PREROUTING -p tcp -d 192.168.2.2 --dport 80 -j DNAT --to-destination 192.168.0.252:80
# iptables -t nat -A PREROUTING -p tcp -d 192.168.2.2 --dport 554 -j DNAT --to-destination 192.168.0.252:554
# iptables -t nat -A PREROUTING -p tcp -d 192.168.2.2 --dport 8000 -j DNAT --to-destination 192.168.0.252:8000
# iptables -t nat -A PREROUTING -p tcp -d 192.168.2.2 --dport 9010 -j DNAT --to-destination 192.168.0.252:9010
# iptables -t nat -A POSTROUTING -p tcp -d 192.168.0.252 --dport 80 -j SNAT --to-source 192.168.0.51
# iptables -t nat -A POSTROUTING -p tcp -d 192.168.0.252 --dport 554 -j SNAT --to-source 192.168.0.51
# iptables -t nat -A POSTROUTING -p tcp -d 192.168.0.252 --dport 8000 -j SNAT --to-source 192.168.0.51
# iptables -t nat -A POSTROUTING -p tcp -d 192.168.0.252 --dport 9010 -j SNAT --to-source 192.168.0.51
# iptables -t nat -A POSTROUTING -o ppp+ -j MASQUERADE
Некоторые выводы програм:
user@192.168.0.51:~$ nmap 192.168.0.252
Starting Nmap 7.01 ( https://nmap.org ) at 2018-02-12 13:44 EET
Nmap scan report for 192.168.0.252
Host is up (0.0019s latency).
Not shown: 995 closed ports
PORT STATE SERVICE
80/tcp open http
554/tcp open rtsp
8000/tcp open http-alt
9010/tcp open sdr
user@90.90.90.90:~$ nmap 192.168.2.2
Starting Nmap 7.01 ( https://nmap.org ) at 2018-02-12 12:00 UTC
Nmap scan report for 192.168.2.2
Host is up (0.057s latency).
Not shown: 992 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp filtered http
81/tcp filtered hosts2-ns
139/tcp open netbios-ssn
445/tcp open microsoft-ds
554/tcp filtered rtsp
8000/tcp filtered http-alt
8200/tcp filtered trivnet1