OpenVPN đã đẩy một máy chủ DNS nhưng Linux phớt lờ nó
Máy chủ DNS được đẩy có trong nhật ký, đường hầm đang hoạt động và các tên nội bộ vẫn thất bại. Kiểm tra liên kết của bộ phân giải và chọn một chủ sở hữu cho kết nối.
Máy chủ DNS được đẩy có trong nhật ký, đường hầm đang hoạt động và các tên nội bộ vẫn thất bại. Bản thân việc đẩy không có gì hỏng; thiết lập đã đến và dừng lại ở đó. Một tùy chọn DNS được đẩy là thông điệp gửi cho máy khách, không phải chỉ thị cho bộ phân giải của hệ điều hành, và chính việc bàn giao giữa hai bên là nơi phần lớn các trường hợp này kết thúc. Năm bước kiểm tra, theo thứ tự, tìm ra việc bàn giao đã không xảy ra.
Kiểm tra một: kết nối bắt đầu như thế nào
Chủ sở hữu kết nối quyết định ai có thể áp dụng thiết lập của bộ phân giải. Một lệnh openvpn trực tiếp từ shell không sở hữu gì ngoài tiến trình của chính nó, trong khi một unit systemd, NetworkManager hoặc ứng dụng khách của nhà cung cấp mỗi bên có cách công bố DNS riêng. Hãy đọc danh sách tiến trình và tên unit trước khi giả định bất kỳ điều nào trong số đó.
Một tiến trình dòng lệnh không tự động là kết nối NetworkManager, và một kết nối NetworkManager không tự động là thứ đã ghi resolv.conf. Hai giả định đó giải thích phần lớn số giờ bị mất trong cuộc điều tra này. Hãy hỏi thành phần nào sẽ công bố DNS cho giao diện mà bạn thực sự nhìn thấy.
Ghi lại chủ sở hữu trước khi tiếp tục. Mọi bước kiểm tra sau đó đều phụ thuộc vào nó.
Kiểm tra hai: liên kết của bộ phân giải thực sự giữ gì
Trên máy chủ systemd-resolved, resolvectl status liệt kê từng liên kết cùng máy chủ DNS và tên miền của nó. Tìm liên kết của đường hầm và đọc các mục của nó, và đừng giả định giao diện tên là tun0, vì việc đánh số theo thứ tự tạo ra. Nếu địa chỉ được đẩy không có trên liên kết, thì việc bàn giao đã thất bại chứ không phải truy vấn.
Nếu địa chỉ có mặt, câu hỏi tiếp theo là liên kết đó nhận những tên miền nào. Một liên kết không có danh sách tên miền chỉ trả lời những tên được hỏi trực tiếp, và đó hiếm khi là điều một triển khai split-DNS muốn. Chỉ riêng địa chỉ là cần nhưng chưa đủ.
So sánh tên liên kết trong đầu ra của bộ phân giải với tên giao diện trong nhật ký VPN trước khi kết luận bất cứ điều gì. Sự khác biệt ở đó thường có nghĩa dòng nhật ký đến từ một tiến trình khác.
Kiểm tra ba: không gian tên có chọn liên kết đó không
Bộ phân giải có thể giữ máy chủ đúng mà vẫn không được hỏi đến. Tên miền theo từng liên kết quyết định truy vấn nào đi đến liên kết nào, và nếu không có tên miền định tuyến thì không gian tên riêng quay về điều mà liên kết mặc định nói. Đó là lý do resolvectl query có thể thành công cho tên nội bộ trong khi ứng dụng vẫn thất bại. Ứng dụng có thể đang dùng một đường đi bộ phân giải hoàn toàn khác.
Kiểm tra việc gán tên miền, không chỉ địa chỉ máy chủ. Một tên miền được viết là ~corp.example là tên miền định tuyến, và dấu ngã thay đổi cách khớp tên.
Nếu ứng dụng có bộ phân giải riêng, hãy thử bằng chính cơ chế mà nó dùng thay vì công cụ của hệ thống. Một công cụ truy vấn bỏ qua bộ phân giải hệ thống sẽ thành công bất kể trạng thái của liên kết.
Kiểm tra bốn: một chủ sở hữu, không phải hai
Nếu NetworkManager đã quản lý VPN và trạng thái của bộ phân giải, việc thêm một script hook không liên quan tạo ra những người ghi cạnh tranh. Hook mà gói cung cấp cho systemd-resolved là một tích hợp được hỗ trợ, và nó mong đợi một vòng đời cụ thể: script-security 2, một đường dẫn up, up-restart, một đường dẫn down và down-pre. Những tùy chọn đó khiến việc đăng ký và gỡ bỏ diễn ra đúng thời điểm thay vì chỉ ở lần kết nối đầu tiên.
Dùng đường dẫn đã cài từ gói thay vì một đường dẫn minh họa sao chép từ hướng dẫn. Quyền cũng quan trọng, vì hook chạy sau khi quyền hạn bị hạ.
Việc sửa một script bộ phân giải của bản phân phối để đổi đích đầu ra ghi lại cách né tránh của một máy chủ. Đó không phải là sửa chữa chung.
Kiểm tra năm: cùng kết quả sau khi kết nối lại
Kết nối lại và đọc lại liên kết. Một đăng ký xuất hiện một lần rồi biến mất ở lần chuyển tiếp sau chính là lỗi mà toàn bộ danh sách kiểm tra này tồn tại để bắt. Hãy thử sau khi tạm treo máy, sau khi buộc kết nối lại và sau khi khởi động lại dịch vụ bộ phân giải. Mỗi lần chuyển tiếp kiểm tra một giả định khác về thứ tự.
Chỉ khi cả năm bước kiểm tra đều đạt khi kết nối lại, bạn mới có thể nói rằng các thiết lập được đẩy đang được dùng. Mọi thứ trước đó chỉ là ảnh chụp của một khoảnh khắc may mắn.