Tôi đã có chính xác cùng một vấn đề, và nhìn thấy nó qua để giải quyết, vì vậy tôi rất vui khi được giải thích vấn đề và giải pháp cụ thể.
Không liên quan đến VPN
Điều quan trọng là phải hiểu cấu hình được yêu cầu để đáp ứng yêu cầu của bạn mà không liên quan đến VPN. Ngoài ra, thông tin này giả định rằng không có tường lửa phần mềm nào can thiệp, cả máy chủ lẫn khách.
Không có VPN, điều này thường được giải quyết bằng cách tạo hai bộ điều hợp mạng trong cấu hình của máy ảo.
Bộ điều hợp đầu tiên phải được đặt thành NAT
chế độ, cho phép khách truy cập tài nguyên mạng (bao gồm cả Internet) thông qua giao diện mạng của máy chủ.
Bộ điều hợp thứ hai phải được đặt thành Host-only
, cho phép giao tiếp hai chiều giữa máy chủ và khách.
Bộ điều hợp này phức tạp hơn một chút để thiết lập so với bộ đầu tiên, vì nó yêu cầu sửa đổi tùy chọn mạng toàn cầu của VirtualBox để định cấu hình bộ điều hợp chỉ dành cho máy chủ (lưu ý: điều này yêu cầu đặc quyền của Quản trị viên).
Trong VirtualBox, đi đến File -> Preferences -> Network
. Nhấp vào Host-only Networks
tab và nhấp vào +
biểu tượng nhỏ để thêm bộ điều hợp mới. Bạn sẽ được nhắc nâng quyền của VirtualBox.
Điền vào Adapter
tab là bắt buộc; nó sẽ trông giống như thế này (bỏ qua bộ điều hợp có nhãn #2
; được sử dụng cho một cái gì đó không liên quan):
Các giá trị trên DHCP
tab máy chủ là tùy chọn. Nếu bạn có ý định mã hóa cứng địa chỉ IP cho bộ điều hợp này trong cấu hình mạng của khách, thì những giá trị này là không cần thiết. Mặt khác, nếu bạn định sử dụng DHCP, các giá trị có thể trông giống như thế này:
Bước cuối cùng liên quan đến việc định cấu hình VirtualBox là quay lại cấu hình mạng của VM và thêm bộ điều hợp thứ hai, tham chiếu bộ điều hợp chỉ lưu trữ mà chúng ta vừa tạo:
Bây giờ, trong hệ điều hành khách, mạng phải được cấu hình để sử dụng hai giao diện mạng này.
Trên Debian hoặc Ubuntu GNU / Linux, cấu hình đơn giản như sửa đổi /etc/network/interfaces
để trông như thế này:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet dhcp
# The secondary network interface
auto eth1
iface eth1 inet static
address 192.168.56.101
netmask 255.255.255.0
(người theo chủ nghĩa thuần túy có thể thích sử dụng /etc/network/interfaces.d
thư mục thay thế, nhưng điều đó nằm ngoài phạm vi của lời giải thích này)
Khởi động lại các dịch vụ mạng của khách, hoặc đơn giản hơn, khởi động lại toàn bộ VM khách và mọi thứ sẽ "chỉ hoạt động".
Tại thời điểm này, người ta sẽ có thể ping máy khách VM tại 192.168.56.101
và nhận được phản hồi (với điều kiện tường lửa phần mềm không can thiệp).
Tương tự như vậy, người ta sẽ có thể ping máy chủ tại 10.0.2.2
. Địa chỉ IP này dường như được "mã hóa cứng" trong triển khai NAT của VirtualBox hoặc ít nhất được chỉ định thông qua một số chỉ thị cấu hình không rõ ràng và có rất ít thông tin về nguồn gốc của nó. Nhưng, than ôi, "nó chỉ hoạt động".
Với cấu hình này, cả ba điều kiện được nêu trong câu hỏi của bạn đều được đáp ứng.
Nhập: VPN
Nhưng, đây là chà. Giới thiệu VPN gây ra sự cố dừng hiển thị (tốt, tùy thuộc vào VPN cụ thể và cấu hình của nó).
VPN hiện đại có khả năng phân chia đường hầm , cần thiết cho cấu hình VirtualBox đã nói ở trên để hoạt động theo ba yêu cầu của bạn. Vì lý do bảo mật (tốt), đường hầm phân chia thường bị vô hiệu hóa và đây chính xác là vấn đề trong trường hợp của bạn (và của tôi).
Khi bạn kết nối với VPN, máy khách VPN (Máy khách di động an toàn Cisco AnyConnect, 3.1.02026, trong trường hợp của tôi) sẽ kiểm tra các bảng định tuyến của máy chủ, ghi nhớ chúng, sau đó quét qua chúng với các giá trị thường đến từ một số trung tâm vị trí được quản lý (nghĩa là ngay cả với đặc quyền Quản trị viên cục bộ, không thể ghi đè cài đặt).
Bạn có thể tự kiểm tra các bảng định tuyến bằng cách mở command.exe
(trên Windows):
C:\>route print
Trước khi kết nối với VPN, bảng định tuyến chứa các mục quan trọng cho phép cấu hình VirtualBox này hoạt động chính xác. Kết nối với VPN khiến các mục này bị xóa, điều này ngăn cản giao tiếp giữa máy chủ và khách.
(Có nhiều mục khác, mà tôi đã bỏ qua ở đây, vì chúng không liên quan đến nguyên nhân gốc rễ cho hành vi này.)
Trước khi kết nối với VPN:
192.168.56.0 255.255.255.0 On-link 192.168.56.1 266
192.168.56.1 255.255.255.255 On-link 192.168.56.1 266
192.168.56.255 255.255.255.255 On-link 192.168.56.1 266
224.0.0.0 240.0.0.0 On-link 192.168.56.1 266
255.255.255.255 255.255.255.255 On-link 192.168.56.1 266
Sau khi kết nối với VPN:
192.168.56.1 255.255.255.255 On-link 192.168.56.1 266
224.0.0.0 240.0.0.0 On-link 192.168.56.1 266
255.255.255.255 255.255.255.255 On-link 192.168.56.1 266
Máy khách VPN xóa các dòng sau:
192.168.56.0 255.255.255.0 On-link 192.168.56.1 266
192.168.56.255 255.255.255.255 On-link 192.168.56.1 266
Nếu không có hai mục nhập cuối cùng, máy chủ và khách không thể giao tiếp và đây chính xác là hành vi dự định khi đường hầm phân tách bị vô hiệu hóa trong cấu hình VPN.
Thông thường, hai lệnh này sẽ khôi phục các tuyến đó:
C:\>route ADD 192.168.56.0 MASK 255.255.255.0 192.168.56.1 METRIC 266
C:\>route ADD 192.168.56.255 MASK 255.255.255.255 192.168.56.1 METRIC 266
Nhưng máy khách VPN vẫn cảnh giác: nó chặn các nỗ lực sửa đổi bảng định tuyến. Khách hàng của tôi dường như cho phép mục thứ hai, nhưng không phải mục đầu tiên. (Và nó có thể mở rộng cả hai trên cơ sở định kỳ; tôi đã không kiểm tra điều đó.)
Nếu VPN cụ thể của bạn và cấu hình tùy viên của nó cho phép bật đường hầm phân tách, thì nó thường được bật như thế này:
Khi ngắt kết nối với VPN, các máy khách VPN hoạt động tốt sẽ khôi phục các bảng định tuyến được đặt trước khi kết nối. Máy khách VPN của tôi dường như làm điều này một cách đáng tin cậy, điều này có lợi vì điều đó có nghĩa là VM khách không cần phải khởi động lại khi tôi kết nối hoặc ngắt kết nối với VPN. Trong các trường hợp như vậy, bộ điều hợp phụ của VM được đặt lại, nhưng nó lấy lại địa chỉ IP của nó một cách tự động và minh bạch, khôi phục liên lạc giữa máy chủ và khách gần như ngay lập tức. Tốt hơn nữa, NFS gắn kết giữa máy chủ và khách (Tôi đang sử dụng gắn kết CIFS) vẫn được kết nối qua các hoạt động kết nối / ngắt kết nối VPN.
Trong trường hợp không chắc là VPN của bạn cho phép phân chia đường hầm, có thể là một vấn đề đơn giản cho phép nó, trong trường hợp đó, tôi rất muốn nghe từ bạn về việc liệu "mọi thứ chỉ hoạt động" hay không.