1: tables表是链的容器, 链是规则的容器, netfilter是表的容器
| | |||
Managle | Nat | Filter | | |
INPUT | V | | V | |
OUTPUT | V | V | V | |
FORWARD | V | | V | |
PREROUTING | V | V | | |
POSTROUTING | V | V | | |
2:
以本地为目的的
(1)
(2). INPUT, 是经过路由发送本地程序的被包含在两个表中
以本地为源的
(1)
(2)
(1)
(2)
(3)
1.建立新的规则链(-N)
2.删除一个空的规则链(-X)
3.改变一个内置规则链的策略(-P)
4.列出一条规则链中的规则(-L)
5.擦写一条规则链中的规则(-F)
规则维护
1.在一条规则链中加入一条新的规则(-A)
2.删除一条规则链中某个位置的规则(-D)
应用
(1)虚拟主机:
模块
(1) limit
10. limit匹配扩展
limit扩展是一个非常有用的匹配扩展。使用-m nat来指定,其后可以有两个选项:
--limit avg:指定单位时间内允许通过的数据包的个数。单位时间可以是/second、/minute、/hour、/day或使用第一个字母,比如5/second和5/s是一样的,都是表示每秒可以通过5个数据包,缺省值是3/hour。
--limit-burstnumber:指定触发事件的阀值,缺省值是5。
看起来好像有点复杂,就让我们来看一个例子:
假设又如下的规则:
iptables -A INPUT -p icmp -m limit--limit 6/m --limit-burst 5 -j ACCEPT
iptables -P INPUT DROP
然后从另一部主机上ping这部主机,就会发生如下的现象:
首先我们可以看到前四个包的回应都很正常,然后从第五个包开始,我们每10秒可以收到一个正常的回应。这是因为我们设定了单位时间(在这里是每分钟)内允许通过的数据包的个数是每分钟6个,也即每10秒钟一个;其次我们又设定了事件触发阀值为5,所以我们的前四个包都是正常的,只是从第五个包开始,限制规则开始生效,故只能每10秒收到一个正常回应。
假设我们停止ping,30秒后又开始ping,这时的现象是:
前两个包是正常的,从第三个包开始丢包,这是因为在这里我的允许一个包通过的周期是10秒,如果在一个周期内系统没有收到符合条件的包,系统的触发值就会恢复1,所以假如我们30秒内没有符合条件的包通过,系统的触发值就会恢复到3,假如5个周期内都没有符合条件的包通过,系统都触发值就会完全恢复。不知道你明白了没有,欢迎你来信讨论。
(2) mac :-m mac --mac-source mac地址
(3)多port -m multiport
(4)多ip -m iprange --src-rangeip1-ip2