Имеем:
интернет
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|| ||
_____||______ ___||___
( 1.2.3.4 ) ( )
( ) ( ws1 )
( router ) (________)
( )
(_10.0.0.1/24_)
||
||
___||___
( )
( switch )========================================
(________) || ||
_____||____ _____||____
(10.0.0.2/24) (10.0.0.5/24)
( ) ( )
(___server__) (____ws2____)
На роутере порт 22 проброшен на порт 22 машины server.
Делаем:
server# iptables -t raw -A PREROUTING -j LOG --log-prefix "raw PREROUTING "
server# iptables -t mangle -A PREROUTING -j LOG --log-prefix "mangle PREROUTING "
server# iptables -t nat -A PREROUTING -j LOG --log-prefix "nat PREROUTING "
server# iptables -t nat -A PREROUTING -p tcp --dport 4444 -j DNAT --to-destination 10.0.0.5:22
server# iptables -t nat -A POSTROUTING -j MASQUERADE
ws1# ssh -L 5555:10.0.0.2:4444 1.2.3.4 -fN
ws1# ssh localhost -p 5555
Смотрим логи на server - в raw PREROUTING пакеты идут, в mangle PREROUTING идут, а в nat PREROUTING - не идут, нету. Исходя из схемы, должны идти.
Что хотелось получить:
возможность вместо ssh обращаться на ws2 через DNAT, настроенный на server1, к сервису, шифрование у которого внушает доверия меньше, чем ssh, и иметь шифрованное соединение. Из-за того, что пакеты, выходящие из ssh-туннеля, не попадают в nat PREROUTING, не получается сделать DNAT, и мой план не работает.
Где в реализации плана я допустил ошибки?