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

来源:互联网 发布:手机模拟打碟机软件 编辑:程序博客网 时间:2024/05/01 03:34

步骤如下:

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 -nKernel IP routing tableDestination     Gateway         Genmask         Flags Metric Ref    Use Iface0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 wlp3s0169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 wlp3s0192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 wlp3s0192.168.0.1     0.0.0.0         255.255.255.255 UH    50     0        0 wlp3s0192.168.0.10    0.0.0.0         255.255.255.255 UH    0      0        0 tap0

$ ip link  show1: 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:002: 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:ff3: 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:ff15: 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 show1: 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 forever2: 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:ff3: 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 forever15: 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=1sysctl net.ipv4.conf.wlp3s0.proxy_arp=1
或者:

echo 1 > /proc/sys/net/ipv4/conf/tap0/proxy_arpecho 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.confnameserver 192.168.0.1Ctrl-D

#ping www.baidu.comPING www.baidu.com (112.80.248.73): 56 data bytes64 bytes from 112.80.248.73: seq=0 ttl=58 time=11.177 ms64 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 lossround-trip min/avg/max = 10.293/10.735/11.177 ms

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

0 0