1.查看表中规则
# 查看filter表中所有规则
iptables -t filter -L
# 查询filter表中INPUT链规则
iptables -t filter -L INPUT
2.查看规则详情
# 加入-v参数,查看详情
iptables -t filter -L -v
规则字段含义:
- pkts:对应规则匹配到的报文的个数。
- bytes:对应匹配到的报文包的大小总和。
- target:规则对应的target,往往表示规则对应的”动作”,即规则匹配成功后需要采取的措施。
- prot:表示规则对应的协议,是否只针对某些协议应用此规则。
- opt:表示规则对应的选项。
- in:表示数据包由哪个接口(网卡)流入,我们可以设置通过哪块网卡流入的报文需要匹配当前规则。
- out:表示数据包由哪个接口(网卡)流出,我们可以设置通过哪块网卡流出的报文需要匹配当前规则。
- source:表示规则对应的源头地址,可以是一个IP,也可以是一个网段。
- destination:表示规则对应的目标地址。可以是一个IP,也可以是一个网段。
上图中的源地址与目标地址都为anywhere,iptables默认为我们进行了名称解析,但是在规则非常多的情况下如果进行名称解析,效率会比较低,我们可以使用 -n
选项,表示不对IP地址进行名称反解,直接显示IP地址
链括号中的参数含义:
Chain INPUT (policy ACCEPT 4883 packets, 342K bytes)
- policy表示当前链的默认策略,policy ACCEPT表示上图中INPUT的链的默认动作为ACCEPT,换句话说就是,默认接受通过INPUT关卡的所有请求,所以我们在配置INPUT链的具体规则时,应该将需要拒绝的请求配置到规则中,说白了就是”黑名单”机制,默认所有人都能通过,只有指定的人不能通过。
- packets表示当前链(上例为INPUT链)默认策略匹配到的包的数量,0 packets表示默认策略匹配到0。
- bytes表示当前链默认策略匹配到的所有包的大小总和。
3.显示规则行号
iptables --line-number -nvL INPUT
// 查看精细的字节数可以加-x参数
iptables -nvxL INPUT
4.添加规则
使用 -I
或者 -A
来添加规则。
# 14.215.177.39 为百度的一个ip
iptables -t filter -I INPUT -s 14.215.177.39 -j DROP
iptables -t filter -A INPUT -s 14.215.177.39 -j ACCEPT
# 在INPUT链的第一行添加规则
iptables -t filter -A INPUT 1 -s 14.215.177.39 -j ACCEPT
使用-I选项,指明将”规则”插入至哪个链中,-I表示insert,即插入的意思,所以-I INPUT表示将规则插入于INPUT链中,即添加规则之意。
使用-s选项,指明”匹配条件”中的”源地址”,即如果报文的源地址属于-s对应的地址,那么报文则满足匹配条件,-s为source之意,表示源地址。
使用-j选项,指明当”匹配条件”被满足时,所对应的动作,上例中指定的动作为DROP,在上例中,当报文的源地址为14.215.177.39时,报文则被DROP(丢弃)。
5.删除规则
# 删除多少行,删除第一行规则
iptables -t filter -D INPUT 1
6.修改规则
使用 -R
来更改指定行数规则
# 将INPUT链第一行规则改为接受14.215.177.39的报文,此处一定要加上-s,否者将默认0.0.0.0/0,接受全部。
iptables -t filter -R INPUT 1 -s 14.215.177.39 -j ACCEPT
7.设置链默认规则
使用 -P
参数设置链默认规则
# 设置filter表FORWARD链默认规则为DROP
iptables -t filter -P FORWARD DROP
8.保存/恢复配置信息
使用iptables-save
指令
iptables-save > /data/iptables-rules
iptables-restore < /data/iptables-rules