建议阅读:http://www.zsythink.net/archives/1199
iptables使用内核的netfilter实现对tcp/ip协议簇报文的控制。达到防火墙、端口数据转发、报文修改等功能。
链和表
网络数据包传输会经过iptables中的一个个链中,例如,OUTPUT链就是一个网络数据包从本机的程序发出的数据包要经过的链,在数据包到达一个链后,就会去匹配链关联的表,通过得到表的信息来控制过滤修改网络数据报文,例如,在OUTPUT链上对应就有一个nat表,这个表的作用是可以修改你发出的报文的目标地址(当然不单这个功能)。

例子
例如,我们要实现本机的程序在访问192.168.2.102:55的时候 变为访问为192.168.2.102:22,就可以通过以下命令实现。
sudo iptables -t nat -A OUTPUT -p tcp -d 192.168.2.102 --dport 55 -j DNAT --to-destination 192.168.2.102:22
其中,我们说-A OUTPUT -p tcp -d 192.168.2.102 --dport 55
就是一个报文的匹配条件,-j DNAT --to-destination 192.168.2.102:22
是匹配之后要做的动作。-A
是追加
例如,如果我们要禁止某个ip的数据报文,可以在INPUT链中修改filter表
sudo iptables -t filter -I INPUT -s 192.168.2.102 -j DROP
网友评论