A.19.4. 게스트는 외부 네트워크를 변경할 수 있지만 macvtap 인터페이스를 사용하는 경우 Reach Host는 사용할 수 없습니다.
- 증상
- 게스트 가상 머신은 다른 게스트와 통신할 수 있지만 macvtap(
type='direct'
) 네트워크 인터페이스를 사용하도록 구성된 후에는 호스트 시스템에 연결할 수 없습니다. - 조사
- 가상 이더넷 Port Aggregator(VEPA) 또는 VN-Link 가능 스위치에 연결하지 않아도 macvtap 인터페이스가 유용할 수 있습니다. 브리지로 이러한 인터페이스의 모드를 설정하면 기존 호스트
브리지
장치를 사용할 수 있는 설정 문제(또는 NetworkManager 와 호환되지 않음) 없이 매우 간단한 방식으로 게스트를 물리적 네트워크에 직접 연결할 수 있습니다.그러나 게스트 가상 시스템이 macvtap과 같은type='direct'
네트워크 인터페이스를 사용하도록 설정된 경우, 네트워크에서 다른 게스트 및 기타 외부 호스트와 통신할 수 있는 경우에도 게스트가 자체 호스트와 통신할 수 없습니다.이 상황은 실제로 오류가 아니며 macvtap의 정의된 동작입니다. 호스트의 물리적 이더넷이 macvtap 브리지에 연결된 방식으로 인해 물리적 인터페이스로 전달되는 게스트의 해당 브리지로 들어오는 트래픽이 호스트의 IP 스택으로 이동될 수 없습니다. 또한 물리적 인터페이스로 전송되는 호스트의 IP 스택의 트래픽은 게스트로 전달하기 위해 macvtap 브리지로 복구할 수 없습니다. - 해결책
- libvirt 를 사용하여 격리된 네트워크를 만들고 이 네트워크에 연결된 각 게스트 가상 시스템에 대해 두 번째 인터페이스를 만듭니다. 그러면 호스트와 게스트가 이 격리된 네트워크를 통해 직접 통신할 수 있지만 NetworkManager 와의 호환성도 유지됩니다.
절차 A.8. libvirt를 사용하여 격리된 네트워크 생성
/tmp/isolated.xml
파일에 다음 XML을 추가하고 저장합니다. 192.168.254.0/24 네트워크가 이미 네트워크의 다른 위치에서 사용 중인 경우 다른 네트워크를 선택할 수 있습니다.그림 A.3. 격리된 네트워크 XML
... <network> <name>isolated</name> <ip address='192.168.254.1' netmask='255.255.255.0'> <dhcp> <range start='192.168.254.2' end='192.168.254.254'/> </dhcp> </ip> </network> ...
- 다음 명령을 사용하여 네트워크 생성: virsh net-define /tmp/isolated.xml
- virsh net-autostart isolated 명령을 사용하여 네트워크를 autostart로 설정합니다.
- virsh net-start isolated 명령을 사용하여 네트워크를 시작합니다.
- virsh edit name_of_guest 를 사용하여 네트워크 연결에 macvtap를 사용하는 각 게스트의 구성을 편집하고 다음과 유사한
<devices>
섹션에 새<인터페이스를>
추가합니다(포함할<모델 type='virtio'/>
행은 선택 사항임).그림 A.4. 인터페이스 장치 XML
... <interface type='network' trustGuestRxFilters='yes'> <source network='isolated'/> <model type='virtio'/> </interface>
- 를 종료한 다음 각 게스트를 다시 시작합니다.
이제 게스트가 주소 192.168.254.1에서 호스트에 도달할 수 있으며 호스트는 DHCP에서 수집한 IP 주소에서 게스트에 연결할 수 있습니다(실제로 게스트의 IP 주소를 수동으로 구성할 수 있음). 이 새 네트워크는 호스트와 게스트로만 격리되므로 게스트의 다른 모든 통신에서는 macvtap 인터페이스를 사용합니다. 자세한 내용은 23.17.8절. “네트워크 인터페이스”의 내용을 참조하십시오.