저는 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
VM A에서 VM A로의 Ping 요청이 br0 인터페이스에서 실패함
[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에서 10.1.7.1을 ping하려고 하면 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 ) VM 연결이 끊어졌고 VM을 ssh하거나 ping할 수 없습니다. eth0 인터페이스가 패킷을 br0으로 전달할 수 있는 다른 방법이 있습니까? 나는 veth나 tuntap 인터페이스에 관심이 없습니다. 그렇죠?