롤링 릴리스 버전인 Centos 8 Stream을 사용하고 있는데 4.18.0-301.1.el8.x86_64
이상하고 일관되지 않은 동작이 나타납니다.
방화벽이 시작되는 방법에 따라 다르게 동작합니다.
부팅 시 방화벽이 시작되면 LIBVIRT_* 체인이 추가됩니다.
systemctl을 사용하여 방화벽을 다시 시작하면 이러한 체인이 모두 사라집니다.
왜?
# 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 체인이 추가되었습니다.
답변1
firewalld
이러한 체인을 추가하는 것은 사실이 아닙니다. 체인 이름에서 알 수 있듯이 체인은 구성 위에 추가됩니다 libvirt
.firewalld
CentOS 8 Stream의 공장 기본 구성에는 가상 머신(또는 CentOS 8 시스템 자체가 가상 머신인 경우 중첩된 가상화)을 실행하기 위한 일부 준비가 포함되어 있습니다. 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