Làm cách nào tôi có thể khiến khách VirtualBox chia sẻ kết nối VPN của máy chủ?


50

Câu hỏi

Khi tôi khởi động VPN trên máy tính để bàn ubfox hoạt động như một bộ định tuyến, mạng con đính kèm sẽ mất kết nối internet, nhưng vẫn có thể truy cập (LAN). Lý tưởng nhất, tôi muốn biết làm thế nào để kích hoạt mạng con đính kèm để lấy lại quyền truy cập internet bằng cách định tuyến qua đường hầm VPN khi VPN hoạt động.

Bối cảnh

Tôi có cách bố trí mạng sau:

mạng con 172.16.0.0/20 trên eth0 cho các máy ảo VirtualBox của tôi.

mạng con 192.168.0.0/24 trên eth0: 0 kết nối với cổng 192.168.0.1 có truy cập internet.

Điều này được hiển thị trong tệp / etc / mạng / giao diện:

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

Các gói trên eth0 được chuyển tiếp qua eth0: 0 với giả mạo và kết nối internet bình thường là ổn. Tuy nhiên, khi tôi khởi động đường hầm VPN của mình trên bộ định tuyến này, kết nối internet bị mất cho các máy ảo trên mạng con eth0 (vẫn còn cho bộ định tuyến).

Dưới đây là đầu ra của ifconfig khi đường hầm được kích hoạt:

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)

Tôi nghi ngờ rằng giải pháp sẽ có liên quan đến bảng định tuyến . Nó hiển thị như sau khi đường hầm đang hoạt động :

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

và sau đây khi đường hầm không hoạt động :

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

Cấu hình hộp ảo cho Vms:

nhập mô tả hình ảnh ở đây

Một trong các /etc/network/interfacestệp 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

Các mạng VM của bạn được cấu hình trong VirtualBox như thế nào?
zwets

cầu nối đến eth0 - thêm thông tin vào câu hỏi.
Chương trình

Tôi biết đó không phải là câu trả lời chính xác cho câu hỏi của bạn, nhưng đối với tôi, việc thiết lập 2 kết nối VPN dễ dàng hơn thay vào đó: 1 từ máy chủ, một từ máy khách
Zhenya

Câu trả lời:


28

Điều này sẽ không hoạt động trong một thiết lập Mạng Cầu nối . Từ tài liệu VirtualBox :

Kết nối mạng

Điều này dành cho các nhu cầu mạng tiên tiến hơn như mô phỏng mạng và máy chủ đang chạy trong một khách. Khi được bật, VirtualBox kết nối với một trong các card mạng đã cài đặt của bạn và trao đổi trực tiếp các gói mạng, phá vỡ ngăn xếp mạng của hệ điều hành máy chủ của bạn.

Vì các máy ảo của bạn đang sử dụng eth0trực tiếp, chúng không biết tun0giao diện của đường hầm chạy qua nó. Bạn sẽ cần phải sử dụng một cấu hình mạng ảo khác.

Bạn có (trong số những người khác) các tùy chọn sau:

  • Dịch địa chỉ mạng (NAT) cho đến nay là giải pháp đơn giản nhất. VirtualBox sẽ NAT các VM trên bất kỳ kết nối internet nào có sẵn cho máy chủ. Điều này hoàn toàn minh bạch đối với các VM. Tuy nhiên, điều này ngăn chặn các kết nối từ máy chủ đến máy ảo hoặc kết nối giữa các máy ảo.

  • Sử dụng Mạng chỉ lưu trữ để tạo một mạng con phù hợp chứa VM và máy chủ lưu trữ. Điều này sẽ không yêu cầu thay đổi cấu hình giao diện mà bạn hiện có trong các máy ảo, nhưng bạn sẽ cần thiết lập máy chủ thành cổng và bộ định tuyến biến NAT thành máy ảo ở bên ngoài (cho dù là qua eth0hay không tun0).

  • Kết hợp những điều trên: cung cấp cho mỗi VM hai giao diện, một cổng vào thế giới bên ngoài (trên NAT của VirtualBox ) và giao diện kia được gắn vào mạng LAN Chỉ lưu trữ .

  • Hãy thử cấu hình Mạng NAT thử nghiệm của VirtualBox . Cập nhật 2019: tính năng này đã hoàn thiện: đính kèm với NAT của máy chủ và chọn loại bộ điều hợp mạng Paravirtualized (virtio-net) .


34

Đối với VirtualBox có máy chủ windows và máy khách linux (mint), hãy chuyển đến tab Network UI và đặt cho "Adaptor" => "Kèm theo: NAT" và "Loại bộ điều hợp: Mạng Paravirtualized". Sau đó, khởi động VM của bạn và bạn sẽ có thể sử dụng mạng VPN.


1
Điều này làm việc rất tốt cho tôi, cảm ơn! Sử dụng Ubuntu 16.04LTS làm khách của tôi và máy chủ Windows 10, với Virtual Box 5.0.24.
vào

1
Xuất sắc! Điều này hoạt động cho máy chủ Windows 10 & VirtualBox (5.0.26) khách CentOS 7 của tôi.
Zaki

1
Kinh ngạc! Nên là câu trả lời được chấp nhận. Đã tìm kiếm giải pháp này cho lứa tuổi. Cảm ơn rất nhiều!
MrSpock

1
câu trả lời tốt nhất ở đây!
Mike

Tại sao cái quái này không phải là câu trả lời được chấp nhận? Thật dễ dàng và đúng đắn!
Michael Goldshteyn

6

Sau khi tìm kiếm giải pháp này ở mọi nơi, cuối cùng tôi đã tìm thấy một giải pháp hoạt động không đòi hỏi nhiều thay đổi về cấu hình và thực sự đơn giản. Sử dụng mạng NAT mặc định và nhập mạng này vào thiết bị đầu cuối:

VBoxManage modifyvm "VM name" --natdnsproxy1 on

nguồn: https://www.virtualbox.org/ticket/13993


4

Có cùng một vấn đề. Đây là cách tôi giải quyết nó:

  1. Thay đổi loại mạng của Hệ thống khách thành "Chỉ lưu trữ"
  2. Đặt cổng mặc định của Guest point tới ip của Host ifconfig vboxnet0để tìm nó.

Bước cuối cùng là định tuyến các gói đến từ vboxnet0 vào VPN của bạn.

Nếu bạn định tuyến tất cả lưu lượng truy cập thông qua 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

Trong trường hợp 10.8.0.5là cửa ngõ tun0 của bạn và 192.168.5.0/24là phạm vi mạng vboxnet0 của bạn.

Nếu bạn chỉ định tuyến lưu lượng truy cập nhất định thông qua 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

Trong trường hợp 10.8.0.5là cổng tun0 của bạn và 192.168.43.95là bạn wlan0cửa ngõ 's và 192.168.5.0/24là phạm vi mạng vboxnet0 của bạn.

Lưu ý: Giải pháp này cho phép Hệ điều hành khách được xử lý giống như cách xử lý Hệ điều hành máy chủ. Chỉ các IP được cấu hình để đi qua VPN trong Hệ điều hành máy chủ mới đi qua nó trong Guest.


3

Dưới đây là một số thông tin hữu ích cho các hộp mơ hồ sử dụng máy chủ vpn. Về cơ bản, bạn cần đặt tùy chọn natdnshostresolver1 Lưu ý rằng điều này sẽ KHÔNG hoạt động khi sử dụng cài đặt public_network của Vagrant.

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

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


1
Các liên kết đầu tiên đã có giải pháp cho tôi. Nó chỉ ra cách bật tùy chọn natdnshostresolver1 cho VM.
kol
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.