码迷,mamicode.com
首页 > 系统相关 > 详细

linux下进行端口映射

时间:2015-03-31 11:02:26      阅读:366      评论:0      收藏:0      [点我收藏+]

标签:

工作需要将某个具有外网IP的server的某个端口映射到某个内网IP的server的相同端口上。

首先想到使用NAT,命令如下

echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -I PREROUTING -d $outterIP -p tcp --dport $outterPort -j DNAT --to-destination $innerIP:$innerPort
iptables -I FORWARD -p tcp -m state --state RELATED,ESTABLISHED --dport $innerPort -j ACCEPT
iptables -t nat -I POSTROUTING -s $innerIP -j SNAT --to-source $outterIP

后面发现NAT映射失败,仔细检查发现由于$outterIP并不是$innerIP的网关,从$innerIP回来的数据包直接从其网关传输走了,无法到达$outterIP所在的server, 即SNAT无法正常工作。

最后想了想,还是直接用ssh port forwarding了,命令如下

ssh -Nfq -c arcfour  -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=quiet -o ServerAliveInterval=15 -o ServerAliveCountMax=3 -L 0.0.0.0:8118:192.168.9.85:8118 -i /root/.ssh/id_rsa root@127.0.0.1

效率方面估计会比直接NAT端口映射差一点,但我也能接受了


最后附一张iptables数据包流转图

技术分享

linux下进行端口映射

标签:

原文地址:http://my.oschina.net/jeremyxu2010/blog/393898

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!