ASPONE.CN
苦逼

iptables做端口转发

最常用的转发,从 192.168.1.21:59388 转发到 192.168.1.20:5938

pro='tcp'
NAT_Host='192.168.1.21'
NAT_Port=5938
Dst_Host='192.168.1.20'
Dst_Port=5938
iptables -t nat -A PREROUTING -m $pro -p $pro --dport $NAT_Port -j DNAT --to-destination $Dst_Host:$Dst_Port
iptables -t nat -A POSTROUTING -m $pro -p $pro --dport $Dst_Port -d $Dst_Host -j SNAT --to-source $NAT_Host
iptables -A FORWARD -d $Dst_Host -j ACCEPT


不常用的转发,192.168.1.21 所有端口全部转发到 192.168.1.20

NAT_Host='192.168.1.21'
Dst_Host='192.168.1.20'
iptables -t nat -A PREROUTING -p tcp -d $NAT_Host -j DNAT --to $Dst_Host
iptables -t nat -A POSTROUTING -p tcp -d $Dst_Host -j SNAT --to $NAT_Host
iptables -A FORWARD -d $Dst_Host -j ACCEPT


最特别的转发,从 10.0.0.30:59388 转发到 127.0.0.1:5938

sysctl -w net.ipv4.conf.eth1.route_localnet=1
iptables -t nat -A PREROUTING -p tcp -d 10.0.0.30.179 --dport 5938 -j DNAT --to 127.0.0.1:59388
iptables -t nat -A POSTROUTING -d 127.0.0.1 -p tcp --dport 59388 -j SNAT --to-source 10.0.0.30.179

注意:第一条命令的 eth1 为 10.0.0.30 所在网卡。

注意注意注意:这是不安全的做法,因为这样的流量是不正常的。

但是,配合之前的“用 SSH 转发”,这样的转发就有用了。

具体场景就是 Client 端通过 SSH 做转发,把 Client 的 5938 端口映射到 Server 端的 127.0.0.1:59388

然后在 Server 端通过 iptables 做 10.0.0.30:5938 转发到 127.0.0.1:59388

这样就可以不用 nginx 转发了

Copyright © 2016 ASPONE.CN. All Rights Reserved. 京ICP备18038662号