Commands:
–append -A chain 追加一条规则到一个规则链
–check -C chain 检测一条已经存在的规则
–delete -D chain 从chain规则链中删除匹配的规则
–delete -D chain rulenum 从chain规则链中删除规则号为rulenum的规则,第一条规则为1
–insert -I chain [rulenum] 向chain规则链中插入一条规则,如果有rulenum则将该规则插入到对应的规则id处,默认插入到第一位(first=1)
–replace -R chain rulenum 替换chain规则链中规则id为rulenum的规则(1=first)
–list -L [chain [rulenum]] 列出chain规则链中的一个规则或所有的规则或者所有规则链中的所有规则
,可以加规则链的名称或规则id,也可以不加任何参数,不加则列出所有的规则
–list-rules -S [chain [rulenum]] 打印一条规则或所有规则 ,与-L类似
–flush -F [chain] 不加规则链名称表示杉树所有的规则 加股则链名称表示删除对应的链下的所有规则
–zero -Z [chain [rulenum]] 清空所有的规则链上的计数器,或者某个规则链的计数器,或者某个规则的计数器
–new -N chain 创建一个新的用户自定义规则链chain
–delete-chain -X [chain] 删除一个用户自定义的规则链,可以有参数,参数为自定义的规则链名称
–policy -P chain target 在规则链chain上改变到target的策略 改变默认规则
–rename-chain -E old-chain new-chain 重命名规则链名称(moving any references)
Options:
[!] –proto -p proto 协议 通过协议号或者名称 如 “tcp” 支持取反 如
!tcp,表示除tcp外的所有的协议 [!] –source -s address[/mask][…] 源地址 ,支持取反
[!] –destination -d address[/mask][…] 目标地址, 支持取反 [!]
–in-interface -i input name[+] 指定数据包进入的接口,支持取反,INPUT规则中只允许指定-i接口
–jump -j target 命中后的处理方法 有ACCEPT 和 DROP等
–goto -g chain 跳转到规则链chain不返回
–match -m match 扩展匹配 如 -m multiport 表示启用多端口扩展
–numeric -n 地址和端口的数字输出 [!] –out-interface -o output name[+] 指定数据包送出的接口,支持取反,OUTPUT规则链中只允许-o接口
–table -t table 指定表,默认为filter
–verbose -v 详细模式
–line-numbers 列出规则时打印行号
–exact -x 显示精确值 [!] –fragment -f 匹配第二个或更进一步的变量
–modprobe= 尝试使用command命令插入模块 [!] –version -V 打印版本
-j ACTION 说明:
常用的ACTION有:
DROP: 丢掉(丢包)
ACCEPT: 接受
REJECT:表示拒绝
RETURN :返回
iptables的四个表:
filter: 一般的过滤功能
nat :用于nat功能,端口映射,地址映射
mangle: 对特定数据包的修改
raw : 优先级最高,该表只使用在PREROUTING链和OUTPUT链上,使用了raw表在某个链上raw处理完后将跳过nat表 he ip_conntrack处理,可以应用在哪些不需要做nat转换的情况下,以提高性能。
iptables raw表说明:
raw表只使用在PREROUTING 和OUTPUT链上,优先级最高,可以对收到的包在连接跟踪前处理。
raw处理完之后将跳过nat表的处理和ip_conntrack处理,即不在做地址转换和数据包的链接跟踪处理。
可以使用在哪些不需要做nat的情况下,以提高性能,如http的80端口。
iptables的5个链:
PREROUTING: 数据包进入路由表之前
INPUT: 通过路由表后目的地为本机的数据包
FORWARD: 通过路由表后目的地不为本机
OUTPUT: 由本机转发 s
POSTROUTING:发送到网卡接口之前