OpenVPN đẩy DNS, nhưng trình phân giải của bạn có thể không bao giờ thấy nó
Giá trị DNS trong nhật ký máy khách không chứng minh rằng trình phân giải của hệ điều hành dùng nó. Hãy kiểm tra chủ sở hữu, rồi thử một tên nội bộ.
Nhật ký máy khách hiển thị máy chủ DNS được đẩy, đường hầm đã kết nối, và một tên nội bộ vẫn không phân giải được. Bản thân việc đẩy không có gì hỏng. Tùy chọn đã đến và trình phân giải của hệ điều hành chưa bao giờ dùng nó, vì trên hầu hết máy khách Unix, OpenVPN chuyển giá trị và để ứng dụng cho nền tảng.
Triệu chứng: nhật ký hiển thị DNS và các tên vẫn thất bại
OpenVPN dhcp-option mang thông tin DNS và miền, và máy khách ghi lại những gì nhận được. Ở một số bản triển khai, máy khách áp dụng các cài đặt đó bên trong; ở những bản khác, nó xuất chúng cho một tập lệnh tích hợp hoặc dịch vụ mạng. Dòng nhật ký chỉ mô tả nửa đầu của câu chuyện. Nửa sau diễn ra ở nơi máy khách không kiểm soát. Đó thường là nơi lỗi trú ngụ.
Vì vậy đường hầm đã kết nối và tên nội bộ thất bại thường cùng tồn tại. Giá trị có mặt, người dùng thiếu hoặc cấu hình sai, và trình phân giải lặng lẽ tiếp tục dùng máy chủ công cộng mà nó đã dùng trước khi kết nối.
Nhận được không phải là đã áp dụng
Máy khách có thể ghi lại giá trị DNS được đẩy trong khi trình phân giải hệ thống vẫn thuộc về một dịch vụ khác. Trình duyệt cũng có thể có chính sách DNS mã hóa riêng vượt qua hoàn toàn trình phân giải hệ thống, tạo ra tình huống đáng nhớ khi một ứng dụng phân giải tên nội bộ còn ứng dụng kia thì không.
Hãy kiểm tra tích hợp được hỗ trợ của bản triển khai thay vì cho rằng mọi máy khách Unix đều ghi lại cùng một tệp. Chính giả định đó khiến người ta sửa một cấu hình trình phân giải mà không gì đọc đến.
Tìm chủ sở hữu trình phân giải theo từng nền tảng
Trên Windows, bảng chính sách phân giải tên có thể hướng các hậu tố cụ thể tới các máy chủ cụ thể, và máy khách VPN có thể cài quy tắc ở đó. Hãy kiểm tra chính sách, không chỉ danh sách DNS của bộ điều hợp. Trên Linux, NetworkManager hoặc systemd-resolved có thể sở hữu cấu hình, và việc cái nào sở hữu sẽ quyết định những gì được giữ lại khi kết nối lại.
Đọc trạng thái thực tế bằng công cụ thực sự trả lời truy vấn: resolvectl query internal.example.net trên máy chủ systemd-resolved, hoặc tương đương của nền tảng. Sau đó so sánh câu trả lời đó với máy chủ DNS mà nhật ký máy khách cho là đã đẩy.
Tránh chạy nhiều dịch vụ ghi đè cài đặt trình phân giải mà không phối hợp. Hai chủ sở hữu tạo ra kết quả trông chập chờn, và mỗi lần kết nối lại dường như sửa hoặc làm hỏng nó một cách ngẫu nhiên.
Tập lệnh và foreign_option
OpenVPN xuất các tùy chọn được đẩy tới tập lệnh qua các biến có tên foreign_option_N, và tập lệnh có thể dịch chúng thành lệnh của trình phân giải. Cách bố trí đó là tích hợp được hỗ trợ, không phải hành vi tự động, và phải được cài đặt và gọi trên máy khách.
Nếu bạn dựa vào một tập lệnh, hãy ghi lại việc thực thi và trạng thái thoát của nó. Tập lệnh chạy nhưng thất bại im lặng để lại triệu chứng giống như không có tập lệnh, và khó nhận ra hơn vì cấu hình trông đầy đủ. Hãy kiểm tra đầu ra của tập lệnh, không phải tệp tập lệnh. Một tệp tồn tại không phải là tập lệnh đã chạy.
Thử tên, không phải nhật ký
Sau khi kết nối, hỏi máy khách về một tên máy chủ chỉ nội bộ, rồi hỏi một tên công cộng, rồi kiểm tra máy chủ nào đã trả lời. Trong một thiết lập hoạt động, hai câu trả lời đến từ những nơi khác nhau, và cả hai phải khớp với thiết kế.
Nếu tên phân giải được nhưng dịch vụ thất bại, hãy chuyển sang định tuyến và truy cập ứng dụng thay vì đổi DNS lần nữa. Hướng dẫn OpenVPN mô tả dhcp-option và môi trường tập lệnh; hãy dùng nó để xác nhận máy khách của bạn phải áp dụng gì trước khi sửa một tệp trình phân giải khác.