红联Linux门户
Linux帮助

Linux Iptables使用整理

发布时间:2014-11-11 09:50:17来源:linux网站作者:linux人


filter: 顾名思义,用于过滤的时候
nat: 顾名思义,用于做NAT 的时候
NAT:Network Address Translator

INPUT: 位于filter 表,匹配目的IP 是本机的数据包
FORWARD: 位于filter 表,匹配穿过本机的数据包,
PREROUTING: 位于nat 表,用于修改目的地址(DNAT)
POSTROUTING:位于nat 表,用于修改源地址(SNAT)

-A <链名>
APPEND,追加一条规则(放到最后)


例如:
iptables -t filter -A INPUT -j DROP

iptables -D INPUT 3(按号码匹配)     //删除
iptables -D INPUT -s 192.168.0.1 -j DROP(按内容匹配)

iptables -R INPUT 3 -j ACCEPT  //替换

匹配条件
£流入、流出接口(-i、-o)
£来源、目的地址(-s、-d)
£协议类型(-p)
£来源、目的端口(--sport、--dport)

-p tcp
-p udp
-p icmp --icmp-type 类型
ping: type 8 pong: type 0


匹配应用举例
1、端口匹配
-p udp --dport 53
匹配网络中目的端口是53 的UDP 协议数据包
2、地址匹配
-s 10.1.0.0/24 -d 172.17.0.0/16
匹配来自10.1.0.0/24 去往172.17.0.0/16 的所有数据包
3、端口和地址联合匹配
-s 192.168.0.1 -d -p tcp --dport 80
匹配来自192.168.0.1,去往的80 端口的TCP 协议数据包
注意:
1、--sport、--dport 必须联合-p 使用,必须指明协议类型是什么
2、条件写的越多,匹配越细致,匹配范围越小


NAT
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to 192.168.0.1
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 81 -j DNAT --to 192.168.0.2:80
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to 192.168.0.1-192.168.0.10

SNAT
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 1.1.1.1
将内网192.168.0.0/24 的原地址修改为1.1.1.1,用于NAT
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 1.1.1.1-1.1.1.10
同上,只不过修改成一个地址池里的IP

MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
将源地址是192.168.0.0/24 的数据包进行地址伪装

state
-m state --state 状态
状态:NEW、RELATED、ESTABLISHED、INVALID
NEW:有别于tcp 的syn,包将要或已经开始建立一个新的连接,或者是这个包和一个还没有在两端都有数据发送的连接有关.注意NEW状态并不在试图建立新连接的TCP包里寻找SYN标记
ESTABLISHED:包是完全有效的,而且属于一个已建立的连接,这个连接的两端都已经有数据发送。
RELATED:衍生态,与conntrack 关联(FTP),说明包正在建立一个新的连接,这个连接是和一个已建立的连接相关的.比如:FTP data transfer
INVALID:意味着这个包没有已知的流或连接与之关联,也可能是它包含的数据或包头有问题,


例如:
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

mac:iptables -A FORWARD -m mac --mac-source xx:xx:xx:xx:xx:xx -j DROP
limit:iptables -A FORWARD -d 192.168.0.1 -m limit --limit 50/s -j ACCEPT

multiport
iptables -A INPUT -p tcp -m multiport --dports 21,22,25,80,110 -j ACCEPT
注意:必须与-p 参数一起使用

修改/etc/sysconfig/iptablses,不影响在线业务
#iptables-restore < /etc/sysconfig/iptables
#service iptables save