libvirt 用の仮想ネットワークを手で作る
libvirt にネットワークを作らせると、 0.0.0.0:53 で勝手に dnsmasq
を立ち上げようとして、 すでにいる unbound
等の DNS キャッシュサーバーとぶつかってエラーになるとかうざったいなぁと思っている人用、
手動で仮想ネットワークを作る方法。
外部のネットワークへはホストをルーターにして NAT した上でアクセスする。
INTERFACE="virbr0" IPADDR="192.168.122.1" NETMASK="255.255.255.0" # create bridge /sbin/brctl addbr "${INTERFACE}" # set IP address /sbin/ip addr add "${IPADDR}/${NETMASK}" dev "${INTERFACE}" /sbin/ip link set "${INTERFACE}" up # add iptables rules to access DNS resolver /sbin/iptables -N "RULE-FOR-${INTERFACE}" /sbin/iptables -A "RULE-FOR-${INTERFACE}" -m state --state RELATED,ESTABLISHED -j ACCEPT /sbin/iptables -A "RULE-FOR-${INTERFACE}" -m state --state NEW -p tcp --dport 53 -j ACCEPT /sbin/iptables -A "RULE-FOR-${INTERFACE}" -m state --state NEW -p udp --dport 53 -j ACCEPT /sbin/iptables -A INPUT -i "${INTERFACE}" -j "RULE-FOR-${INTERFACE}" # NAT /sbin/iptables -t nat -A POSTROUTING -s "${IPADDR}/${NETMASK}" -j MASQUERADE # allow forward /sbin/sysctl -w net.ipv4.ip_forward=1