Pytanie
Kiedy uruchamiam VPN na moim komputerze stacjonarnym ubuntu, który działa jak router, podłączona podsieć traci połączenie z Internetem, ale nadal jest dostępna (LAN). Idealnie chciałbym wiedzieć, jak włączyć podłączoną podsieć, aby ponownie uzyskać dostęp do Internetu, kierując się przez tunel VPN, gdy sieć VPN jest aktywna.
Kontekst
Mam następujący układ sieci:
podsieć 172.16.0.0/20 na eth0 dla moich maszyn wirtualnych VirtualBox.
podsieć 192.168.0.0/24 na eth0: 0, która łączy się z bramą 192.168.0.1, która ma dostęp do Internetu.
Jest to pokazane w pliku / 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
Pakiety na eth0 są przekazywane przez eth0: 0 z maskaradowaniem i normalna łączność z Internetem jest w porządku. Jednak po uruchomieniu tunelu VPN na tym routerze łączność z Internetem zostaje utracona dla maszyn wirtualnych w podsieci eth0 (jednak pozostaje dla routera).
Poniżej znajduje się wynik działania ifconfig, gdy tunel jest aktywny:
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)
Podejrzewam, że rozwiązanie będzie miało coś wspólnego z tablicą routingu . Pokazuje, kiedy tunel jest aktywny :
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
oraz następujące, gdy tunel jest nieaktywny :
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
Konfiguracja Virtualbox dla Vms:
Jeden z /etc/network/interfaces
plików VM :
# 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
Odpowiedzi:
To nie zadziała w konfiguracji Bridged Networking . Z dokumentacji VirtualBox :
Ponieważ maszyny wirtualne używają
eth0
bezpośrednio, nie są świadometun0
interfejsu prowadzącego do tunelu. Musisz użyć innej konfiguracji sieci wirtualnej.Masz (między innymi) następujące opcje:
Network Address Translation (NAT) jest zdecydowanie najprostszym rozwiązaniem. VirtualBox będzie NAT maszyn wirtualnych poprzez dowolne połączenie internetowe dostępne dla hosta. Jest to w pełni przejrzyste dla maszyn wirtualnych. Wyklucza to jednak połączenia między hostem a maszynami wirtualnymi lub połączenia między maszynami wirtualnymi.
Użyj sieci tylko do hosta, aby utworzyć odpowiednią podsieć zawierającą maszyny wirtualne i host. Nie będzie to wymagało żadnych zmian w konfiguracji interfejsu, którą teraz masz na maszynach wirtualnych, ale musisz skonfigurować hosta, aby był bramą i routerem, i ustawić NAT na maszynach wirtualnych na zewnątrz (czy to na jego,
eth0
czy natun0
).Połącz powyższe: daj każdej maszynie wirtualnej dwa interfejsy, jeden bramkujący do świata zewnętrznego (poprzez NAT VirtualBox ), a drugi podłączony do sieci LAN typu Host-Only .
Wypróbuj eksperymentalną konfigurację NAT NAT VirtualBox . Aktualizacja 2019: ta funkcja jest od tego czasu dojrzała: dołącz do NAT hosta i wybierz typ adaptera sieci parawirtualizowanej (virtio-net) .
źródło
W przypadku VirtualBox z hostem Windows i gościem linux (mint) przejdź do zakładki Network UI i ustaw „Adapter” => „Attached to: NAT” i „Type adapter: Paravirtualized network”. Następnie uruchom maszynę wirtualną i powinieneś być w stanie korzystać z sieci VPN.
źródło
Poszukując wszędzie tego rozwiązania, w końcu znalazłem działające rozwiązanie, które nie wymaga wielu zmian konfiguracji i jest naprawdę proste. Użyj domyślnej sieci NAT i wpisz ją w terminalu:
źródło: https://www.virtualbox.org/ticket/13993
źródło
Miałem ten sam problem. Oto jak to rozwiązałem:
ifconfig vboxnet0
aby ją znaleźć.Ostatnim krokiem jest routing pakietów pochodzących z vboxnet0 do sieci VPN.
Jeśli przekierujesz cały ruch przez VPN:
Gdzie
10.8.0.5
jest twoja brama tun0 i192.168.5.0/24
zasięg sieci vboxnet0.Jeśli kierujesz tylko określony ruch przez VPN:
Gdzie
10.8.0.5
jest twoja brama tun0 i192.168.43.95
twojawlan0
brama oraz192.168.5.0/24
zasięg sieci vboxnet0.Uwaga: To rozwiązanie pozwala traktować system operacyjny gościa w taki sam sposób, jak system operacyjny hosta. Tylko adresy IP skonfigurowane do przejścia przez VPN w hoście OS będą przechodzić przez to w Gość.
źródło
Oto kilka przydatnych informacji na temat włóczęgów korzystających z hosta VPN. Zasadniczo musisz ustawić opcję natdnshostresolver1 Zauważ, że NIE zadziała to podczas korzystania z ustawienia sieci publicznej Vagrant.
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
źródło