设置主机防火墙,以便虚拟机从 dnsmasq 获取动态 IP

设置主机防火墙,以便虚拟机从 dnsmasq 获取动态 IP

当防火墙运行时,虚拟机 (KVM/libvirt) 无法从 CentOS 主机上运行的 libvirt 启动的 dnsmasq 获取动态 IP 地址。当我关闭防火墙 (CSF) 时,虚拟机会获取 IP。对于那些遇到过类似情况的人,您有什么办法吗?

我已经在 csfpost.sh 中尝试了自定义 iptables 规则(INPUT OUTPUT 和 FORWARD)。

/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

我忽略了哪些重要步骤?

答案1

在确定如何打开一切之后……

/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

相关内容