DNS của guest VirtualBox hỏng sau khi host tham gia VPN
Guest có trình phân giải riêng và NAT có thể trả lời DNS theo hai cách. Bốn bước kiểm tra: chế độ adapter, đường đi của trình phân giải, chế độ trình phân giải của host và việc kết nối lại VPN.
Một ứng dụng nội bộ được phân giải trên host Windows ngay khi VPN kết nối, còn guest Ubuntu phía sau NAT của VirtualBox vẫn không tìm thấy nó. Guest có trình phân giải riêng, và adapter NAT có thể xử lý DNS theo nhiều cách. Thay trình phân giải của guest bằng một máy chủ công cộng khiến các trang thông thường hoạt động và tên nội bộ thất bại, tức là dịch chuyển vấn đề chứ không giải quyết nó. Thực hiện bốn bước kiểm tra theo thứ tự và dừng ở bước đầu tiên không đúng.
Xác nhận bạn đang gỡ lỗi chế độ adapter nào
Chỉ adapter ở chế độ NAT đơn giản mới hành xử như bài viết này mô tả. Adapter cầu nối nằm trên mạng vật lý với danh tính riêng, mạng NAT là một switch ảo có tên với thiết lập DHCP và DNS riêng, và một client VPN bên trong guest thêm hẳn một trình phân giải thứ hai. Xác nhận chế độ trước khi đọc tiếp, vì cách sửa khác nhau trong từng trường hợp đó.
Một VM có thể mang hai adapter ở các chế độ khác nhau, và adapter bị ảnh hưởng không phải lúc nào cũng là cái đầu tiên.
Cũng xác nhận rằng host có phân giải được tên đó hay không. Mở cùng ứng dụng trên host khi đường hầm đang bật, dùng đúng tên đầy đủ mà guest sẽ dùng. Nếu host cũng thất bại thì lỗi không thuộc về guest và không thay đổi mạng ảo nào sửa được.
Theo dõi một tên qua trình phân giải của guest
Chọn một tên nội bộ và một tên đối chứng công cộng, rồi thử cả hai ở cả hai nơi. Tên công cộng phân giải được trong khi tên nội bộ không phân giải được sẽ khoanh vùng lỗi vào đường đi nội bộ chứ không phải vào việc phân giải tên nói chung. Chỉ thử tên nội bộ khiến bạn không phân biệt được trình phân giải hỏng với đường đi hỏng.
Bên trong guest, hãy xem trình phân giải thực sự được cấu hình dùng gì. Trên guest Ubuntu chạy systemd-resolved, trạng thái theo từng liên kết hiển thị các máy chủ đã đến, và tệp resolv.conf có thể chỉ chứa một địa chỉ stub, điều đó đúng chứ không đáng ngờ. Một tệp bị sửa tay hoặc một client DNS mã hóa riêng có thể gửi truy vấn tới nơi hoàn toàn khác. Ghi lại những gì bạn thấy trước khi thay đổi.
resolvectl status
resolvectl query app.internal.exampleỞ đây hãy tách việc phân giải khỏi khả năng kết nối. Một địa chỉ đến trong khi dịch vụ vẫn không kết nối được là câu hỏi về định tuyến hoặc chính sách, không phải DNS.
Thử chế độ trình phân giải của host trên adapter đó
Các tùy chọn NAT DNS của VirtualBox mô tả những cơ chế khác nhau, và khác biệt đó có ý nghĩa khi trình phân giải riêng của host thay đổi cùng đường hầm. Proxy DNS chuyển tiếp yêu cầu của guest tới các máy chủ mà nó được cấp. Chế độ trình phân giải của host chặn các yêu cầu và gọi API DNS của host, và đó là chế độ đi theo trình phân giải Windows đã được client VPN cấu hình lại.
Bật sai cơ chế thì lệnh vẫn thành công trong khi hành vi không đổi, một cách gây nhầm lẫn để mất cả buổi chiều.
VBoxManage modifyvm "work-ubuntu" --natdnshostresolver1 onGhi lại thiết lập hiện tại của máy ảo, tắt nó và nhắm vào adapter bạn đã xác nhận trước đó. Chữ số cuối trong tùy chọn là số hiệu adapter chứ không phải hằng số, nên áp nó cho một máy mà adapter bị ảnh hưởng là cái thứ hai là một thao tác im lặng không hiệu quả. Khởi động guest và kiểm tra cấu hình trình phân giải mà nó thực sự nhận được, vì thiết lập thủ công trong guest đè lên mọi thứ mà lớp NAT cung cấp. Hãy nhớ rằng chế độ trình phân giải của host cũng giả định đường DNS riêng của host là đường bạn muốn chia sẻ.
Lặp lại các kiểm tra đó qua một lần kết nối lại VPN
Lặp lại cả hai truy vấn trong guest, sau đó mở ứng dụng thật và để nó tự xác thực chứng chỉ. Kiểm tra chỉ theo địa chỉ hữu ích để cô lập việc phân giải tên và không tương đương với một phiên TLS hoạt động, nên đừng dừng ở ping. Sau đó, trong khung giờ được duyệt, ngắt và kết nối lại đường hầm của host rồi lặp lại một lần nữa. Hành vi chỉ giữ được ở lần kết nối đầu sau khi khởi động là vấn đề vòng đời cần báo cáo, không phải bí ẩn DNS để đuổi theo bằng trình phân giải khác.
Việc phân giải công cộng hoạt động không chứng minh các truy vấn nội bộ đã ở lại trên đường mà chính sách của bạn yêu cầu.
Khi chế độ trình phân giải của host không thay đổi gì, hãy đặt lại cấu hình đã ghi và giữ bốn quan sát: host trả về gì, guest trả về gì, chế độ adapter và trạng thái trình phân giải. Một máy chủ nội bộ không kết nối được, một bộ lọc loại trừ lưu lượng hypervisor và một ghi đè phía guest mỗi thứ cần một cách sửa khác nhau. Chuyển adapter sang cầu nối thay đổi thiết kế mạng và không phải đặt lại DNS.