VirtualBox - Ubuntu khách mất DNS khi máy chủ kết nối với VPN


11

Tôi có hệ điều hành khách Ubuntu trong VirtualBox bằng NAT mặc định cho eth0.

Hoạt động tốt tại văn phòng và tại nhà NGOẠI TRỪ khi sử dụng VPN văn phòng tại nhà.

Khi HĐH máy chủ (Windows 7) được kết nối với VPN, tra cứu DNS không hoạt động trong máy khách Virtualbox. Tra cứu DNS là tốt trên máy chủ. Trong Virtualbox, tôi có thể ping IP trực tiếp cả trong VPN và bên ngoài, vì vậy đó không phải là vấn đề kết nối.

Có vẻ như khách Ubuntu đang sử dụng localhost làm điểm vào DNS, theo /etc/resolv.confnslookup. Vì vậy, có vẻ như một cái gì đó cục bộ đang gửi đến DNS cơ bản khác.

Làm thế nào để tôi khắc phục sự cố này?


Bạn đang sử dụng gì cho VPN? Bạn có quyền truy cập vào cài đặt VPN trên thiết bị mà các máy này đang kết nối không? Thông thường, các máy kết nối với VPN rút ra các cài đặt của chúng từ thiết bị VPN.
jmreicha

Để làm rõ các tra cứu DNS trên máy chủ đang hoạt động tốt - chỉ có khách Virtualbox bị ảnh hưởng.
wrschneider

Câu trả lời:


17

Điều này làm việc vì một số lý do

C:\...\VirtualBox\VBoxManage modifyvm "VM name" --natdnshostresolver1 on

Tôi nghi ngờ điều đó bởi vì khi VPN hoạt động, máy chủ đang làm điều gì đó đặc biệt để tra cứu DNS bên cạnh việc chuyển tiếp yêu cầu đến các máy chủ DNS được chỉ định mà VirtualBox nhặt được từ cấu hình Windows.


1
Bạn đã lưu ngày anh chàng.
CantGetANick

Làm việc hoàn hảo cho tôi!
Hải Minh Nguyên

1

Tôi đã có một tình huống rất giống với LubFi 16.04 (nên giống hệt trong các Ubuntus khác) nhưng cách khắc phục này không cải thiện được tình hình. Ít nhất là với 16.04, vấn đề có vẻ là NetworkManager sử dụng proxy DNS cục bộ (dnsmasq) và điều này không hoạt động tốt với các kết nối VPN, ít nhất là trong cấu hình mặc định.

Nhận xét / xóa dns = dnsmasq trong /etc/NetworkManager/NetworkManager.conf

[main]
plugins=ifupdown,keyfile,ofono
# dns=dnsmasq

Có lẽ có một cách để định cấu hình dnsmasq nhưng điều này cho phép (tôi) quyền truy cập tương đương vào máy chủ (dns, v.v.), vì vậy tôi chưa điều tra. YMMV.


1

TL; DR:

  • khởi động lại VM để đảm bảo trạng thái VPN (được kết nối hoặc ngắt kết nối) của máy chủ không thay đổi trong thời gian này;
  • hãy để công cụ VirtualBox NAT chặn các yêu cầu DNS và chuyển tiếp chúng tới bộ giải quyết của máy chủ, nghĩa là sử dụng API DNS của máy chủ để truy vấn thông tin và trả lại cho khách. Bạn đặt điều này bằng cách:

VBoxManage modifyvm "VM name" --natdnshostresolver1 on


Chạy VM trong máy chủ được kết nối với VPN có thể dẫn đến các sự cố DNS mỗi khi trạng thái VPN thay đổi. Có hai kịch bản:

  1. VM sinh ra trong một máy chủ được kết nối VPN và tại một thời điểm nhất định, VPN sẽ ngắt kết nối;
  2. VM sinh ra trong một máy chủ không kết nối VPN và tại một thời điểm nhất định, VPN kết nối

1) Kết nối VPN -> Ngắt kết nối VPN

Trong trường hợp này, VM có thể đã nhận được một địa chỉ DNS là một phần của mạng nhà cung cấp VPN. Đây thường sẽ là một địa chỉ IP riêng nội bộ. Kiểm tra nội dung của cat /etc/resolv.conf. Trong trường hợp của tôi, tôi nhận được như sau:

nameserver 10.8.8.1 <--- Đây là nội bộ của mạng Nhà cung cấp VPN

nameserver 192.168.178.1 <--- Đây là cổng nhà của tôi (bộ định tuyến)

Bây giờ ngắt kết nối máy chủ khỏi kết nối VPN:

  • cấu hình DNS trong máy ảo không thay đổi -> VM vẫn sẽ gửi yêu cầu DNS đến IP đích 10.8.8.1 không thể truy cập do máy chủ không còn kết nối với VPN

Trong chi tiết:

  • gói sẽ được gửi đến def GW được xác định bởi mạng VirtualBox NAT, nguồn NATTed (có địa chỉ IP máy chủ) và cuối cùng được xử lý bởi bảng định tuyến của máy chủ sẽ chuyển tiếp đến cổng nhà của bạn.
  • Tại đây, gói tin sẽ bị hủy vì cổng nhà của bạn không có mục nào cho 10.8.8.1 ở phía mạng LAN (địa chỉ riêng) và không thể chuyển tiếp nó ở phía mạng LAN (địa chỉ công cộng) vì đây là địa chỉ riêng.

2) Ngắt kết nối VPN -> Kết nối VPN

Trong trường hợp này, VM sẽ không nhận được địa chỉ DNS là một phần của nhà cung cấp mạng VPN vì máy chủ không được kết nối với VPN khi VM khởi động. Kiểm tra nội dung của cat /etc/resolv.conf. Trong trường hợp của tôi, tôi nhận được như sau:

nameserver 192.168.178.1 <--- Đây là cổng nhà của tôi (bộ định tuyến)

Bây giờ kết nối máy chủ với kết nối VPN:

  • cấu hình DNS trong máy ảo không thay đổi -> VM vẫn sẽ gửi các yêu cầu DNS đến IP đích 192.168.178.1 không thể đạt được (ping đến nó vẫn hoạt động) vì hiện tại yêu cầu DNS từ VM đang được xử lý giao diện VPN Tap sẽ chuyển tiếp các gói tới mạng VPN nơi không thể truy cập 192.168.178.1 (địa chỉ IP cổng nhà nội bộ của bạn).

Trong chi tiết:

  • gói sẽ được gửi đến def GW được xác định bởi mạng VirtualBox NAT, được gửi đến giao diện VPN Tap sẽ sửa đổi tiêu đề IP thay thế địa chỉ nguồn VM IP bằng địa chỉ IP được gán cho máy chủ bởi Mạng VPN, trong khi đích địa chỉ vẫn là địa chỉ DNS 192.168.178.1.
  • gói này sau đó sẽ được gói gọn trong một Tiêu đề IP bên ngoài sẽ có địa chỉ IP máy chủ là nguồn (btw sau đó sẽ được thay thế bởi NAT nguồn trên cổng nhà) và Máy chủ VPN làm địa chỉ đích.
  • khi gói đến mạng VPN, nó sẽ được giải mã. Địa chỉ IP đích bây giờ lại là địa chỉ DNS 192.168.178.1 mà Mạng nhà cung cấp VPN không có cách nào tiếp cận (trừ khi có xác suất bất thường trong đó đây chính xác là địa chỉ IP được nhà cung cấp mạng VPN của bạn sử dụng cho máy chủ DNS của nó).
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.