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

步骤如下:

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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值