OpenVPN 후 VMware 브리지 게스트가 네트워크를 잃었다
새 TAP 어댑터가 VMware가 호스트의 어느 NIC로 브리지하는지를 바꿨다. VMnet0을 고정할지 게스트를 라우팅할지 결정한 다음, VM 안에서 결과를 읽어라.
한 시간 전만 해도 브리지로 연결되어 접근이 가능했던 게스트가 이제 모든 통신에서 시간 초과가 난다. 아무도 그 설정을 건드리지 않았다. 호스트에서는 인터넷이 터널을 통해 여전히 동작한다. 이 두 사실을 합치면 원인은 VPN이 아니라 하이퍼바이저 쪽이다. 호스트와 게스트가 더 이상 같은 경로를 쓰지 않기 때문이다. 새 가상 어댑터 하나만으로도 이 일은 일어난다.
게스트가 아니라 브리지가 바뀌었다
Windows에 OpenVPN 클라이언트를 설치하면 터널이 올라올 때 서비스가 묶이는 가상 네트워크 어댑터가 추가된다. 운영체제 입장에서는 링크 상태가 있는 평범한 인터페이스이고 대개 자체 주소도 갖는다. VMware가 이것을 브리지 후보로 취급하기에는 그 정도면 충분하다.
VMnet0은 기본값이 자동이다. 즉 하이퍼바이저는 브리지를 만들 때마다 호스트 어댑터를 고른다. 방금 설치된 가상 어댑터가 그 후보군에 들어가고, 그것이 선택되면 게스트가 내보내는 모든 프레임은 물리 스위치 포트가 아니라 터널 장치로 간다.
브리지를 고정하거나 게스트를 라우팅하라
게스트를 물리 LAN의 동등한 구성원으로 만들려면 첫 번째 갈래가 맞다. 그때는 브리지가 고르게 두지 말고 어댑터를 명시적으로 지정해야 하며, 게스트가 회사 터널을 써야 하는 두 번째 갈래에서는 브리지가 애초에 올바른 설계가 아니었는데, 브리지된 게스트는 호스트의 VPN 경로를 물려받지 않기 때문이다.
이것을 먼저 정한다. 두 답은 서로 다른 작업으로 이어진다. 순서를 뒤집으면 브리지해서는 안 될 게스트에 정확히 고정된 브리지가 붙는다.
첫 번째 갈래에서는 호스트에서 가상 네트워크 편집기를 열고 VMnet0을 선택한 뒤 자동을 물리 어댑터로 바꾼다. 어댑터가 여러 개라면 자동 설정 목록을 쓰고, 게스트 트래픽을 절대 실어서는 안 되는 것들의 체크를 해제한다. OpenVPN TAP 또는 Wintun 장치, 그리고 Hyper-V, WSL, Docker, 루프백 어댑터다. 노트북에서는 유선과 무선 물리 어댑터를 모두 체크해 둔다. 그러지 않으면 사용자가 다음에 도킹할 때 게스트가 브리지를 잃는다.
선택을 결정하는 세 가지 조건
브리지가 적절한지는 게스트를 무엇에 쓰느냐에 달려 있다. 게스트가 LAN에서 독자적인 호스트로 보여야 하고 자체 주소와 자체 인바운드 도달성을 가져야 한다면 브리지가 올바른 모델이며 고정이 전부의 수정이다. 나가는 접근만 필요하다면 호스트 전용이나 NAT 네트워크가 더 단순하고 어댑터 교체에도 영향을 받지 않는다.
게스트가 호스트와 같은 터널을 써야 한다면, 브리지 모드도 고정된 어댑터도 도움이 되지 않는다. 게스트의 트래픽은 호스트의 라우팅 결정에 전혀 들어가지 않기 때문이다. 그 경우 호스트에 라우팅되거나 변환된 경로가 필요하고, 어댑터 선택은 무의미해진다.
VMware Player의 인터페이스에는 네트워크 편집기가 없다. 그래서 Player만 설치된 호스트가 이 설정에 도달하려면 독립 실행형 편집기나 Workstation 설치가 필요하다. 이 제약이 접근 방식을 단독으로 결정하기도 한다.
결과는 게스트 안에서 읽어라
가상 NIC를 다시 올리거나 게스트를 재시작해서 임대를 다시 요청하게 한다. 그다음 호스트가 설정했다고 믿는 내용이 아니라 실제로 받은 내용을 읽는다.
ipconfig /all
ip addr
ip route
그 출력에서 두 필드만 읽고 나머지는 당장은 무시한다. 게이트웨이는 LAN 라우터여야 하고, 어댑터 설명에는 터널이 아니라 VMware Ethernet 장치가 적혀야 한다. 169.254.0.0/16 안의 자기 할당 주소는 DHCP 서버가 응답하지 않았다는 뜻이며, 터널 어댑터 위의 브리지는 게스트 쪽에서 정확히 그렇게 보인다.
다른 무엇을 바꾸기 전에 한 가지 구분을 더 해 두는 게 좋다. 라우터에는 닿지만 인터넷에는 닿지 않는 게스트는 브리지가 동작하고 있고 상류에 문제가 있다. 터널 대역의 주소를 받은 게스트는 여전히 잘못된 장치에 붙어 있다. TAP 어댑터를 비활성화하는 것은 두 경우 모두의 해결책이 아니다. OpenVPN 서비스가 그것을 필요로 하기 때문이다.