Linux KVM의 네트워킹

Linux KVM의 네트워킹

두 가상 머신의 인터페이스를 상호 연결하기 위해 Linux 브리지를 사용하는 것 외에 다른 방법이 있는지 알고 싶습니다.

가상 머신에서 개인 스패닝 트리 구현을 실행하려고 하기 때문에 두 가상 머신을 연결하는 기본 Linux 브리지에서 BPDU가 삭제됩니다.

VirtualBox는 내부 네트워크 옵션을 제공하여 문제를 해결합니다.

KVM을 사용하는 경우 비슷한 옵션이 있습니까?

업데이트-01:STP를 활성화하면 2개의 브리지(2VM) 대신 3개의 브리지(2VM 및 두 VM을 연결하는 1개의 Linux 브리지)를 포함하는 토폴로지가 생성됩니다.

답변1

여기에서는 QEMU -netdev socket옵션을 사용할 수 있을 것 같습니다. 아마도 UDP 버전이 더 적합할 것입니다.

-netdev vde더 복잡하고 VDE 스위치 데몬을 구성해야 하지만 작동할 수도 있습니다 .

그러나 @Martin이 제안한 것처럼 STP 옵션을 활성화하여 Linux 브리지 문제를 극복하려고 노력했습니다. 이는 간단하고 매우 일반적인 설정입니다.

답변2

macvtap 드라이버를 사용해 볼 수 있습니다. 여기에는 몇 가지 제한 사항이 있습니다. 이에 대한 libvirt 문서를 꼭 읽어보세요.

답변3

QEmu/KVM은 다음을 사용할 수 있는 옵션을 제공합니다.수도꼭지호스트의 인터페이스:

  1. 호스트가 이 인터페이스로 이더넷 프레임을 보내면 게스트의 인터페이스로 전송됩니다.

  2. 게스트가 인터페이스로 이더넷 프레임을 보내면 호스트의 TAP 인터페이스로 전송됩니다.

TAP 인터페이스를 사용하여 두 VMS를 모두 생성할 수 있습니다. 이제 두 개의 TAP 인터페이스 간에 프레임을 교환해야 합니다. AF_PACKET다음 SOCK_RAW과 같이 인터페이스(소켓 사용) 간에 이더넷 프레임을 전달하는 프로그램을 작성하여 이를 수행할 수 있습니다.프레임 수신하나의 인터페이스에서배상다른 하나에게.

답변4

TAP 장치를 제안하는 사람들은 올바른 방향으로 가고 있지만 다른 것도 필요합니다.

먼저수의사 쌍. 이는 한 쌍의 가상 인터페이스로, 각 인터페이스는 수신한 트래픽을 다른 인터페이스로 전달합니다.

다음으로, macvtap을 통해 두 VM 중 하나를 쌍의 veth 인터페이스 중 하나에 연결하고 다른 VM을 다른 veth 인터페이스에 연결합니다.

마지막으로 트래픽을 보내세요.

관련 정보