Виртуальным машинам (KVM / libvirt) не удается получить динамический IP-адрес от запущенного libvirt dnsmasq, запущенного на хосте CentOS, при работающем брандмауэре. Когда я выключаю брандмауэр (CSF), виртуальная машина получает IP. Что сработало для тех, кто сталкивался с подобным?
Я пробовал настраиваемые правила iptables (INPUT OUTPUT и FORWARD) в csfpost.sh.
/sbin/iptables -A INPUT -j ACCEPT -s $SUBNET_PRIVATE -i $IF_TUN_0
/sbin/iptables -A OUTPUT -j ACCEPT -s $SUBNET_PRIVATE -o $IF_TUN_0
/sbin/iptables -A FORWARD -i $IF_TUN_0 -o $IF_ETH_0 -j ACCEPT
/sbin/iptables -A FORWARD -i $IF_ETH_0 -o $IF_TUN_0 -j ACCEPT
Я пробовал записи в csf.allow.
#allow dnsmasq to serve dynamic IPs to virtual machines on local subnet
tcp:in:d=53:s=10.x.y.0/24
udp:in:d=53:s=10.x.y.0/24
tcp:out:d=53:s=10.x.y.0/24
udp:out:d=53:s=10.x.y.0/24
Какие важные шаги я упустил?
Определив, как все открыть ...
/sbin/iptables -A INPUT -j ACCEPT -p all -s 0/0 -i $IF_TUN_0
/sbin/iptables -A OUTPUT -j ACCEPT -p all -s 0/0 -o $IF_TUN_0
Подсказка пришла из / var / log / messages. Порты 67 и 68 были заблокированы.
# allow broadcasted dhcp requests, IP is unknown hence all zero'd
/sbin/iptables -A INPUT -j ACCEPT -p udp -d 0/0 -i $IF_TUN_0 --dport 67 --sport 68
# allow dhcp renewal requests, the IP is known at this point
/sbin/iptables -A INPUT -j ACCEPT -p udp -d $IP_PRIVATE_HOST -i $IF_TUN_0 --dport 68 --sport 67
# allow dhcp acks
/sbin/iptables -A OUTPUT -j ACCEPT -p udp -s $IP_PRIVATE_HOST -o $IF_TUN_0 --dport 68 --sport 67
# allow dhcp renewal response
/sbin/iptables -A OUTPUT -j ACCEPT -p udp -s $IP_PRIVATE_HOST -o $IF_TUN_0 --dport 67 --sport 68