码迷,mamicode.com
首页 > 其他好文 > 详细

iptables 笔记

时间:2015-04-01 00:33:52      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:

工作使用到iptables的NAT地址转换功能;目前找到最好的帮助理解的图:

技术分享

要实现的功能是,PC1通过Server访问内网PC2的8180端口提供的服务:

技术分享

一、开启Server的ip_forward功能

sudo vim /etc/sysctl.conf

开启 net.ipv4.ip_forward=1 配置项

启用配置 sysctl -p

验证之 cat /proc/sys/net/ipv4/ip_forward (1为启用,0为关闭)

二、规则

iptables -t nat -A PREROUTING -d 1.2.3.4 -p tcp -m tcp --dport 81 -j DNAT --to-destination 192.168.0.2:8180

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 192.168.0.2 -p tcp -m tcp --dport 8180 -j SNAT --to-source 192.168.0.1

三、规则解释

PC1的IP地址为6.7.8.9,它使用本机的1080端口连接Server 1.2.3.4的81端口;发出的IP包源地址为6.7.8.9,源端口为1080,目的地址为1.2.3.4,目的端口为81;

Server 1.2.3.4接收到这个包后,根据NAT表的第一条规则,将该IP包的目的地址更该为192.168.0.2,目的端口更该为8180,同时在“连接跟踪表”(/proc/net/ip_conntrack)中创建一个条目,然后发送到路由模块,通过查路由表,确定该IP包应发送到eth1接口;在向eth1接口发送该IP包之前,根据NAT表的第二条规则,如果该IP包来自同一子网,则将该IP包的源地址更该为 192.168.0.1,同时更新该“连接跟踪表”中的相应条目,然后送到eth1接口发出到PC2;

此时“连接跟踪表”中有:

连接进入: src=6.7.8.9 dst=1.2.3.4 sport=1080 dport=81

连接返回: src=192.168.0.2 dst=6.7.8.9 sport=8180 dport=1080

是否使用: use=1

从PC2 192.168.0.2发回的IP包,源端口为8180,目的地址为6.7.8.9,目的端口为1080,主机1.2.3.4的TCP/IP协议栈接收到该IP包后,查找“连接跟踪表”中的连接返回栏目中是否有同样源和目的地址和端口的匹配项,找到后,根据条目中的记录将IP包的源地址由192.168.0.2更该为1.2.3.4, 源端口由8180更该为81,保持目的端口号1080不变;这样服务器的返回包就可以正确的返回发起连接的客户机,至此通信建立。



iptables 笔记

标签:

原文地址:http://my.oschina.net/zangzy/blog/394451

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