我将我的笔记本电脑上的网络配置为 root,以获得如下所示的网桥:
ip tuntap add dev tap0 mode tap group $USER
ip link set dev tap0 up promisc on
ip addr add 0.0.0.0 dev tap0
ip link add br0 type bridge
ip link set br0 up
ip link set tap0 master br0
echo "0" | tee --append /sys/class/net/br0/bridge/stp_state
ip addr add 192.168.2.1/24 dev br0
sysctl net.ipv4.conf.tap0.proxy_arp=1
sysctl net.ipv4.conf.enp2s0.proxy_arp=1
sysctl net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o enp2s0 -j MASQUERADE
iptables -A FORWARD -i br0 -o enp2s0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i enp2s0 -o br0 -j ACCEPT
我像这样启动了我的 QEMU ARM cpu:
qemu-system-arm -cpu arm1176 -m 256 \
-M versatilepb -no-reboot -serial stdio \
-append "root=/dev/sda2 panic=1 rootfstype=ext4 rw" \
-kernel kernel-qemu-4.4.12-jessie \
-hda 2016-05-27-raspbian-jessie-lite.img \
-net nic -net tap,ifname=tap0,script=no,downscript=no
我将192.168.2.2
静态 IP 地址放入 Raspberry 仿真中。该仿真能够 ping enp2s0、br0 和/或万维网的地址。但我无法从我的笔记本电脑上 ping 通它。
我错过了什么 ?
答案1
好的我终于找到了问题:
iptables -A FORWARD -i tap0 -o br0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i br0 -o tap0 -m state --state RELATED,ESTABLISHED -j ACCEPT
根本原因是enp2s0
和之间的路由已开通,br0
但br0
和之间的路由尚未开通tap0
。在执行此 Booth 命令之后,我能够连接ssh
到我的 QEMU。如果你明白的话就很容易