VirtualBox 게스트가 호스트의 VPN 연결을 공유하도록하려면 어떻게해야합니까?


50

질문

라우터 역할을하는 우분투 데스크탑 컴퓨터에서 VPN을 시작하면 연결된 서브넷의 인터넷 연결이 끊어 지지만 여전히 액세스 가능합니다 (LAN). 이상적으로는 VPN이 활성 상태 일 때 연결된 서브넷이 VPN 터널을 통해 라우팅하여 인터넷 액세스를 다시 얻는 방법을 알고 싶습니다.

문맥

다음과 같은 네트워크 레이아웃이 있습니다.

내 VirtualBox 가상 머신의 eth0에서 서브넷 172.16.0.0/20

인터넷에 액세스 할 수있는 게이트웨이 192.168.0.1에 연결되는 eth0 : 0의 서브넷 192.168.0.0/24

이것은 / etc / network / interfaces 파일에 표시됩니다 :

auto lo
iface lo inet loopback

# This is the subnet dedicated to VB
auto eth0
iface eth0 inet static
    address 172.16.0.1
    netmask 255.255.0.0
    gateway 192.168.0.164
    dns-nameservers 8.8.8.8

# normal DHCP internet
auto eth0:0
iface eth0:0 inet static
    address 192.168.0.164
    netmask 255.255.255.0
    dns-nameservers 8.8.8.8
    gateway 192.168.0.1

eth0의 패킷은 마스커레이딩으로 eth0 : 0을 통해 전달되며 정상적인 인터넷 연결은 정상입니다. 그러나이 라우터에서 VPN 터널을 시작하면 eth0 서브넷의 VM에 대한 인터넷 연결이 끊어집니다 (아직 라우터에는 남아 있음).

아래는 터널이 활성화 된 경우 ifconfig출력입니다 .

eth0      Link encap:Ethernet  HWaddr 00:1f:bc:01:c3:ab  
          inet addr:172.16.0.1  Bcast:172.16.255.255  Mask:255.255.0.0
          inet6 addr: fe80::21f:bcff:fe01:c3ab/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:165426 errors:0 dropped:0 overruns:0 frame:0
          TX packets:182601 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:208264321 (208.2 MB)  TX bytes:16660945 (16.6 MB)
          Interrupt:16 

eth0:0    Link encap:Ethernet  HWaddr 00:1f:bc:01:c3:ab  
          inet addr:192.168.0.164  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Interrupt:16 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:381963 errors:0 dropped:0 overruns:0 frame:0
          TX packets:381963 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:22755054 (22.7 MB)  TX bytes:22755054 (22.7 MB)

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.8.0.10  P-t-P:10.8.0.9  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

솔루션이 라우팅 테이블 과 관련이 있다고 생각 합니다 . 터널이 활성화되면 다음을 보여줍니다 .

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         10.8.0.9        128.0.0.0       UG    0      0        0 tun0
default         192.168.0.1     0.0.0.0         UG    100    0        0 eth0
10.8.0.0        10.8.0.9        255.255.255.0   UG    0      0        0 tun0
10.8.0.9        *               255.255.255.255 UH    0      0        0 tun0
37.139.23.49    192.168.0.1     255.255.255.255 UGH   0      0        0 eth0
128.0.0.0       10.8.0.9        128.0.0.0       UG    0      0        0 tun0
link-local      *               255.255.0.0     U     1000   0        0 eth0
172.16.0.0      *               255.255.0.0     U     0      0        0 eth0
192.168.0.0     *               255.255.255.0   U     0      0        0 eth0

터널이 비활성 상태 인 경우 다음 사항 :

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.0.1     0.0.0.0         UG    100    0        0 eth0
link-local      *               255.255.0.0     U     1000   0        0 eth0
172.16.0.0      *               255.255.0.0     U     0      0        0 eth0
192.168.0.0     *               255.255.255.0   U     0      0        0 eth0

Vms를위한 Virtualbox 구성 :

여기에 이미지 설명을 입력하십시오

VM /etc/network/interfaces파일 중 하나 :

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
        address 172.16.0.3
        netmask 255.255.0.0
        network 172.16.0.0
        broadcast 172.16.255.255
        gateway 172.16.0.1
        dns-nameservers 8.8.8.8

VirtualBox에서 VM의 네트워크는 어떻게 구성됩니까?
zwets

eth0에 교량-질문에 정보를 추가했습니다.
Programster

나는 그것이 정확히 질문에 대한 답이 아니다 알아,하지만 나를 위해 대신 2 개 VPN 연결을 설정하는 것이 더 쉬울 수 밝혀졌다 : 1 호스트 시스템에서 다른 게스트 컴퓨터에서
Zhenya

답변:


28

브리지 네트워킹 설정 에서는 작동하지 않습니다 . 로부터 버추얼 문서 :

브리지 네트워킹

이는 네트워크 시뮬레이션 및 게스트에서 서버 실행과 같은 고급 네트워킹 요구를위한 것입니다. 활성화되면 VirtualBox가 설치된 네트워크 카드 중 하나에 연결하고 호스트 패킷을 직접 우회하여 호스트 운영 체제의 네트워크 스택을 우회합니다.

가상 머신이 eth0직접 사용하므로 가상 머신이 tun0실행되는 터널 에 대한 인터페이스를 인식하지 못합니다 . 다른 가상 네트워킹 구성을 사용해야합니다.

