如果 Docker 和 QEMU 同時執行時,QEMU 內部透過 tap interface bridge 到 host network 的網路會出不去
這個問題的原因是 Docker 起來之後,會將 iptables 的 packet forward 預設變成 DROP
這時可以在 Docker 起來的時候將 bridge interface 加到 iptables 規則內即可,首先編輯 systemd docker service
EDITOR=vim sudo -E systemctl edit docker
加上這一段
[Service] ExecStartPre=/sbin/iptables -A FORWARD -p all -i br0 -j ACCEPT ExecStopPost=/sbin/iptables -D FORWARD -p all -i br0 -j ACCEPT
再重啟你的 Docker 就好了
sudo systemctl stop docker sudo systemctl start docker
要不然就簡單一點,將 FORWARD rule 從預設 DROP 變成 ACCEPT
[Service] ExecStartPre=/sbin/iptables -P FORWARD ACCEPT
ref
[SOLVED] Docker breaks existing bridge I use for KVM/QEMU
發佈留言