表
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 www.linuxidc.com -p tcp –dport 80
匹配来自192.168.0.1,去往www.linuxidc.com 的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