html tool

2018年8月29日星期三

firewall-cmd 设置zone为default 但不生效的问题解决




  • I 规则介绍

查询当前的正在使用的zone,下面的例子是public的ens192为获得区
$firewall-cmd --get-active-zone
public
  interfaces: ens192

设置默认的zone
$ firewall-cmd --set-default-zone=home
success

查询当前设置默认的zone
$ firewall-cmd --get-default-zone
home

查询当前的全部firewall-cmd设置
[Ps: 这个太重要了,从这里看出默认的zone没有生效,因为 connections/interfaces当前在public下,真正起作用的是connections/interfaces的绑定位置]
$firewall-cmd --list-all
You're performing an operation over default zone ('home'),
but your connections/interfaces are in zone 'public' (see --get-active-zones)
You most likely need to use --zone=public option.

home
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: dhcpv6-client mdns samba-client ssh
  ports: 80/tcp
  protocols:
  masquerade: no
  forward-ports:
  sourceports:
  icmp-blocks:
  rich rules:

设置zone的connections/interfaces的绑定
firewall-cmd --zone=public --add-interface=ens192


对指定zone设置端口规则
firewall-cmd --zone=home --add-port=80/tc

查询指定zone的全部配置
$firewall-cmd --zone=dmz --list-all
dmz (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens192
  sources:
  services: ssh
  ports: 80/tcp
  protocols:
  masquerade: no
  forward-ports:
  sourceports:
  icmp-blocks:
  rich rules:



  • II 之前设置zone但不生效的问题

zone的acitve是和网卡绑定的,不是和default-zone绑定的,pope之前的错误是指设置了default-zone
firewall-cmd --set-default-zone=home
而没有添加connections/interfaces
如果要zone生效,其实把入口的网卡add到这个zone就可以了
$firewall-cmd --zone=public --add-interface=ens192


PS:对于zone来说connections/interfaces是独有的,每次只有一个zone可以拥有一个网卡,zone的概念是虚拟的规则,which one zone 在哪个网卡,这个zone才生效。


参考:
http://www.phpchina.com/portal.php?mod=view&aid=40252
https://www.jianshu.com/p/59acef4e267a

没有评论:

发表评论