Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1296261
  • 博文数量: 436
  • 博客积分: 7854
  • 博客等级: 少将
  • 技术积分: 3225
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-18 16:30
文章分类

全部博文(436)

文章存档

2013年(2)

2012年(56)

2011年(70)

2010年(308)

分类:

2010-05-25 17:38:21

iptables是linux系统上一个重要的工具可以做很多ip包的处理。比如包过滤防火墙、端口映射、共享上网等。很多网站都有介绍iptables用法,端口映射也有介绍但是很多细节点都没有介绍到,我在这里介绍几个注意的细节点。

注意:linux系统默认情况下转发功能是关闭的

修改/proc/sys/net/ipv4/ip_forward 把内容改为1 允许转发。

1、做端口转发不一定非要是双网卡,其实单网卡也是可以做端口转发的。

2、如果做双网卡的端口转发,就“内部实际提供服务的机器”网络配置不同,使用的iptables语句也是不同的。对于“内部实际提供服务的机器”如果和做端口转换的机器的内网ip在同一个网段内,并且“内部实际提供服务的机器”的网关就是做端口转换的机器的内网ip,这种情况下只需要一条语句:

iptables -t nat -A PREROUTING -d "对外公网ip" -p tcp --dport "对外端口" -j DNAT --to "内部实际提供服务的ip":"实际提供服务的端口"

3、对于“内部实际提供服务的机器”如果和做端口转换的机器的内网ip不在同一个网段内,或者“内部实际提供服务的机器”的网关不是做端口转换的机器的内网ip,这种情况下就需要条语句:

iptables -t nat -A PREROUTING -d "对外公网ip" -p tcp --dport "对外端口" -j DNAT --to "内部实际提供服务的ip":"实际提供服务的端口"

iptables -t nat -A POSTROUTING -d "内部实际提供服务的ip"-p tcp --dport "实际提供服务的端口" -j SNAT --to "运行iptables机器的内网ip"

其实就是把公网用户对虚拟服务的访问,通过地址转换变为"运行iptables的内网地址"对实际提供服务的内网服务器的访问。为什么要多第二条语句就是因为回去的包没有通过做转换的机器,造成不能做自动的反地址转换。 

4、端口转发其实就是做DNAT转换,在做DNAT转换的那个机器上(也就是iptables运行的那个机器)有记录相关转换的对应关系,回去的包如何转换用户不用管系统会处理。

5、做端口转换的情况下,iptables 的3条链中nat的链才能对端口进行防火墙过滤,其他的链无法控制。

阅读(716) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~