1、在Ubuntu中创建 tap0 虚拟网卡

hudahua@wiat:~/workspace/aarch64_rootfs$ sudo ip tuntap add dev tap0 mode tap
hudahua@wiat:~/workspace/aarch64_rootfs$ sudo ip link set dev tap0 up
hudahua@wiat:~/workspace/aarch64_rootfs$ ifconfig
tap0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether ba:5a:9f:51:64:d0  txqueuelen 1000  (以太网)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

配置IP地址
hudahua@wiat:~/workspace/aarch64_rootfs$ sudo ip address add dev tap0 192.168.1.128/24
另一窗口启动qemu虚机,注意带上-net命令

-net nic -net tap,ifname=tap0,script=no,downscript=no

qemu-system-aarch64 \
        -machine virt,virtualization=true,gic-version=3 \
        -nographic \
        -m size=1024M \
        -cpu cortex-a57 \
        -smp 4 \
        -kernel Image \
        -hda rootfs.ext4 \
        -net nic -net tap,ifname=tap0,script=no,downscript=no \
        --append "console=ttyAMA0 root=/dev/vda rw"

启动成功后,进入qemu

查询网卡

[root@myQEMU ]# ip addr
	1: lo: <LOOPBACK> mtu 65536 qdisc noop qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
	2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000
    link/ether 52:54:00:12:34:56 brd ff:ff:ff:ff:ff:ff
[root@myQEMU ]#

配置网卡IP地址

[root@myQEMU ]# ip addr add 192.168.1.129/24 dev eth0

启用eth0网卡

[root@myQEMU ]# ip link set eth0 up

ping Ubuntu主机。

[root@myQEMU ]# ping 192.168.1.128 -c 4
PING 192.168.1.128 (192.168.1.128): 56 data bytes
64 bytes from 192.168.1.128: seq=0 ttl=64 time=5.997 ms
64 bytes from 192.168.1.128: seq=1 ttl=64 time=1.419 ms
64 bytes from 192.168.1.128: seq=2 ttl=64 time=5.852 ms
64 bytes from 192.168.1.128: seq=3 ttl=64 time=3.075 ms

ping成功。将配置网络命令,添加至启动脚本。

[root@myQEMU ]# vi etc/profile
	ip addr add 192.168.1.129/24 dev eth0
	ip link set eth0 up
	route add default gw 192.168.1.128 dev eth0
[root@myQEMU ]# reboot

2、测试挂载 Ubuntu NFS

hudahua@wiat:~/workspace/aarch64_rootfs$ showmount -e
Export list for wiat:
/home/hudahua/workspace *
[root@myQEMU ]# mount -t nfs -o nolock 192.168.1.128:/home/hudahua/workspace /mnt
[root@myQEMU ]#
[root@myQEMU ]# ls /mnt/
1.txt                        
QEMU                           project
QT                             rootfs
aarch64_rootfs                 test
kernel                         tools
[root@myQEMU ]#

3、实现qemu虚拟机访问外网

要想让虚拟机继续访问外网则需进一步配置下route以及iptables。
Ubuntu需要开启 IP 转发。

hudahua@wiat:~/workspace/aarch64_rootfs$ sudo su
root@wiat:/home/hudahua/workspace/aarch64_rootfs# echo 1 > /proc/sys/net/ipv4/ip_forward

查看IP路由表。

root@wiat:/home/hudahua/workspace/aarch64_rootfs# route -n
内核 IP 路由表
目标            网关            子网掩码        标志  跃点   引用  使用 接口
0.0.0.0         10.60.4.254     0.0.0.0         UG    100    0        0 enp0s3
10.60.4.0       0.0.0.0         255.255.255.0   U     100    0        0 enp0s3
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 enp0s3
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 tap0
root@wiat:/home/hudahua/workspace/aarch64_rootfs#

路由一般都是有的,没有则需要手动添加:

route add -net 192.168.1.0 netmask 255.255.255.0 dev tap0

设置 iptables 规则
打开 iptables 的 NAT 功能:

root@wiat:/home/hudahua/workspace/aarch64_rootfs# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o enp0s3 -j MASQUERADE

这条规则的意思是,来自 192.168.1.0/24,且从 网卡 enp0s3 出去的包,要进行 NAT,同时会对返回的包进行 NAT。如果只有一个子网, -s 192.168.1.0/24 可以省略。

ping外网

[root@myQEMU ]# ping 120.232.145.144
PING 120.232.145.144 (120.232.145.144): 56 data bytes
64 bytes from 120.232.145.144: seq=0 ttl=46 time=36.544 ms
64 bytes from 120.232.145.144: seq=1 ttl=46 time=38.083 ms
64 bytes from 120.232.145.144: seq=2 ttl=46 time=36.594 ms
^C
--- 120.232.145.144 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 36.544/37.073/38.083 ms
[root@myQEMU ]#

使用域名失败

[root@myQEMU ]# ping www.baidu.com
	ping: bad address 'www.baidu.com'
[root@myQEMU ]#

使用nslookup 测试网络
NSLOOKUP可以用于查找指定域名的DNS服务器是否为权威服务器,这有助于验证域名的真实性。
nslookup 是一个用于查询域名系统 (DNS) 信息的命令行工具。

[root@myQEMU ]# nslookup www.baidu.com 8.8.8.8
Server:         8.8.8.8
Address:        8.8.8.8:53

Non-authoritative answer:
www.baidu.com   canonical name = www.a.shifen.com
Name:   www.a.shifen.com
Address: 120.232.145.144
Name:   www.a.shifen.com
Address: 120.232.145.185

Non-authoritative answer:
www.baidu.com   canonical name = www.a.shifen.com
Name:   www.a.shifen.com
Address: 2409:8c54:870:34e:0:ff:b024:1916
Name:   www.a.shifen.com
Address: 2409:8c54:870:67:0:ff:b0c2:ad75

[root@myQEMU ]#

能够解析域名。DNS配置问题。
参考链接:https://blog.csdn.net/jcf147/article/details/131290211

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