Я пытаюсь перенаправить ssh-трафик с одного компьютера на другой с помощью следующего сценария bash:
IPTABLES="/usr/sbin/iptables"
$IPTABLES -F
$IPTABLES -X
$IPTABLES -F -t nat
$IPTABLES -X -t nat
$IPTABLES -F -t mangle
$IPTABLES -X -t mangle
$IPTABLES --policy INPUT ACCEPT
$IPTABLES --policy FORWARD ACCEPT
$IPTABLES --policy OUTPUT ACCEPT
$IPTABLES -t nat -A POSTROUTING --out-interface ppp0 -j MASQUERADE
$IPTABLES -t nat -A PREROUTING -p tcp --dport 22 -j DNAT --to 192.168.2.2
echo 1 > /proc/sys/net/ipv4/ip_forward
Но когда я ввожу
ssh user@localhost
или
ssh user@192.168.2.1 # (address of local host)
Я получаю сообщение об ошибке «В соединении отказано».
Пожалуйста, помогите мне.
ssh user@localhost
не будет работать, по крайней мере, с теми правилами, которые вы использовали.
В PREROUTING
chain работает с пакетами, поступающими на машину, тогда как если вы подключаетесь к localhost, пакеты генерируются локально.
Однако положительным моментом является то, что ваша конфигурация должна работать для внешних подключений. Вы пробовали это где-нибудь еще?
Редактировать: Это полезная диаграмма потоков для netfilter: -