qemu网络配置

一、qemu宿主机网络配置

[root@localhost qemu-install-centos7-arm64]# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 00:0c:29:c2:de:11 brd ff:ff:ff:ff:ff:ff
[root@localhost qemu-install-centos7-arm64]# ip tuntap add dev tap0 mode tap
[root@localhost qemu-install-centos7-arm64]# ip link set dev tap0 up
[root@localhost qemu-install-centos7-arm64]# ip address add dev tap0 192.168.2.128/24
[root@localhost qemu-install-centos7-arm64]# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 00:0c:29:c2:de:11 brd ff:ff:ff:ff:ff:ff
3: tap0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
    link/ether 5e:fc:91:0b:d3:f7 brd ff:ff:ff:ff:ff:ff
[root@localhost qemu-install-centos7-arm64]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:c2:de:11 brd ff:ff:ff:ff:ff:ff
    inet 192.168.120.12/24 brd 192.168.120.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 2408:820c:8ff8:1820:9880:c2f4:3c9d:9f3b/64 scope global noprefixroute dynamic 
       valid_lft 86399sec preferred_lft 14399sec
    inet6 fe80::3072:8360:61bb:d353/64 scope link tentative noprefixroute dadfailed 
       valid_lft forever preferred_lft forever
    inet6 fe80::ec5c:1830:1047:15b8/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: tap0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
    link/ether 5e:fc:91:0b:d3:f7 brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.128/24 scope global tap0
       valid_lft forever preferred_lft forever


二、启动qemu虚拟机

qemu-system-aarch64 \
-m 1024 \
-cpu cortex-a57 \
-smp 2 \
-M virt \
-bios QEMU_EFI.fd \
-nographic \
-device virtio-scsi-device \
-drive if=none,file=CentOS-7-aarch64-Everything-2009.qcow2,id=hd0 \
-device virtio-blk-device,drive=hd0 \
-net nic \
-net tap,ifname=tap0,script=no,downscript=no

增加了参数  -net nic  -net tap,ifname=tap0,script=no,downscript=no

三、qemu虚拟机网络配置

[root@localhost ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:12:34:56 brd ff:ff:ff:ff:ff:ff
[root@localhost ~]# ip addr add 192.168.2.129/24 dev eth0
[root@localhost ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:12:34:56 brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.129/24 scope global eth0
       valid_lft forever preferred_lft forever
[root@localhost ~]# ip link set eth0 up

四、qemu虚拟机ping宿主机
[root@localhost ~]# ping 192.168.2.128
PING 192.168.2.128 (192.168.2.128) 56(84) bytes of data.
64 bytes from 192.168.2.128: icmp_seq=1 ttl=64 time=19.2 ms
64 bytes from 192.168.2.128: icmp_seq=2 ttl=64 time=1.81 ms
64 bytes from 192.168.2.128: icmp_seq=3 ttl=64 time=4.30 ms

--- 192.168.2.128 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2029ms
rtt min/avg/max/mdev = 1.810/8.455/19.249/7.700 ms

五、qemu宿主机ping虚拟机

[root@localhost qemu-install-centos7-arm64]# ping 192.168.2.129
PING 192.168.2.129 (192.168.2.129) 56(84) bytes of data.
64 bytes from 192.168.2.129: icmp_seq=1 ttl=64 time=6.76 ms
64 bytes from 192.168.2.129: icmp_seq=2 ttl=64 time=7.99 ms
64 bytes from 192.168.2.129: icmp_seq=3 ttl=64 time=5.74 ms
64 bytes from 192.168.2.129: icmp_seq=4 ttl=64 time=3.18 ms
^C
--- 192.168.2.129 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3024ms
rtt min/avg/max/mdev = 3.182/5.920/7.994/1.772 ms

六、qemu宿主机复制文件到虚拟机

宿主机:

[root@localhost qemu-install-centos7-arm64]# scp cmd.help root@192.168.2.129:/root
The authenticity of host '192.168.2.129 (192.168.2.129)' can't be established.
ECDSA key fingerprint is SHA256:6rg+dJO+cPlEHRcBMduw6bpc+ouN2VZHmPIMPam0G3g.
ECDSA key fingerprint is MD5:71:63:ae:bf:04:27:3a:af:82:af:41:62:d4:e2:94:ef.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.2.129' (ECDSA) to the list of known hosts.
root@192.168.2.129's password: 
cmd.help                                                                                                                                                                   100%  601    35.1KB/s   00:00    
 

虚拟机:

[root@localhost ~]# ll
total 8
-rw-------. 1 root root 1296 Jul 31 13:02 anaconda-ks.cfg
-rw-r--r--. 1 root root  601 Aug  5 15:05 cmd.help

七、qemu虚拟机连接外网

1、qemu宿主机

(1)开启IP转发,通常是开启的
[root@localhost ~]# echo 1 > /proc/sys/net/ipv4/ip_forward

(2)添加静态路由,通常不需手动添加
[root@localhost ~]# ip route list
default via 192.168.120.254 dev ens33 proto static metric 100 
192.168.2.0/24 dev tap0 proto kernel scope link src 192.168.2.128 
192.168.120.0/24 dev ens33 proto kernel scope link src 192.168.120.12 metric 100

(3)设置iptables规则
[root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o ens33 -j MASQUERADE
[root@localhost ~]# iptables -t nat -nL
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
PREROUTING_direct  all  --  0.0.0.0/0            0.0.0.0/0           
PREROUTING_ZONES  all  --  0.0.0.0/0            0.0.0.0/0           

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
OUTPUT_direct  all  --  0.0.0.0/0            0.0.0.0/0           

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
POSTROUTING_direct  all  --  0.0.0.0/0            0.0.0.0/0           
POSTROUTING_ZONES  all  --  0.0.0.0/0            0.0.0.0/0           
MASQUERADE  all  --  192.168.2.0/24       0.0.0.0/0 


2、qemu虚拟机

(1)添加默认网关
[root@localhost ~]# ip route add default via 192.168.2.128
[root@localhost ~]# ip route list
default via 192.168.2.128 dev eth0 
192.168.2.0/24 dev eth0 proto kernel scope link src 192.168.2.129
[root@localhost ~]# ping 112.80.248.76
PING 112.80.248.76 (112.80.248.76) 56(84) bytes of data.
64 bytes from 112.80.248.76: icmp_seq=1 ttl=55 time=10.0 ms
64 bytes from 112.80.248.76: icmp_seq=2 ttl=55 time=10.2 ms
64 bytes from 112.80.248.76: icmp_seq=3 ttl=55 time=12.5 ms

--- 112.80.248.76 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2031ms
rtt min/avg/max/mdev = 10.090/10.960/12.504/1.100 ms

(外网可ping通,112.80.248.76为baidu的一个IP)

[root@localhost ~]# ping www.baidu.com
ping: www.baidu.com: Name or service not known

(DNS还需要配置)

八、参考

Documentation/Networking - QEMUhttps://wiki.qemu.org/Documentation/Networking#Network_BasicsQEMU's new -nic command line option - QEMUhttps://www.qemu.org/2018/05/31/nic-parameter/QEMU新的-nic选项 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/41258581

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值