Есть тихая, спокойная локальная сеть 192.168.0.0/24, в качестве шлюза из дикого Интернета Linux с 2 статическими интерфейсами: lan 192.168.0.1 и wan, например, 98.98.98.98 На нем же стоит, настроен Iptables. Из сети / со шлюза Internet работает (ip forwarding конечно же включен) . Работает «через» SNAT:
iptables -t nat -A POSTROUTING -o wan -m iprange --src-range 192.168.0.2-192.168.0.254 -m policy --dir out --pol none -j SNAT --to-source 98.98.98.98
На шлюзе также стоит Ssh, который «висит» ТОЛЬКО на адресе 192.168.0.1, то есть строго «слушает» только интерфейс lan Возникла необходимость включить удаленный доступ через темный Internet к Ssh.
Делаю в Iptables DNAT:
iptables -t nat -A PREROUTING -i wan -m iprange ! --src-range 192.168.0.2-192.168.0.254 -d 192.168.0.1 -p tcp -m tcp --dport 22000 -m policy --dir in --pol none -j DNAT --to-destination 192.168.0.1:22
Так, как пакет предназначен шлюзу, не локальной сети, и с учетом DNAT на lan адрес шлюза, прописываем filter INPUT правило:
iptables -t filter -A INPUT -i lan -m iprange ! --src-range 192.168.0.2-192.168.0.254 -d 192.168.0.1 -p tcp -m tcp --dport 22 -m policy --dir in --pol none -j ACCEPT
iptables -t filter -A OUTPUT -o lan -s 192.168.0.1 -m iprange ! --dst-range 192.168.0.2-192.168.0.254 -p tcp -m tcp --sport 22 -m policy --dir out --pol none -j ACCEPT
Правильно ли понимаю, что при DNAT пакеты между интерфейсами НЕ «перекидываются» ? Только при FORWARD ?
То есть, хотя ssh «висит» только на lan, пакет, пришедший на wan, у которого по DNAT меняется адрес получателя на локальный адрес шлюза, этот пакет на lan НЕ пересылается, а отправляется «из» wan интерфейса на локальный процесс в виде ssh ? Или что-то делаю не так, и такой пакет ДОЛЖЕН переслаться на lan, из которого уже он отправляется на local process - ssh.
P. S.: Tcpdump видит на wan только пакеты на 20000 порт, на lan, от внешнего хоста, от которого идет соединение трафика нет. Хотя соединение проходит. При FORWARD, если DNAT «идет» в локальную сеть, трафик на lan виден.