我想对 KVM-QEMU 的虚拟网络进行基准测试。为此,我用一根线连接了两台服务器(服务器 1 和服务器 2)。我使用服务器 1 运行 QEMU VM,并希望从服务器 2 访问此 VM。
以下是配置概述。
o ens5f0 (ip 192.168.11.12/24)
|
| (server 2)
------------------------- (Host/Network boundary)
"
"
------------------------- (Host/Network boundary)
| (server 1)
|
o ens5f0
|
o br0. (ip 192.168.11.11/24)
|
------------------------- (VM/Host boundary)
| (guest)
|
o (enp0s2) inside VM
(ip 192.168.11.77/24 (from dhcp))
我遵循了文档这里.我在服务器1上配置一个网桥并ens5f0
为其添加接口。
server 1
---------------------
ip link add br0 type bridge
ip link set ens5f0 master br0
ip addr flush dev ens5f0
ip addr add 192.168.11.11/24 dev br0
ip link set dev br0 up
dnsmasq --interface=br0 --bind-interfaces --dhcp-range=192.168.11.12,192.168.11.254
ip link set dev ens5f0 up
然后我使用以下命令启动 QEMU。
server 1
---------------------
qemu-system-x86_64 \
-initrd initrd.img-5.4.0-84-generic \
-kernel vmlinuz-5.4.0-84-generic \
-nographic -monitor none -serial stdio\
-append 'root=/dev/vda1 console=ttyS0' \
-machine q35 -cpu host \
-drive "file=${disk_img_snapshot},format=qcow2,if=virtio" \
-nic bridge,br=br0,model=virtio-net-pci \
-enable-kvm \
-m 2G \
-smp 4 \
;
在虚拟机内部,接口enp0s2
获取 IP 地址192.168.11.77/24
。
VM
--------------------
~$ sudo ip addr show enp0s2
2: enp0s2: <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.11.77/24 brd 192.168.11.255 scope global dynamic noprefixroute enp0s2
valid_lft 3531sec preferred_lft 3531sec
该ping
命令可以从服务器 1 访问此 IP 地址,并且还可以从 VM 访问 IP 地址 192.168.11.11。
在第二台服务器上,我将 IP 地址配置为静态,等于 192.168.11.12/24。
server 2
------------------------
$ ip addr add 192.168.11.12/24 dev ens5f0
$ ping 192.168.11.11
PING 192.168.11.11 (192.168.11.11) 56(84) bytes of data.
64 bytes from 192.168.11.11: icmp_seq=1 ttl=64 time=0.327 ms
64 bytes from 192.168.11.11: icmp_seq=2 ttl=64 time=0.153 ms
问题是无法从服务器 2 访问 IP 地址 192.168.11.77,并且 VM 无法 ping 通服务器 2。我该如何通过此链接启用对 VM 的外部访问?
答案1
您可以运行 tcpdump -i br0 来查看路由上的内容。