我有一个带有接口的 Ubuntu18.04
主机pr0
,该主机通过硬件桥连接到网络中的其他主机。
KVM
我已经使用( )创建了一个虚拟机(在我的主机上),virsh
并且我想将pr0
主机的接口连接到虚拟机的接口,以便来自主机的所有流量都pr0
被传输到虚拟机,反之亦然。
笔记
- 该虚拟机是基于 Debian-10 的发行版,维欧。
- 主持人的
pr0
IP是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.17
和pr0
IP内部成功 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),一切就绪了。