linux下用用iptables做端口映射的shell-阿里云开发者社区

开发者社区> 开发与运维> 正文
登录阅读全文

linux下用用iptables做端口映射的shell

简介:

情形一:跨网络、跨主机的映射Full-Nat

我们想到达主机B的80端口,但是由于网络限制可能无法直接完成。但是我们可以到达主机A的8080端口,而主机A可以直接到达B的80端口。
这时候可以使用iptables,将主机B的80端口映射到主机A的8080端口,通过访问A的8080相当于访问B的80。实现如下: 
在主机A上直接如下命令,实现端口映射的Full-Nat

复制代码
复制代码
#!/bin/bash
pro='tcp'
NAT_Host='Host_A'
NAT_Port=8080
Dst_Host='Host_B'
Dst_Port=80
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
复制代码
复制代码

 

说明:

  1. NAT_Pro表示NAT的协议,可以是tcp或udp
  2. NAT_Host表示中间做端口映射的主机。这里也就是主机A
  3. NAT_Port表示中间做端口映射的端口。这里也就是主机A的8080口
  4. Dst_Host表示被NAT的主机。这里也就是主机B
  5. Dst_Host表示被NAT的端口。这里也就是主机B的80口

情形二:主机内部的端口重定向

我们可能需要将访问主机的7979端口映射到8080端口。也可以iptables重定向完成

iptables -t nat -A PREROUTING -p tcp --dport 7979 -j REDIRECT --to-ports 8080

注意问题

需要打开ip_forward功能。

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

 


本文转自茄子_2008博客园博客,原文链接:http://www.cnblogs.com/xd502djj/p/7234282.html,如需转载请自行联系原作者。


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章
最新文章
相关文章