一,官方文档:
1, 选项:
https://firewalld.org/documentation/direct/options.html
例子:
https://firewalld.org/documentation/direct/examples.html
手册:
https://firewalld.org/documentation/man-pages/firewalld.direct.html
2, 直接规则的特点:
1)直接只用iptables或firewalld语句规则写入管理区域
2)执行优先级最高。优先级:直接规则→富规则→区域规则
3)不会iptables语句的用户不建议直接使用直连接口
4)适用于服务或应用程序
二,direct规则的语法:
firewall-cmd
--permanent \
--direct \
--add-rule { ipv4 | ipv6 | eb } \<表(table)> <链(chain)> <优先级(priority)> args
--direct:直接规则
--permanent:将规则写入防火墙配置文件,永久执行【需要使用firewalll-cmd --reload加载配置文件才能生效。如果不使用此选项,所有新添加的规则都是临时使用~】
--add-rule: 添加规则
lpv4: 这个属性非常简单,表示ip的版本
5表:
五个表table:filter、nat、mangle、raw、security
filter:过滤规则表,根据预定义的规则过滤符合条件的数据包,默认表
nat:network address translation 地址转换规则表
mangle:修改数据标记位规则表
raw:关闭启用的连接跟踪机制,加快封包穿越防火墙速度
security:用于强制访问控制(MAC)网络规则,由Linux安全模块(如SELinux)实现
5链
链 是数据包传播的路径,每一个 链 中可以有 N 个 规则 (N >= 0)。当数据包到达一个 链 时,iptables 就会从链中第一个规则开始检测, 如果数据包满足规则所定义的条件,系统会执行具体的 行为,否则 iptables 继续检查下一个规则。 如果数据包不符合链中任一个规则,iptables 就会根据该链预先定义的默认策略来处理数据包。
三,direct规则的用法
1,列出所有的规则
[root@blog ~]# firewall-cmd --direct --get-all-rules
2,添加一条规则:
[root@blog ~]# firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -p tcp --dport 22 -s 172.25.254.210 -j REJECT
success
查看已添加的规则:
[root@blog ~]# firewall-cmd --direct --get-all-rules
ipv4 filter INPUT 1 -p tcp --dport 22 -s 172.25.254.210 -j REJECT
说明:direct规则就是iptables的规则,所以可以通过iptables命令查看:
[root@blog ~]# iptables -L -v -n
Chain INPUT (policy ACCEPT 5595K packets, 1759M bytes)pkts bytes target prot opt in out source destination0 0 REJECT tcp -- * * 172.25.254.210 0.0.0.0/0 tcp dpt:22 reject-with icmp-port-unreachable
3,删除一条规则:
[root@blog ~]# firewall-cmd --direct --remove-rule ipv4 filter INPUT 1 -p tcp --dport 22 -s 172.25.254.210 -j REJECT
success
查看删除后的规则:
[root@blog ~]# firewall-cmd --direct --get-all-rules
4,添加规则时写入文件:
[root@blog ~]# firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 1 -p tcp --dport 22 -s 172.25.254.210 -j REJECT
success
写入的文件在哪里?
[root@blog ~]# more /etc/firewalld/direct.xml
<?xml version="1.0" encoding="utf-8"?>
<direct><rule ipv="ipv4" table="filter" chain="INPUT" priority="1">-p tcp --dport 22 -s 172.25.254.210 -j REJECT</rule>
</direct>
查看是否生效:无效果
[root@blog ~]# firewall-cmd --direct --get-all-rules
重新加载:
[root@blog ~]# firewall-cmd --reload
success
查看是否生效:已生效:
[root@blog ~]# firewall-cmd --direct --get-all-rules
ipv4 filter INPUT 1 -p tcp --dport 22 -s 172.25.254.210 -j REJECT
四,direct规则和zone规则的优先级
直接规则→富规则→区域规则
直接规则的执行优先级最高