다음과 같은 옵션이 있습니다.

  • NAT (Network Address Translation) 는 가장 간단한 솔루션입니다. VirtualBox는 호스트가 사용할 수있는 모든 인터넷 연결을 통해 VM을 NAT합니다. 이것은 VM에 완전히 투명합니다. 그러나 이것은 호스트에서 VM으로의 연결 또는 VM 간의 연결을 배제합니다.

  • 사용 호스트 전용 네트워킹 VM의 호스트를 포함하는 적절한 서브넷을 만들 수 있습니다. 이것은 당신이 지금의 VM에있는 인터페이스 구성의 변경을 필요로하지 않습니다,하지만 당신은 게이트웨이와 라우터로 호스트를 설정해야합니다, 그리고 (그 전역 여부를 외부에 NAT VM을 만들 eth0거나 tun0).

  • 위의 사항을 결합하십시오. 각 VM에 두 개의 인터페이스를 제공하십시오. 하나는 외부 세계로 게이트웨이하고 (VirtualBox의 NAT를 통해 ) 다른 하나는 호스트 전용 LAN에 연결되어 있습니다.

  • VirtualBox의 실험적인 NAT 네트워킹 구성을 사용해보십시오 . 2019 업데이트 : 이 기능은 완성되었습니다. 호스트의 NAT에 연결하고 반 가상화 된 네트워크 (가상 네트워크) 어댑터 유형을 선택하십시오.


34

Windows 호스트 및 linux (mint) 게스트가있는 VirtualBox의 경우 네트워크 UI 탭으로 이동하여 "어댑터"=> "연결 대상 : NAT"및 "어댑터 유형 : 반 가상화 된 네트워크"로 설정하십시오. 그런 다음 VM을 시작하면 VPN 네트워크를 사용할 수 있습니다.


1
감사합니다! Virtual Box 5.0.24와 함께 Ubuntu 16.04LTS를 게스트 및 Windows 10 호스트로 사용합니다.
womp

1
훌륭한! 이것은 내 Windows 10 호스트 및 VirtualBox (5.0.26) CentOS 7 게스트에서 작동합니다.
Zaki

1
놀랄 만한! 허용되는 답변이어야합니다. 오랫동안이 솔루션을 찾고있었습니다. 고마워요!
MrSpock

1
여기에 최고의 답변!
Mike

도대체 왜 이것이 대답이 아닌가? 너무 쉽고 정확합니다!
Michael Goldshteyn 2016 년

6

이 솔루션을 어디에서나 찾은 후 마침내 많은 구성 변경이 필요하지 않고 실제로 작동하는 솔루션을 찾았습니다. 기본 NAT 네트워크를 사용하고이를 터미널에 입력하십시오.

VBoxManage modifyvm "VM name" --natdnsproxy1 on

출처 : https://www.virtualbox.org/ticket/13993


4

같은 문제가 있었다. 내가 해결 한 방법은 다음과 같습니다.

  1. 게스트 시스템의 네트워크 유형을 "호스트 전용"으로 변경
  2. Guest의 기본 게이트웨이가 Host의 IP ifconfig vboxnet0를 가리 키도록 합니다.

마지막 단계는 vboxnet0에서 오는 패킷을 VPN으로 라우팅하는 것입니다.

VPN을 통해 모든 트래픽을 라우팅하는 경우 :

iptables -t nat -A POSTROUTING -s 192.168.5.0/24 ! -d 192.168.5.0/24 -o tun0 -j SNAT --to-source 10.8.0.5

10.8.0.5tun0 게이트웨이는 어디에 있으며 192.168.5.0/24vboxnet0 네트워크 범위입니다.

VPN을 통해서만 특정 트래픽을 라우팅하는 경우 :

iptables -t nat -A POSTROUTING -s 192.168.5.0/24 ! -d 192.168.5.0/24 -o tun0 -j SNAT --to-source 10.8.0.5
iptables -t nat -A POSTROUTING -s 192.168.5.0/24 ! -d 192.168.5.0/24 -o wlan0 -j SNAT --to-source 192.168.43.95

어디 10.8.0.5당신의 tun0 게이트웨이이며 192.168.43.95당신입니다 wlan0'의 게이트웨이와 192.168.5.0/24당신의 vboxnet0 네트워크 범위입니다.

참고 :이 솔루션을 사용하면 호스트 OS를 처리하는 것과 같은 방식으로 게스트 OS를 처리 할 수 ​​있습니다. 호스트 OS에서 VPN을 통과하도록 구성된 IP 만 게스트에서 통과합니다.


3

다음은 호스트 VPN을 사용하는 방랑 상자에 대한 유용한 정보입니다. 기본적으로 당신은 natdnshostresolver1 옵션을 설정해야 이 점에 유의 하지 비록 방랑의 public_network 설정을 사용할 때 작동합니다.

  config.vm.provider :virtualbox do |vb|
      # ---- other options....
      vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
  end

http://renier.morales-rodriguez.net/post/90674523562/sharing-host-vpn-with-virtualbox-guest http://blog.geekslikeshinythings.com/2016/05/sharing-host-vpn-with-vagrant -rob-allen.html


1
첫 번째 링크는 저에게 해결책이되었습니다. VM에 대해 natdnshostresolver1 옵션을 설정하는 방법을 보여줍니다.
kol
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.