VirtualBox konuklarının, ana bilgisayarın VPN bağlantısını paylaşmasını nasıl sağlayabilirim?


50

Soru

VPN'imi yönlendirici görevi gören ubuntu masaüstü bilgisayarımda başlattığımda, ekli alt ağ internet bağlantısını kaybediyor, ancak yine de erişilebilir (LAN). İdeal olarak, ekli alt ağın, VPN aktifken VPN tüneli üzerinden yönlendirilerek internet erişimini yeniden kazanmasını sağlamak istiyorum.

bağlam

Aşağıdaki ağ düzenine sahibim:

VirtualBox sanal makinelerim için eth0 üzerinde 172.16.0.0/20 alt ağını kullanın.

internet erişimine sahip olan 192.168.0.1 ağ geçidine bağlanan eth0: 0'daki 192.168.0.0/24 alt ağı.

Bu / etc / network / interfaces dosyasında gösterilmiştir:

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 üzerindeki paketler maskeleme ile eth0: 0 aracılığıyla iletilir ve normal internet bağlantısı iyidir. Ancak VPN tünelimi bu yönlendiricide başlattığımda, eth0 alt ağındaki VM'ler için internet bağlantısı kesiliyor (henüz yönlendirici için kalmıyor).

Tünel aktif olduğunda ifconfig çıktısı aşağıdadır :

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)

Çözümün yönlendirme tablosuyla bir ilgisi olacağından şüpheleniyorum . Tünel aktif olduğunda aşağıdakileri gösterir :

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

ve tünel etkin değilken aşağıdakileri yapın :

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 için sanal kutu yapılandırması:

görüntü tanımını buraya girin

VM /etc/network/interfacesdosyalarından biri:

# 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

Sanal Makinenizin ağları VirtualBox'ta nasıl yapılandırılır?
zwets

eth0 için köprüler - soruya bilgi eklendi.
Programcı

Sorunun tam olarak cevabı olmadığını biliyorum, ama benim için bunun yerine 2 VPN bağlantısı kurmak daha kolay oldu: 1 ana bilgisayardan, bir diğer konuk bilgisayardan
Zhenya

Yanıtlar:


28

Bu, Bridged Networking kurulumunda çalışmaz . Gönderen VirtualBox belgelerinde :

Köprülü ağ iletişimi

Bu, ağ simülasyonları ve konukları sunucuda çalıştırmak gibi daha gelişmiş ağ ihtiyaçları içindir. Etkinleştirildiğinde, VirtualBox kurulu ağ kartlarından birine bağlanır ve doğrudan ağ paketlerini değiştirerek ana bilgisayar işletim sisteminizin ağ yığınını atar.

Sanal makineleriniz eth0doğrudan kullandığından , tun0üzerinde çalışan tünele arabirimin farkında değiller . Farklı bir sanal ağ yapılandırması kullanmanız gerekecek.

(Diğerleri arasında) şu seçeneklere sahipsiniz:

  • Ağ Adresi Çevirisi (NAT) şu ana kadarki en basit çözümdür. VirtualBox, VM'leri ana bilgisayar için hangi internet bağlantısına sahip olursa olsun NATlayacaktır. Bu, sanal makinelere tamamen şeffaftır. Ancak bu, ana bilgisayardan VM'lere olan bağlantıları veya VM'ler arasındaki bağlantıları engeller.

  • Kullanım Sadece Konak Ağ VM ve konağı içeren uygun bir alt ağ oluşturmak için. Bu, artık sanal makinelerdeki sahip arayüz yapılandırmasında herhangi bir değişiklik gerektirmez, ancak geçidi ve yönlendirici olmak ana kurmak gerekir, ve (onun karşısında ister dışarıya NAT VM'lerini yapmak eth0veya tun0).

  • Yukarıdaki birleştirin: Her VM iki (VirtualBox en genelinde arayüzleri, dış dünyaya bir ağ geçidi vermek NAT ) ve bağlı diğer Sunucu Okunur LAN .

  • VirtualBox'ın deneysel NAT Networking yapılandırmasını deneyin . 2019 Güncellemesi: bu özellik o zamandan beri olgunlaştı: ana bilgisayarın NAT cihazına bağlayın ve Paravirtualized network (virtio-net) adaptör türünü seçin.


34

Windows ana bilgisayarı ve linux (nane) konuğu olan VirtualBox için, Ağ Arayüz sekmesine gidin ve "Bağdaştırıcı" => "Ekli: NAT" ve "Bağdaştırıcı türü: Paravirtualized network" olarak ayarlayın. Bundan sonra VM'nizi başlatın ve VPN ağını kullanabilmelisiniz.


1
Bu benim için harika çalıştı, teşekkürler! Virtual Box 5.0.24 ile Ubuntu 16.04LTS’i misafirim ve Windows 10 sunucu olarak kullanmak.
Womp

1
Parlak! Bu, Windows 10 ana bilgisayarım & VirtualBox (5.0.26) CentOS 7 konuğum için çalışıyor.
Zaki

1
İnanılmaz! Kabul edilen cevap olmalı. Çağlar boyunca bu çözümü arıyordum. Çok teşekkürler!
MrSpock

1
Buradaki en iyi cevap!
Mike,

Neden halt bu kabul edilen cevap değil? Çok kolay ve doğru!
Michael Goldshteyn 19

6

Her yerde bu çözümü aradıktan sonra nihayet çok fazla yapılandırma değişikliği gerektirmeyen ve gerçekten basit bir çalışma çözümü buldum. Varsayılan NAT ağını kullanın ve bunu terminale yazın:

VBoxManage modifyvm "VM name" --natdnsproxy1 on

kaynak: https://www.virtualbox.org/ticket/13993


4

Aynı problem vardı. İşte nasıl çözdüm:

  1. Ağ Sisteminin türünü "Yalnızca Ana Bilgisayar" olarak değiştirin
  2. ifconfig vboxnet0Bulmak için Konuk'un varsayılan ağ geçidini Ana Bilgisayarın ipine yönlendirin.

Son adım, vboxnet0'ten gelen paketleri VPN'nize yönlendirmektir.

Tüm trafiği VPN üzerinden yönlendirirseniz:

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 ağ geçidiniz ve 192.168.5.0/24vboxnet0 ağ aralığınız nerede .

Yalnızca belirli trafiği VPN üzerinden yönlendirirseniz:

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

Nerede 10.8.0.5senin tun0 kapıdır ve 192.168.43.95sizin olduğu wlan0'ın geçidi ve 192.168.5.0/24sizin vboxnet0 ağ aralığıdır.

Not: Bu çözüm, Konuk İşletim Sisteminin Ana Bilgisayar İşletim Sistemiyle aynı şekilde ele alınmasına izin verir. Yalnızca Host OS'de VPN üzerinden geçecek şekilde yapılandırılmış IP'ler Misafir'te geçecektir.


3

İşte vpn ana bilgisayarını kullanan serseri kutuları için bazı yararlı bilgiler. Temelde natdnshostresolver1 seçenek ayarlamanız gerekir bu edeceğini Not DEĞİL olsa serseri en public_network ayarı kullanırken çalışır.

  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
İlk bağlantının benim için çözümü vardı. VM için natdnshostresolver1 seçeneğinin nasıl açılacağını gösterir.
kol,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.