다음과 같은 브리지를 얻기 위해 랩탑의 네트워크를 루트로 구성했습니다.
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 및/또는 월드 와이드 웹의 주소로 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에 연결할 수 있었습니다 . 이해하시면 쉽습니다