QEMU配置网络
这条规则的意思是,来自 192.168.1.0/24,且从 网卡 enp0s3 出去的包,要进行 NAT,同时会对返回的包进行 NAT。如果只有一个子网, -s 192.168.1.0/24 可以省略。NSLOOKUP可以用于查找指定域名的DNS服务器是否为权威服务器,这有助于验证域名的真实性。要想让虚拟机继续访问外网则需进一步配置下route以及iptables。nslookup 是一个用于查询
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
更多推荐
所有评论(0)