iptables命令基本用法(2)
iptables [-t table] {-A|-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
-
-t table:
filter, nat, mangle, raw
例如:
[root@localhost ~]# iptables -t nat -L –n
-
链管理:
-F:flush,清空规则链;省略链,表示清空指定表上的所有的链;
例如:
[root@localhost ~]# iptables -F FORWARD
-N:new, 创建新的自定义规则链;
例如:
[root@localhost ~]# iptables -t filter -N TEST
例如:
-X:drop, 删除用户自定义的空的规则链;
[root@localhost ~]# iptables -t filter -X TEST
-Z:zero,清零,置零规则计数器;
例如:
[root@localhost ~]# iptables -t filter -Z
-P:Policy,为指定链设置默认策略;对filter表中的链而言,默认策略通常有ACCEPT, DROP, REJECT;
例如:
[root@CactiEZ ~]# iptables -t filter -P INPUT DROP
-E: rEname,重命令自定义链;引用计数不为0的自定义链,无法改名,也无法删除;
例如:
[root@CactiEZ ~]# iptables -t filter -N TEST
[root@CactiEZ ~]# iptables -t filter -E TEST test1
[root@CactiEZ ~]# iptales -L -nv
-
规则管理:
-A:append,将新规则追加于指定链的尾部;
例如:
[root@CactiEZ ~]# iptables -A INPUT -p tcp -m state –state ESTABLISHED -j ACCEPT
-I:insert,将新规则插入至指定链的指定位置;
例如:
[root@CactiEZ ~]#-I INPUT 3 -d 11.100.45.65 -p tcp -m state –state RELATED -j ACCEPT
-D:delete,删除指定链上的指定规则;
例如:
[root@CactiEZ ~]# iptables -D OUTPUT 2
有两种指定方式:
(1) 指定匹配条件;
(2) 指定规则编号;
-R:replace,替换指定链上的指定规则;
例如:
[root@CactiEZ ~]# iptables -R OUTPUT 1 -m state –state RELATED,ESTABLISHED -j ACCEPT
-
查看:
-L:list,列出指定链上的所有规则;
-n: numberic,以数字格式显示地址和端口号;
-v: verbose,显示详细信息;
-vv, -vvv
–line-numbers:显示规则编号;
-x: exactly, 显示计数器计数结果的精确值;
例如:
[root@CactiEZ ~]# iptables -L -nv –line-numbers
-
匹配条件:
-
基本匹配:
-
[!] -s, –src, –source IP|Netaddr:检查报文中源IP地址是否符合此处指定的地址范围;
例如:
[!] -d, –dst, –destination IP|Netaddr:检查报文中源IP地址是否符合此处指定的地址范围;
例如:
[root@CactiEZ ~]#iptables -I INPUT 3 -d 11.100.45.65 -p tcp -m state –state RELATED -j ACCEPT
-p, –protocol {tcp|udp|icmp}:检查报文中的协议,即ip首部中的protocols所标识的协议;
例如:
iptables -I INPUT 2 -p tcp -d 11.100.45.65 -m multiport –dports 80,22,21 -m state –state NEW,ESTABLISHED -j ACCEPT
-i, –in-interface IFACE:数据报文的流入接口;仅能用于PREROUTING, INPUT及FORWARD链上;
例如:
[root@CactiEZ ~]# iptables -R INPUT 1 -m state –state RELATED,ESTABLISHED -i eth0 -j ACCEPT
-o, –out-interface IFACE:数据报文的流出接口;仅能用于FORWARD, OUTPUT及POSTROUTING链上;
[root@CactiEZ ~]# iptables -R OUTPUT 1 -m state –state RELATED,ESTABLISHED -o eth0 -j ACCEPT
-
扩展匹配:-m macth_name –spec_options
例如:-m tcp –dport 22
[root@CactiEZ ~]# iptables -A FORWARD -s 172.16.31.125/32 -p udp -m udp –dport 123 -j ACCEPT
-
隐式扩展:对-p protocol指明的协议进行的扩展,可省略-m选项;
-p tcp
–dport PORT[-PORT]:目标端口,可以是单个端口或连续多个端口;
例如:
[root@CactiEZ ~]#iptables -I INPUT 2 -p tcp -d 11.100.45.65 -m multiport –dports 80,22,21 -m state –state NEW,ESTABLISHED -j ACCEPT
–sport PORT[-PORT]
例如:
-[root@CactiEZ ~]#iptables -A FORWARD -d 172.16.31.125/32 -p tcp -m tcp –sports 873 -j ACCEPT
–tcp-flags LIST1 LIST2:检查LIST1所指明的所有标志位,且这其中,LIST2所表示出的所有标记位必须为1,而余下的必须为0;没有LIST1中指明的,不作检查;
SYN, ACK, FIN, RST, PSH, URG
–tcp-flags SYN,ACK,FIN,RST SYN === –syn:
–syn
例如:
-[root@CactiEZ ~]#iptables -A OUTPUT -d 172.16.31.125/32 -p tcp -m multiport –dports 53,80 -m tcp –tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT
-p udp
–dport PORT[-PORT]:目标端口,可以是单个端口或连续多个端口;
–sport PORT[-PORT]:源端口,可以是单个端口或连续多个端口;
例如:
[root@localhost ~]#iptables -A OUTPUT -d 172.16.31.125/32 -p udp -m multiport –dports 53 -m state –state NEW -j ACCEPT
-p icmp
–icmp-typ可用数字表示其类型:
0:echo-reply
8: echo-request
例如:
[root@localhost ~]#iptables -A INPUT -d 11.100.45.65/32 -p icmp -m icmp –icmp-type 8 -j ACCEPT
-
显式扩展: 必须使用-m选项指定使用的扩展;
-
目标:
-j TARGET:jump至指定的TARGET
ACCEPT: 接受
DROP: 丢弃
REJECT: 拒绝
RETURN: 返回调用链
REDIRECT:端口重定向
LOG: 记录日志
MARK:做防火墙标记
DNAT:目标地址转换
SNAT:源地址转换
MASQUERADE:地址伪装
…
自定义链:由自定义链上的规则进行匹配检查
例如:
[root@localhost ~]#iptables -A OUTPUT -s 11.100.45.65/32 -p udp -m multiport –dports 161 -j ACCEPT