Linux下IP tables的四张表:
Filter 负责过滤功能,防火墙,内核模块:iptables_filter
Raw 关闭nat表上启用的链接追踪机制:iptables_raw
Mangle 拆解报文,做出修改,并重新封装的功能:iptables_mangle
Nat network address translation 网络地址转换功能:iptables_nat
而每张表下面有不同链表:
Filter:
Chain INPUT (policy ACCEPT)
Chain FORWARD (policyACCEPT)
Chain OUTPUT (policyACCEPT)
Raw:
Chain PREROUTING (policyACCEPT)
Chain OUTPUT (policy ACCEPT)
Mangle:
Chain PREROUTING (policyACCEPT)
Chain INPUT (policy ACCEPT)
Chain FORWARD (policy ACCEPT)
Chain OUTPUT (policy ACCEPT)
Chain POSTROUTING (policyACCEPT)
Nat:
Chain PREROUTING (policyACCEPT)
Chain POSTROUTING (policyACCEPT)
Chain OUTPUT(policy ACCEPT)
查:
1.查看对应表的所有规则,”-t” 表示指定要操作的表,省略“–t 表名” 的时候,默认表示操作filter表,”-L” 表示列出规则,即查看规则
iptables -t 表名 –L
2.查看制定表的指定链中的规则
iptables -t 表名 -L链名
3.查看指定表的所有规则,并且显示更详细的信息,”-v” 表示verbose,表示详细的使用时会显示出”计数器”的信息,可以合并简写为”iptables –t 表名-vL”
iptables -t 表名 -v -L
4.表示查看表的所有规则,并且再显示规则的时候,不对规则中的IP或者端口进行名称反解,”-n” 选项表示不解析IP地址
iptables -t 表名 -n -L
5.表示查看表的所有规则,并且显示行号,” –line-number”可以简写为” –line”是两条横杠。
iptables –line-number –t 表名 L
6.表示查看表中的所有规则,并且显示更详细的信息(-v),不过,计数器中的信息显示为精确的计数值,而不是显示为经过可读优化的计数值,”-x” 选项表示显示计数器的精确值
iptables –t 表名 –v –x –L
7.在实际使用的过程中,短的选项都是可以合并的,如下所示:
iptables --line -t filter –nvxL
产看某张表中的某条链
iptables --line -t filter -nvxL INPUT
增:
1.先使用下面的这条指令来进行添加:
Iptables –t filter –I INPUT –s192.168.75.129 –j DROP
这条指令表示丢弃来自192.168.75.129的所有数据包。其中”-I”表示“插入” ,那么“INPUT”就表示INPUT链表, “-s”表示指定源地址,“-j”表示讲要执行的动作,“DROP”表示执行的动作为丢弃。
“-j”后面所对应的动作有:
DROP 丢弃数据包,这个没有返回不会有任何提示
ACCEPT允许通过
REJECT拒绝数据包通过,这个会有返回说明拒绝
2.链表中的执行顺序:
执行三条指令:”-A”表示在末尾追加,“-I”表示在插入的同时,是在前头插入
第一条指令:Iptables –t filter –I INPUT –s 192.168.75.129 –j DROP
第二条指令:Iptables –t filter –A INPUT –s 192.168.75.129 –j ACCEPT
第三条指令:Iptables –t filter –I INPUT –s 192.168.75.129 –j ACCEPT
文章图片
通过实验得出的上图结果表示:
在执行第三条指令之前,如果使用”-A”在末尾追加的即使是放行,也不会生效,因为它的上面有一条DROP丢弃的规则存在,iptables是从上向下依次执行的,而到了DROP的规则处,数据包已经全部丢弃了,所以不会匹配到第三条规则。那么使用“-I”在前面插入,就优先执行这一条,所以就又可以通行了。
3.在指定位置插入规则:
在查看规则的时候可以用“iptables --line -L”这样就可以看到规则前面的序号:
文章图片
那么如果在指定的位置插入规则呢?其实按这个序号来的,看如下指令:
iptables -I INPUT 2 -s 192.168.75.20 -j ACCEPT
文章图片
这样就插入进去了。
删:
使用“iptables –t表名 –F链表名”可以清空表名内的链表名下的所有规则
删除规则有两种方式:
第一:根据规则的序号去进行删除
第二:根据具体的匹配条件与动作去进行删除
1.根据规则的序号去进行删除:
iptables –D INPUT 3(省略-t默认表示操作filter表)
就可以把上图中的DROP的那条规则给删除掉:
文章图片
2.根据具体的匹配条件与动作去进行删除:
iptables –D INPUT –s 192.168.75.20 –j ACCEPT
再次进行查看:
文章图片
改:
如果是改可以使用”-R”的选项来进行更改,但是改的话,建议在改的时候只更改需要更改的选项,其他的选项还是原样敲出来。否则万一你只是改动作的话,而你的-s源地址匹配条件又没有指定,在这种情况下,系统会自动默认为0.0.0.0/0即全网段。那么一旦发生事故则不可估量。最好的办法是删除一条规则,在原来的位置重新添加。
iptables -R INPUT 3 -s 192.168.75.122 -jACCEPT
其中的3表示序号。
当然还可以更改链表里面的默认规则:
文章图片
iptables -t filter -P FORWARD DROP
文章图片
保存:
在默认情况下,我们对防火墙所做的更改,都是临时的,一旦在防火墙重启或者重启机器后,配置都会丢失,所以在配置完成以后,我们还需要对我们所做的配置进行保存。
在centos6和centos7中的保存的方式会有不同:
Centos6中:
service iptables save
而保存的路径为:/etc/sysconfig/iptables
Centos7中:
因为在centos7中已经弃用了iptables的功能,转而使用firewall。不过可以通过yum源来安装iptables和iptables-services(而iptables一般系统默认已经安装过了,所以只用安装iptabels-services就可以了,而规则存放的路径同样在:/etc/sysconfig/iptables的文件中。)
下面是安装iptables-services的步骤:
#配置好yum源以后安装iptables-service
# yuminstall -y iptables-services
#停止firewalld
#systemctl stop firewalld
#禁止firewalld自动启动
#systemctl disable firewalld
#启动iptables
#systemctl start iptables
#将iptables设置为开机自动启动,以后即可通过iptables-service控制iptables服务
#systemctl enable iptables
这种配置只用在centos7中配置一次即可.
【Firewall|Iptables的增删改查】参考文献:http://www.zsythink.net/archives/1517
推荐阅读
- Linux|109 个实用 shell 脚本
- linux笔记|linux 常用命令汇总(面向面试)
- Linux|Linux--网络基础
- linux|apt update和apt upgrade命令 - 有什么区别()
- linux|2022年云原生趋势
- Go|Docker后端部署详解(Go+Nginx)
- 开源生态|GPL、MIT、Apache...开发者如何选择开源协议(一文讲清根本区别)
- GitHub|7 款可替代 top 命令的工具