次のブリッジを取得するために、ラップトップのネットワークをルートとして設定しました。
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アドレスを入れました。エミュレーションは、enp2s0、br0、および/またはWorld Wide Webのアドレスにpingを送信できます。しかし、ラップトップでは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に接続できました。理解すれば簡単です