Bạn viết một dòng với địa chỉ trình phân giải và một miền của công ty, mong đợi chỉ các tên trong miền đó dùng trình phân giải của đường hầm. Trên ứng dụng Apple, giờ mọi tên đều đi đến đó, và các tên ngắn trong miền cũng được phân giải. Dòng này làm hai việc riêng biệt, và chỉ một trong số đó liên quan đến việc đường hầm xử lý những truy vấn nào. Việc còn lại là một tiện ích gõ phím đã được một cách đọc mong ước nâng lên thành chính sách.

Dòng DNS được phân tách thành gì

Ứng dụng đọc mục này như một danh sách và phân loại từng mục theo hình dạng. Bất cứ thứ gì trông giống địa chỉ sẽ trở thành máy chủ DNS; bất cứ thứ gì trông giống miền sẽ trở thành hậu tố tìm kiếm. Cả hai đều vào cài đặt đường hầm, nhưng ở các trường khác nhau. Một dòng minh họa cho đường hầm mang trình phân giải riêng và một miền nội bộ trông như sau.

DNS = 10.24.8.53, lab.internal.example

Địa chỉ cung cấp trình phân giải. Miền cung cấp một hậu tố cho phép ứng dụng gõ tên ngắn và hệ thống thêm phần còn lại trước khi hỏi. Không cái nào nói gì về việc giới hạn trình phân giải trong miền đó, và đó chính là phần mọi người mong đợi mà không có được. Chỉ một trường trên nền tảng có thể diễn đạt giới hạn đó, và không phải trường này.

Hai trường của Apple, hai công việc khác nhau

Apple thể hiện sự khác biệt trong đối tượng cài đặt DNS của mình. Danh sách miền tìm kiếm được ghi là danh sách dùng để định tính tên máy chủ một nhãn: gõ một tên máy chủ trần và hệ thống có thể thêm lần lượt từng hậu tố. Đó là quy tắc hoàn thành, không phải quy tắc định tuyến. Không có gì trong danh sách đó quyết định máy chủ nào được hỏi.

Danh sách miền khớp là một thuộc tính khác. Nó quyết định không gian tên nào dùng bộ cài đặt DNS này, và một mục trống nghĩa là miền mặc định chứ không phải một hậu tố cụ thể. bộ tạo cài đặt đường hầm gói trên ứng dụng Apple theo mô hình đó. Nó đặt các hậu tố tìm kiếm đã phân tích vào danh sách tìm kiếm, và khi có máy chủ, đặt danh sách khớp thành chuỗi rỗng. Kết quả là một trình phân giải đường hầm trả lời mọi thứ hệ thống gửi đến, cộng với một hậu tố giúp ích cho tên ngắn.

Vậy một miền trên dòng đó không phải là bộ chọn không gian tên. Thêm một miền nữa không thu hẹp những truy vấn đường hầm dùng, và xóa nó cũng không mở rộng chúng. Điều duy nhất thay đổi là có bao nhiêu tên ngắn được hoàn thành.

Vì sao mọi tên vẫn đến được trình phân giải đường hầm

Với mục khớp trống, đường hầm là trình phân giải ứng viên cho các tên thông thường, không chỉ cho miền công ty. Trong cấu hình đường hầm đầy đủ, điều này thường ít quan trọng, vì mọi lưu lượng dù sao cũng ở trong đường hầm. Trong đường hầm chia tách, điều này rất quan trọng. Các tên công khai giờ có thể được phân giải bởi một trình phân giải chỉ giữ vùng riêng, và sự cố trông như VPN hỏng khi thực ra đó là trình phân giải chỉ trả lời một phần không gian tên. Đường hầm vẫn ổn, các truy vấn đi ra, và câu trả lời quay về trống.

Có hai cách sửa và chúng là những quyết định khác nhau. Hãy biến trình phân giải đường hầm thành trình phân giải đầy đủ chuyển tiếp các tên công khai qua đường đã được phê duyệt, hoặc ngừng gửi tên công khai đến đó bằng cách thay đổi cấu hình ứng dụng thay vì danh sách miền. Cách đầu giữ mọi truy vấn trên đường hầm và tin cậy thượng nguồn. Cách thứ hai giữ một số truy vấn cục bộ và chấp nhận rằng các tên riêng có thể ngừng phân giải khi đường hầm tắt.

DNS chia tách thực sự cần gì

Một chính sách trình phân giải giới hạn trong không gian tên cần một ứng dụng cho phép bạn diễn đạt nó: khớp miền trên các nền tảng Apple, hoặc một cài đặt tương đương trong sản phẩm bạn dùng. Một trường cấu hình chỉ nhận máy chủ và hậu tố không thể diễn đạt nó, dù được chấm câu thế nào. Một hồ sơ có thể mang chính sách vì nó mô tả cấu hình được quản lý chứ không phải gợi ý lúc kết nối. Nó có thể nêu tên miền, các máy chủ và điều gì nên xảy ra khi miền đó không thể truy cập. Đó là khác biệt giữa một cài đặt và một hợp đồng.

Trên các thiết bị Apple được quản lý, điều này thường được cung cấp qua một hồ sơ cấu hình mang cài đặt DNS riêng cho miền. Đây là cơ chế khác với tệp cấu hình WireGuard, và cả hai chỉ có thể cùng tồn tại nếu ứng dụng tôn trọng hồ sơ. Hãy kiểm tra xem ứng dụng của bạn thực sự gọi trường đó là gì trước khi cho rằng hai sản phẩm hành xử giống nhau. Một tập lệnh có wg-quick trên Mac và ứng dụng WireGuard trên iPhone đọc những dòng tương tự và cài đặt chúng qua các lớp khác nhau.

Đọc cài đặt đã cài, không phải tệp cấu hình

Trên Mac, bạn có thể kiểm tra hệ thống đã đi đến đâu, điều này mang lại nhiều thông tin hơn đọc lại tệp bạn đã viết. Danh sách trình phân giải cho thấy máy chủ nào được cấu hình cho miền nào, và các truy vấn có phạm vi cho thấy cái nào thắng. Một ứng dụng làm hỏng dòng sẽ cho thấy điều đó ở đây chứ không phải trong tệp bạn đã viết. Trên iOS không có dòng lệnh tương đương, nên bằng chứng ở đó là một kết quả: một tên riêng được phân giải qua đường hầm, và một tên công khai mà câu trả lời của nó tiết lộ trình phân giải nào đã trả lời.

scutil --dns | grep -A3 resolver
networksetup -getdnsservers Wi-Fi

Hai lệnh này in cấu hình trình phân giải hiện tại và các máy chủ DNS của dịch vụ đang hoạt động. Nếu trình phân giải đường hầm xuất hiện như trình phân giải mặc định không có giới hạn miền, cấu hình đang làm đúng điều ứng dụng yêu cầu. Hãy sửa điều đó bằng cách thay đổi cơ chế, không phải bằng cách thêm một hậu tố thứ hai và hy vọng hành vi sẽ thay đổi.

Bài viết liên quan