iptables 规则
- 规则 rule: 根据规则的匹配条件尝试匹配报文,对匹配成功的报文根据规则定义的处理动作作出处理, 规则在链接上的次序即为其检查时的生效次序
- 匹配条件:默认为
与条件,即同时满足基本匹配:IP,端口,TCP 的 Flags(SYN,ACK 等)扩展匹配:通过复杂高级功能匹配,需要指定特定的模块 - 规则要添加在链上,才生效;添加在自定义上不会自动生效
- 链 chain 有内置链和自定义链:
内置链:每个内置链对应于一个钩子函数自定义链:用于对内置链进行扩展或补充,可实现更灵活的规则组织管理机制;只有 Hook 钩子调用自定义链时,才生效
iptables 规则添加时需要考量的点
: 要实现哪种功能:判断添加在哪张表上 : 报文流经的路径:判断添加在哪个链上 : 报文的流向:判断源和目的 : 匹配规则:根据业务需要
iptables 用法说明
- 用法
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]
- Filter 表中的 INPUT 用法例子如下:
- iptables 命令使用
iptables [-t table] SUBCOMMAND chain [-m matchname [per-match-options]] -j targetname [per-target-options]
- 使用
-t table指定表
表包括 : raw : mangle : nat : filer : security
- 包括的子命令
- 管理类子命令 -N:new, 自定义一条新的规则链 -E:重命名自定义链;引用计数不为 0 的自定义链不能够被重命名,也不能被删除 -X:delete,删除自定义的空的规则链 -P:Policy,设置默认策略;对 filter 表中的链而言,其默认策略有:
ACCEPT:接受DROP:丢弃 - 查看类子命令 -L:list, 列出指定鏈上的所有规则,本选项须置后 -n:numberic,以数字格式显示地址和端口号 -v:verbose,详细信息 -vv 更详细 -x:exactly,显示计数器结果的精确值,而非单位转换后的易读值 --line-numbers:显示规则的序号 -S selected,以 iptables-save 命令格式显示链上规则 常用组合
iptables -vnLiptables -vvnL --line-numbers - 规则管理类子命令 -A:append,追加 -I:insert, 插入,要指明插入至的规则编号,默认为第一条 -D:delete,删除
(1) 可以指明规则序号(2) 可以指明规则本身-R:replace,替换指定链上的指定规则编号 -F:flush,清空指定的规则链 -Z:zero,置零;iptables 的每条规则都有两个计数器(1) 匹配到的报文的个数(2) 匹配到的所有报文的大小之和
- 预置的链 chain PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
- 匹配条件
- 基本的匹配条件:通用的匹配参数
PARAMETERS - 扩展的匹配条件:需要加载额外的模块
MATCH EXTENTIONS
- 处理动作
-j targetname [pre-target-options]简单:ACCEPT,DROP扩展:REJECT:--reject-with:icmp-port-unreachable默认动作RETURN:返回调用链REDIRECT:端口重定向LOG:记录日志,dmesgMARK:做防火墙标记DNAT:目标地址转换SNAT:源地址转换MASQUERADE:地址伪装 使用自定义链来处理
iptables 基本匹配条件
- 基本匹配条件:无需加载模块,由 iptables/netfilter 自行提供
[!] -s, --source address[/mask][,...]:匹配源IP地址或范围
[!] -d, --destination address[/mask][,...]:目标IP地址或范围
[!] -p, --protocol protocol:指定协议,可使用数字如0(all)
protocol:( tcp, udp, icmp, icmpv6, udplite,esp, ah, sctp, mh or "all")参看:/etc/protocols
[!] -i, --in-interface name:报文流入的接口;只能应用于数据报文流入环节,只应用于INPUT、FORWARD、PREROUTING链
[!] -o, --out-interface name:报文流出的接口;只能应用于数据报文流出的环节,只应用于 FORWARD、OUTPUT、POSTROUTING链