iptable用于端口转发

时间:2013-05-15 14:15:51

标签: linux ubuntu debian iptables portforwarding

我想将端口22上的所有流量信息重定向到我的Linux(192.168.1.34)到另一个地址

所以我使用了以下iptable命令

sudo iptables -t nat -A PREROUTING -p tcp --dport 22 -j DNAT --to-destination 192.168.1.239:22

该命令不会返回错误。

但是当我尝试从PC(192.168.1.133)打开ssh会话到我的linux(192.168.1.34)时,ssh会话没有打开。看起来ssh trafic没有重定向到(192.168.1.239

如果我直接从PC(192.168.1.133)打开ssh会话到(192.168.1.239),那么会话就会打开

2 个答案:

答案 0 :(得分:2)

首先,确保NAT主机启用了IP转发:

echo "1" > /proc/sys/net/ipv4/ip_forward

其次,所有主机都位于同一子网上,这意味着,从192.168.1.239返回客户端(192.168.1.133)的SSH流量不会通过192.168.1.34路由。

所以你可以:

  1. 同时使用DNAT和SNAT,或
  2. 为您的主机使用不同的子网。

答案 1 :(得分:1)

您需要再添加两条规则:Linux IP( 192.168.1.34 )和另一台机器的IP( 192.168.1.239 ):

### \# prerouting
sudo iptables -t nat -A PREROUTING -p tcp --dport 22 -j DNAT --to-destination 192.168.1.239:22

### \# postrouting
sudo iptables -t nat -A POSTROUTING -p tcp --dport 22 -j MASQUERADE

### \# forward
sudo iptables -A FORWARD -s 192.168.1.34 -d 192.168.1.239 -j ACCEPT

sudo iptables -A FORWARD -s 192.168.1.239 -d 192.168.1.34 -j ACCEPT