[firewalld] 在 CentOS 中開啟指定 Port 或服務(CentOS8.2)

在CentOS中有多種防火牆(iptables, firewalld等),iptables是為黑名單規則(預設全部都允許,但在名單內的會被拒絕),firewalld為白名單規則(預設全部都拒絕,只有在名單內的會被允許)。為了要讓服務能正常運作,且讓外部可以通過網路服務來使用,這些是必定要學的。然而相較於iptables,firewalld較人性化,因此使用它來做防火牆設定。

(環境:CentOS8.2)
  1. 開啟 Terminal,確定自己所要對外的IP,其運作在哪個網卡上,此例為「ens33」
  2. [root@localhost ~]# ip address
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 00:0c:29:08:ef:40 brd ff:ff:ff:ff:ff:ff
        inet 192.168.35.134/24 brd 192.168.35.255 scope global dynamic noprefixroute ens33
           valid_lft 1107sec preferred_lft 1107sec
        inet6 fe80::5dee:a1e6:5618:5b6c/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever
    
  3. 確定自己網卡所在的防火牆區域(zone)
    [root@localhost ~]# firewall-cmd --get-zone-of-interface=ens33
    public
    
  4. 在網卡所在區域加上想要的服務或 Port
    [root@localhost ~]# firewall-cmd --permanent --zone=public --add-port=5001/tcp
    success
    [root@localhost ~]# firewall-cmd --permanent --zone=public --add-service=http
    success
    
  5. 使用「--permanent」是將設定寫入「/etc/firewalld/zones/public.xml」
    [root@localhost ~]# cat /etc/firewalld/zones/public.xml
    <?xml version="1.0" encoding="utf-8"?>
    <zone>
      <short>Public</short>
      <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
      <service name="ssh"/>
      <service name="dhcpv6-client"/>
      <service name="cockpit"/>
      <service name="http"/>
      <port port="5001" protocol="tcp"/>
    </zone>
    
  6. 使用「--reload」將設定重新載入配置,並查看所設定的規則是否已經有效
    [root@localhost ~]# firewall-cmd --reload
    success
    [root@localhost ~]# firewall-cmd --zone=public --list-ports
    5001/tcp
    [root@localhost ~]# firewall-cmd --zone=public --list-services 
    cockpit dhcpv6-client http ssh
    
  7. 這時在瀏覽器輸入其IP,就可以瀏覽掛在 80 Port 的網頁了!


參考資料:

留言

這個網誌中的熱門文章