(一):iptables的命令手册
名称
iptables/ip6tables ---- Ipv4/Ipv6包过滤和NAT的管理工具
简介
iptables [-t table] {-A|-C|-D} chain rule-specification
ip6tables [-t table] {-A|-C|-D} chain rule-specification
iptables [-t table] -I chain [rulenum] rule-specification
iptables [-t table] -R chain rulenum rule-specification
iptables [-t table] -D chain rulenum
iptables [-t table] -S [chain [rulenum]]
iptables [-t table] {-F|-L|-Z} [chain [rulenum]] [options...]
iptables [-t table] -N chain
iptables [-t table] -X [chain]
iptables [-t table] -P chain target
iptables [-t table] -E old-chain-name new-chain-name
rule-specification = [matches...] [target]
match = -m matchname [per-match-options]
target = -j targetname [per-target-options]
描述:
iptables和ip6tables被用来设置,维持和监视内核中IPV4和IPV6的包过滤规则表。各种不同的表被定义。每一个表都包含了一些内置的链,并且也可能包含一些用户定义的链。每一个链都包含一系列与包匹配的规则。每一条规则都指定了对它所匹配的包应该做什么。这个被称为’target’, 在一个相同的表中也可能是到用户定义的链的跳转。
targets(目标)
一个防火墙规则指定了一个包和一个target的标准。如果包不匹配,链中的下一条规则就会被检查;如果匹配成功,下一条规则就会被target的值所指定,他可以是用户定义链的名称,在iptables-extensions描述的一个target,或者是ACCEPT,DROP或者是RETURN之一。
ACCEPT意思是让包通过。DROP意味着拒接,但是悄悄丢弃。RETURN意思是停止这条链的穿越,返回到调用链的下一条规则。如果到达了一个内建链的尾部或者是位于内建链一条带有RETURN target的规则被匹配了,被链策略指定的target决定了包的命运。
TABLES
当前有五个独立的table(哪一个table在什么时候出现依赖于内核配置选项和存在的模块)。
-t, –table table
该选项指定了包与命令应该操作的表的匹配。如果内核配置了自动模块加载,如果他不在的话,讲会尝试去加载那个table可能的模块。
下面是这些table:
filter:
这个是默认的table(如果没有输入-t选项的话).他包含内置的链INPUT(数据包流入口),FORWARD(转发关卡)和OUTPUT(数据包输出口).
nat:
当创建一个新链接的包被遇到的时候,这个table会被询问。他由三个内置链组成:PREROUTING(路由前),OUTPUT(数据包输出口)和POSTROUTING(路由后)。自从内核3.7开始之后IPv6 NAT开始被支持。
mangle:
这个table被用于专业的数据包变更。直到内核2.4.17,他有两个内置链:PREROUTING和OUTPUT。自从内核2.4.18,另外三个也被支持了。
raw:
这个table主要用于配置免除与notrack target的组合跟踪的连接。它以高优先级注册在netfilter的钩子程序上,所以它是在ip_conntrack或者是其他任何IP table之前被调用。他提供了下列内置的链:PREROUTING和OUTPUT。
security:
这个table被用于强制访问控制网络规则,例如那些被SECMARK和CONNSECMARK target使能的。强制访问控制是有Linux安全模块像SELinux实现的。这个安全table在过滤table之后被调用,允许在过滤table中的DAC(自主访问控制)规则在MAC规则之前起作用。这个table提供了下面的内建链:INPUT,OUTPUT和FORWARD。
注意:Netfilter的五个链:
链 | 描述 |
---|---|
PREROUTING | 路由前 |
INPUT | 数据包流入口 |
FORWARD | 转发关卡 |
OUTPUT | 数据包输出口 |
POSTROUTING | 路由后 |
对于其他的命令参数,可以参照man iptables来查看,这里不再坠余。
(二):iptables的工作原理
iptables是在内核空间中进行规则的定义,然后在内核空间中由netfilter来读取并执行规则。netfilter才是真正进行网络过滤的防火墙。
看了这个大牛的文章,我觉着我写的任何文章都不行了,所以索性就给大家附上吧: