QEMU虚拟机和主机无线网络通讯设置

xiaoxiao2021-02-28  78

步骤如下:

1. 创建 tap 设备:

sudo ip tuntap add dev tap0 mode tap

2. enable tap0接口:

sudo ip link set tap0 up 3. 添加路由:

sudo ip route add 192.168.0.10/32 dev tap0或者用旧的命令:

sudo route add -host 192.168.1.10 tap0

$ route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 wlp3s0 169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 wlp3s0 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 wlp3s0 192.168.0.1 0.0.0.0 255.255.255.255 UH 50 0 0 wlp3s0 192.168.0.10 0.0.0.0 255.255.255.255 UH 0 0 0 tap0 $ ip link show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: enp0s25: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000 link/ether 00:21:cc:5d:29:ee brd ff:ff:ff:ff:ff:ff 3: wlp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000 link/ether ec:55:f9:bf:7c:16 brd ff:ff:ff:ff:ff:ff 15: tap0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000 link/ether da:47:87:2c:25:4d brd ff:ff:ff:ff:ff:ff $ ip address show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp0s25: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000 link/ether 00:21:cc:5d:29:ee brd ff:ff:ff:ff:ff:ff 3: wlp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether ec:55:f9:bf:7c:16 brd ff:ff:ff:ff:ff:ff inet 192.168.0.101/24 brd 192.168.0.255 scope global wlp3s0 valid_lft forever preferred_lft forever inet6 fe80::ee55:f9ff:febf:7c16/64 scope link valid_lft forever preferred_lft forever 15: tap0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000 link/ether da:47:87:2c:25:4d brd ff:ff:ff:ff:ff:ff这样,任何目标地址为 192.168.1.10的包都会被 route到tap0.

4. 使用 ARP proxy:

sysctl net.ipv4.conf.tap0.proxy_arp=1 sysctl net.ipv4.conf.wlp3s0.proxy_arp=1或者:

echo 1 > /proc/sys/net/ipv4/conf/tap0/proxy_arp echo 1 > /proc/sys/net/ipv4/conf/wlp3s0/proxy_arp 5. Enable IP forwarding

sysctl net.ipv4.ip_forward=1 或者:

echo 1 > /proc/sys/net/ipv4/ip_forward

6.启动虚拟机:

./qemu-2.8.0/arm-softmmu/qemu-system-arm -M vexpress-a9 -m 1024 -smp 4 -kernel ./linux-4.9.13/arch/arm/boot/zImage -sd rootfs.img -append "root=/dev/mmcblk0 rw rootfs=ext4 rootdelay=3 physmap.enabled=0 console=ttyAMA0 console=tty0" -dtb ./linux-4.9.13/arch/arm/boot/dts/vexpress-v2p-ca9.dtb -netdev tap,id=mytest,ifname=tap0,scripts=no,downscript=no -device virtio-net-device,netdev=mytest -nographic 然后,设置虚拟机IP地址:

ip addr add 192.168.0.10 dev eth0添加路由:

ip route add default via 192.168.0.101 dev eth0设置和主机一样的nameserver:

cat >> /etc/resolv.conf nameserver 192.168.0.1 Ctrl-D

#ping www.baidu.com PING www.baidu.com (112.80.248.73): 56 data bytes 64 bytes from 112.80.248.73: seq=0 ttl=58 time=11.177 ms 64 bytes from 112.80.248.73: seq=1 ttl=58 time=10.293 ms ^C --- www.baidu.com ping statistics --- 2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max = 10.293/10.735/11.177 ms

https://forums.gentoo.org/viewtopic-t-987790-start-0.html

转载请注明原文地址: https://www.6miu.com/read-77496.html

最新回复(0)