最简单的防火墙不起作用

1 iptables port-forwarding

我尝试使用以下 bash sctipt 将 ssh 流量从一台机器重定向到另一台机器:

   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 
Run Code Online (Sandbox Code Playgroud)

但是当我输入

ssh user@localhost
Run Code Online (Sandbox Code Playgroud)

或者

ssh user@192.168.2.1 # (address of local host)
Run Code Online (Sandbox Code Playgroud)

我收到错误“连接被拒绝”。

请帮我。

And*_*ith 5

ssh user@localhost 行不通,至少在您使用的规则下不行。

PREROUTING链处理进入机器的数据包,而如果您连接到本地主机,则数据包是在本地生成的。

不过,好处是您的配置应该适用于外部连接。你从别的地方试过吗?

编辑:这是一个有用的 netfilter 流程​​图:-

在此处输入图片说明