Назад | Перейти на главную страницу

Простейший брандмауэр не работает

Я пытаюсь перенаправить 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: -