두 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 블로그그리고리눅스 재단 블로그