Centos
為什麼重啟後啟用的firewalld和重啟後有不同的行為?
我在使用 Centos 8 Stream,一個滾動發布版本
4.18.0-301.1.el8.x86_64
,我發現奇怪且不一致的行為。根據 firewalld 的啟動方式,它具有不同的行為。
- 當 firewalld 在啟動時啟動時,它會添加 LIBVIRT_* 鏈。
- 當使用 systemctl 重新啟動 firewalld 時,所有這些鏈都會消失。
- 為什麼?
# nftables after the reboot $ nft list tables table ip filter table ip nat table ip mangle table ip6 filter table ip6 nat table ip6 mangle # nftables after the systemctl restart $ nft list tables table ip filter table ip nat table ip mangle table ip6 filter table ip6 nat table ip6 mangle table bridge filter table ip security table ip raw table ip6 security table ip6 raw table bridge nat table inet firewalld table ip firewalld table ip6 firewalld
$ sudo iptables -L -n Chain INPUT (policy ACCEPT) target prot opt source destination LIBVIRT_INP all -- 0.0.0.0/0 0.0.0.0/0 Chain FORWARD (policy ACCEPT) target prot opt source destination LIBVIRT_FWX all -- 0.0.0.0/0 0.0.0.0/0 LIBVIRT_FWI all -- 0.0.0.0/0 0.0.0.0/0 LIBVIRT_FWO all -- 0.0.0.0/0 0.0.0.0/0 Chain OUTPUT (policy ACCEPT) target prot opt source destination LIBVIRT_OUT all -- 0.0.0.0/0 0.0.0.0/0 Chain LIBVIRT_INP (1 references) target prot opt source destination ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:53 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:53 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:67 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:67 Chain LIBVIRT_OUT (1 references) target prot opt source destination ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:53 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:53 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:68 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:68 Chain LIBVIRT_FWO (1 references) target prot opt source destination ACCEPT all -- 192.168.122.0/24 0.0.0.0/0 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable Chain LIBVIRT_FWI (1 references) target prot opt source destination ACCEPT all -- 0.0.0.0/0 192.168.122.0/24 ctstate RELATED,ESTABLISHED REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable Chain LIBVIRT_FWX (1 references) target prot opt source destination ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 $ sudo systemctl restart firewalld $ sudo iptables -L -n Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
這非常令人不安,並且很難調試。特別是在我啟動 openvpn-as 服務之後,它添加了 iptables 鏈。
不正是
firewalld
添加了這些鏈。正如鍊的名稱所暗示的那樣,它將它們添加到您的配置libvirt
之上。firewalld
CentOS 8 Stream 的出廠預設配置包括一些執行虛擬機(或嵌套虛擬化,如果 CentOS 8 系統本身是 VM)的準備工作。如果您不需要在 CentOS 上執行虛擬機,您可能需要禁用它們。
我現在手頭沒有 CentOS 8 Stream 測試系統,但我認為應該這樣做:
virsh net-destroy default # unconfigure what libvirtd has done for now systemctl stop libvirtd.service # stop the service systemctl disable libvirtd.service # persistently disable it
如果您想出於某種目的繼續
libvirtd
執行,但想禁用其預設網路設置,則可以這樣做(但我不太確定這是否會清除 iptables 添加的內容):virsh net-destroy default # unconfigure what libvirtd has done for now virsh net-undefine default # persistently remove libvirtd network config
或者也許只是:(這應該是可以撤消的,無需重新安裝 libvirtd 或以其他方式恢復預設配置)
virsh net-destroy default # unconfigure what libvirtd has done for now virsh net-autostart default --disable # tell libvirt to not autostart default config
要撤消第 3 版,只需使用
virsh net-autostart default
不帶該選項的--disable
選項,然後重新啟動libvirtd
服務或重新啟動。