iptables 的认识 使用 实现“增删改查”
filter负责过滤功能,比如允许哪些IP地址访问,拒绝哪些IP地址访问,允许访问哪些端口,禁止访问哪些端口,filter表会根据我们定义的规则进行过滤
1.查看filter表的INPUT链中的规则 并且是详细的(v) 直接地址的(n) 显示列表行号的(–line-numbers):
iptables -t filter -n -vL INPUT --line-numbers
policy对应的动作为链的默认动作即可,或者换句话说,我们只要理解,policy为链的默认策略即可。默认动作指的是当搜索不到匹配条件时自动执行的动作!!
表中显示的内容中每一选项的意思是:
每一选项 | 对应的意义 |
---|---|
pkts | 对应规则匹配到的报文的个数。 |
bytes | 对应匹配到的报文包的大小总和。 |
target | 规则对应的target,往往表示规则对应的"动作",即规则匹配成功后需要采取的措施。 |
prot | 表示规则对应的协议,是否只针对某些协议应用此规则。 |
opt | 表示规则对应的选项。 |
in | 表示数据包由哪个接口(网卡)流入,我们可以设置通过哪块网卡流入的报文需要匹配当前规则。 |
out | 表示数据包由哪个接口(网卡)流出,我们可以设置通过哪块网卡流出的报文需要匹配当前规则。 |
source | 表示规则对应的源头地址,可以是一个IP,也可以是一个网段。 |
destination | 表示规则对应的目标地址。可以是一个IP,也可以是一个网段。 |
"匹配条件"与"动作"组成了规则
匹配条件:常常指包文中的“源地址” 、“目的地址”、“源端口”、“目的端口”、“协议”等等。
动作:最常用的动作有ACCEPT(接受)、DROP(丢弃)、REJECT(拒绝)
1.我在路由器管理界面中在 安全选项----过滤规则----IP地址过滤中添加了如下规则:
在板子的命令行里输入:可以找到添加该规则实则是在filter表中的FORWARD链中添加了!!
原因:路由器处于外围到内网的节点,IP地址过滤经由它转发到指定IP,所以是在FORWARD链路
iptables -t filter -nvL --line-numbers
2.同样地,我再次添加如下规则:
再次查看filter中的规则变化,同样是FORWARD链:
iptables -t filter -nvL FORWARD --line-numbers
3.在板子上使用命令行方式,添加类似如1 所示转发时丢弃某指定IP地址:
其中 -I 表示指定某个链路 ; -s 指定源IP地址 ; -d 指定目的IP地址
iptables -t filter -I FORWARD -s 192.168.10.182 -j DROP
iptables -t filter -I FORWARD -d 192.168.10.182 -j DROP
再次查看再次查看filter中的FORWARD 规则变化:
iptables -t filter -vnL FORWARD --line-numbers
规则添加存在先后顺序,假如第一条规则匹配到了,则会将这个报文执行相应动作,即使第二条符合该规则匹配条件,但由于该报文已被第一条规则处理掉,所以不执行第二条规则。
动作“DROP”和动作“REJECT”很相似,但REJECT有反馈,ping时会直接提示unreachable
4.使用命令行方式修改某条链路上的某条规则:
修改前再次观察该链有哪些规则:
iptables -t filter -vnL FORWARD --line
修改FORWARD链的第一条规则中的DROP 为 ACCEPT
iptables -t filter -R FORWARD 1 -d 192.168.10.2 -j ACCEPT
当指定某条具体规则时(必须是匹配条件+动作)若没有指定原地址,(因为没有指定原本的源地址)当前规则的源地址自动变为0.0.0.0/0