Centos
設置主機防火牆,以便虛擬機從 dnsmasq 獲取動態 IP
當防火牆執行時,虛擬機 (KVM/libvirt) 無法從執行在 CentOS 主機上的 libvirt 啟動的 dnsmasq 獲取動態 IP 地址。當我關閉防火牆 (CSF) 時,虛擬機會獲得一個 IP。對於那些遇到過類似情況的人,什麼對你有用?
我在 csfpost.sh 中嘗試了自定義 iptables 規則(輸入輸出和轉發)。
/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