1 브릿지 br0 생성

1 브릿지 br0 생성

두 VM이 모두 Linux 브리지(br0)에 연결된 상태에서 VM1에서 VM2로 이동할 수 있기를 원합니다. 아래는 내 토폴로지입니다.

VM1(m1)<====SSH====>[br0]<======SSH=====>VM2(m2)

1 브릿지 br0 생성

$ sudo ip link add dev br0 type bridge
$ sudo ip addr add 10.200.1.1/24 dev br0
$ sudo ip link set br0 up
$ sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1

2 VM 시작 시 지정한 브리지 이름

여기에 이미지 설명을 입력하세요.

veeru@ghost:~$ brctl show
bridge name bridge id       STP enabled interfaces
br0     8000.fe540005c7df   no      vnet0
                            vnet1
docker0     8000.024205ca1927   no      
virbr0      8000.5254003bf832   yes     virbr0-nic

게스트 VM의 네트워크가 작동 중이고문제없이 호스트에서 게스트로 SSH를 통해 연결할 수 있습니다.

하지만 VM1(m1)에서 VM2(m2)로 ssh를 시도하면 VM2에 액세스할 수 없습니다. VM2(m2)에서 tcpdump를 사용하여 SSH 패킷이 VM1(m1)에서 도착하지 않는지 확인했습니다.하지만 VM1에서 VM2로 ping할 수 있습니다.

Linux 브리징 개념에 대한 몇 가지 중요한 사항이 누락된 것 같습니다.

첨부된:

또한 Linux 브리지에 Wi-Fi 인터페이스(wlp0s20f3)를 추가하려고 시도했지만

sudo ip link set wlp0s20f3 down
sudo ip link set br0 down
sudo brctl addif br0 wlp0s20f3
can't add wlp0s20f3 to bridge br0: Operation not supported

게스트와 호스트에서 iptable을 건드리지 않았습니다.

답변1

 net.bridge.bridge-nf-call-arptables
 net.bridge.bridge-nf-call-ip6tables
 net.bridge.bridge-nf-call-iptables

이는 브리지를 통과하는 패킷이 처리를 위해 iptables로 전송되는지 여부를 제어합니다. 브리지를 사용하여 가상 머신을 네트워크에 연결하는 경우 일반적인 프로세스는 다음과 같습니다.아니요 호스트 iptables 규칙은 게스트가 아닌 호스트 자체만 고려하기 때문에 게스트 트래픽이 차단되기 때문에 이는 바람직합니다.

따라서 아래와 같이 bridge-nf 매개변수를 비활성화합니다. 이것은 작동합니다.

sudo sysctl -w net.bridge.bridge-nf-call-arptables=0
sudo sysctl -w net.bridge.bridge-nf-call-ip6tables=0
sudo sysctl -w net.bridge.bridge-nf-call-iptables=0

더 많은 정보를 확인하실 수 있습니다@libvirt 블로그그리고리눅스 재단 블로그

관련 정보