1、启动firewalld服务并设置开机自动启动,下面的命令必须在防火墙开启的状态下才可用 ,由于firewalld默认不是放行所有端口,所以启动firewalld会造成该机器的某些端口无法访问。 systemctl enable firewalld systemctl start firewalld
2、更改防火墙默认区域为trusted,默认放行所有连接请求 firewall-cmd --set-default-zone=trusted
3.新建一个zone,将想要访问本机80端口的ip,如:192.168.1.123 ,添加的这个zone中,同时在这个zone中放行80端口。 firewall-cmd --permanent --new-zone=newzone
firewall-cmd --permanent --zone=newzone --add-source=192.168.1.123
firewall-cmd --permanent --zone=newzone --add-port=80/tcp
4.除192.168.1.123这个ip以外的地址访问本机时会使用当前默认的trusted这个zone里的规则,即禁止访问本机的80端口。 firewall-cmd --permanent --zone=trusted --add-rich-rule=“rule family=“ipv4” port protocol=“tcp” port=“80” drop”
systemctl restart firewalld
查看配置是否生效:
firewall-cmd --list-all-zone
firewall-cmd --list-all
对于一个请求具体优先使用哪个zone,优先级如下:
我们知道每个zone就是一套规则集,但是有那么多zone,对于一个具体的请求来说应该使用哪个zone(哪套规则)来处理呢?这个问题至关重要,如果这点不弄明白其他的都是空中楼阁,即使规则设置的再好,不知道怎样用、在哪里用也不行。
对于一个接受到的请求具体使用哪个zone,firewalld是通过三种方法来判断的:
1、source,也就是源地址 优先级最高
2、interface,接收请求的网卡 优先级第二
3、firewalld.conf中配置的默认zone 优先级最低
这三个的优先级按顺序依次降低,也就是说如果按照source可以找到就不会再按interface去查找,如果前两个都找不到才会使用第三个,也就是在firewalld.conf中配置的默认zone。