使用 Linux 桥接网络

使用 Linux 桥接网络

我正在尝试了解 Linux 网络和网桥,使用网桥设置网络。我有两个带有 eth0 接口的虚拟机

虚拟机 A -> 10.0.1.7 (eth0)

虚拟机 B -> 10.0.1.8 (eth0)

配置了以下附加路由的路由器 (10.0.1.1 )

目的地: 10.1.7.0/24 ,下一跳 = 10.0.1.7

目的地:10.1.8.0/24,下一跳 = 10.0.1.8

我使用以下命令添加了一个 Linux 桥

ip link add br0 type bridge
ip addr add 10.1.7.1/24 dev br0
ip link set br0 up

[root@test-1 centos]# ip addr
1: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether fa:16:3e:d9:59:5b brd ff:ff:ff:ff:ff:ff
inet 10.0.1.7/24 brd 10.0.1.255 scope global dynamic eth0
   valid_lft 507sec preferred_lft 507sec
inet6 fe80::f816:3eff:fed9:595b/64 scope link
   valid_lft forever preferred_lft forever
2: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN qlen 1000
link/ether 46:d0:ca:31:fa:b2 brd ff:ff:ff:ff:ff:ff
inet 10.1.7.1/24 scope global br0
   valid_lft forever preferred_lft forever
inet6 fe80::44d0:caff:fe31:fab2/64 scope link
   valid_lft forever preferred_lft forever

[root@test-1 centos]# ip route
default via 10.0.1.1 dev eth0
10.0.0.0/24 dev eth0  proto static  scope link
10.0.1.0/24 dev eth0  proto kernel  scope link  src 10.0.1.7
10.1.7.0/24 dev br0  proto kernel  scope link  src 10.1.7.1
169.254.169.254 via 10.0.1.1 dev eth0  proto static
172.16.60.0/24 dev eth0  proto static  scope link

在 eth0 接口上从 VM A 向 VM A 发出 Ping 请求

[root@test-1 centos]# ping 10.1.7.1 -c 1
 PING 10.1.7.1 (10.1.7.1) 56(84) bytes of data.
 64 bytes from 10.1.7.1: icmp_seq=1 ttl=64 time=0.065 ms
 --- 10.1.7.1 ping statistics ---
 1 packets transmitted, 1 received, 0% packet loss, time 0ms
 rtt min/avg/max/mdev = 0.065/0.065/0.065/0.000 ms

在 br0 接口上从 VM A 到 VM A 的 Ping 请求失败

[root@test-1 centos]# ping -I br0 10.1.7.1 -c 1
PING 10.1.7.1 (10.1.7.1) from 10.1.7.1 br0: 56(84) bytes of data.

--- 10.1.7.1 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

现在,当尝试从 VM B ping 10.1.7.1 时,VM A 正在发送回显回复,但 VM b 没有收到它。

[root@test-2 centos]# ping 10.1.7.1 -c 2
PING 10.1.7.1 (10.1.7.1) 56(84) bytes of data.
--- 10.1.7.1 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 999ms

两个虚拟机的 iptables 均已刷新,tcpdump 如下

虚拟机A

[root@test-1 centos]# tcpdump -i eth0 -nn -t -vv icmp
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
IP (tos 0x0, ttl 63, id 16561, offset 0, flags [DF], proto ICMP (1), length 84)
    10.0.1.8 > 10.1.7.1: ICMP echo request, id 2660, seq 1, length 64
IP (tos 0x0, ttl 64, id 11195, offset 0, flags [none], proto ICMP (1), length 84)
    10.1.7.1 > 10.0.1.8: ICMP echo reply, id 2660, seq 1, length 64   
IP (tos 0x0, ttl 63, id 17282, offset 0, flags [DF], proto ICMP (1), length 84)
    10.0.1.8 > 10.1.7.1: ICMP echo request, id 2660, seq 2, length 64
IP (tos 0x0, ttl 64, id 11473, offset 0, flags [none], proto ICMP (1), length 84)
    10.1.7.1 > 10.0.1.8: ICMP echo reply, id 2660, seq 2, length 64 

虚拟机B

[root@test-2 centos]# tcpdump -i eth0 -t -nn -vv icmp
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
IP (tos 0x0, ttl 64, id 16561, offset 0, flags [DF], proto ICMP (1), length 84)
    10.0.1.8 > 10.1.7.1: ICMP echo request, id 2660, seq 1, length 64
IP (tos 0x0, ttl 64, id 17282, offset 0, flags [DF], proto ICMP (1), length 84)
    10.0.1.8 > 10.1.7.1: ICMP echo request, id 2660, seq 2, length 64

如果我获取 br0 接口的 tcpdump (tcpdump -i br0 icmp),我没有看到任何数据包 - 为什么? 10.1.7.1 附加到 br0。

需要任何 iptables 配置吗?

我尝试将 eth0 连接到 br0,( brctl addif br0 eth0 )我失去了虚拟机连接,并且无法 ssh 或 ping 虚拟机。 eth0 接口是否可以通过其他方式将数据包转发到 br0?我不关心 veth 或 tuntap 接口;是这样的吗?

相关内容