将主机网络接口连接到虚拟机并 ping 其他主机

将主机网络接口连接到虚拟机并 ping 其他主机

我有一个带有接口的 Ubuntu18.04主机pr0,该主机通过硬件桥连接到网络中的其他主机。

KVM我已经使用( )创建了一个虚拟机(在我的主机上),virsh并且我想将pr0主机的接口连接到虚拟机的接口,以便来自主机的所有流量都pr0被传输到虚拟机,反之亦然。

笔记

  • 该虚拟机是基于 Debian-10 的发行版,维欧
  • 主持人的pr0IP是172.16.0.7

这是我尝试过的

sudo brctl addbr prbridge
sudo brctl addif prbridge pr0
sudo ip addr add 172.16.0.17 dev prbridge
sudo ip -4 route add 172.16.0.27/32 via 172.16.0.17
sudo ifconfig prbridge up

virsh attach-interface --domain vyos --type bridge \
        --source prbridge --model virtio \
        --config --live

在虚拟机中,我运行了这个

vyos@vyos:~# set interfaces ethernet eth2 address '172.16.0.27/24' && commit
# which is the equivalent of having run something like this
# sudo ip addr add 172.16.0.27 dev eth2

结果
使用上面描述的配置,我可以从 VM、桥接 IP172.16.0.17pr0IP内部成功 ping 通172.16.0.7

问题
问题是我正在尝试 pingpr0网络中的另一台主机,例如,172.16.0.6但我没有收到任何回复。

vyos@vyos:~$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
172.16.0.0      0.0.0.0         255.255.255.0   U     0      0        0 eth2
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 eth0
vyos@vyos:~$ ping 172.16.0.6
PING 172.16.0.6 (172.16.0.6) 56(84) bytes of data.
^C
--- 172.16.0.6 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 7ms

我已经验证数据包确实到达主机的pr0接口,但没有收到回复。

sudo tcpdump -en -i pr0 host 172.16.0.27
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on pr0, link-type EN10MB (Ethernet), capture size 262144 bytes
16:16:49.251756 52:54:00:c4:87:9e > 50:3e:aa:8b:33:5a, ethertype IPv4 (0x0800), length 98: 172.16.0.27 > 172.16.0.6: ICMP echo request, id 5768, seq 2, length 64
16:16:50.275727 52:54:00:c4:87:9e > 50:3e:aa:8b:33:5a, ethertype IPv4 (0x0800), length 98: 172.16.0.27 > 172.16.0.6: ICMP echo request, id 5768, seq 3, length 64
16:16:53.283618 52:54:00:c4:87:9e > 50:3e:aa:8b:33:5a, ethertype ARP (0x0806), length 42: Request who-has 172.16.0.6 tell 172.16.0.27, length 28
16:16:53.285253 50:3e:aa:8b:33:5a > 52:54:00:c4:87:9e, ethertype ARP (0x0806), length 60: Reply 172.16.0.6 is-at 50:3e:aa:8b:33:5a, length 46
16:17:06.549448 52:54:00:c4:87:9e > 50:3e:aa:8b:33:5a, ethertype IPv4 (0x0800), length 98: 172.16.0.27 > 172.16.0.6: ICMP echo request, id 5792, seq 1, length 64
16:17:07.555578 52:54:00:c4:87:9e > 50:3e:aa:8b:33:5a, ethertype IPv4 (0x0800), length 98: 172.16.0.27 > 172.16.0.6: ICMP echo request, id 5792, seq 2, length 64

任何想法或值得阅读的指示(因为我刚刚开始接触网络)都会受到欢迎。

答案1

桥只是一座桥,你正在扩展广播域,即你不必关心路由(除非你想要像伪装这样的东西)。

如果我正确理解了您的设置,那么您就为 pr0 分配了一个 IP,为 prbridge 分配了另一个 IP。

您通常只需将 IP 分配给 prbridge。从主机接口中删除 IP。然后从路由表中删除主机路由 (172.16.0.27/32),一切就绪了。

相关内容