Tailscale MagicDNS hoạt động, nhưng nslookup thất bại trên macOS
Ứng dụng macOS phân giải qua trình phân giải của hệ thống; nslookup đọc một tệp tĩnh. Hãy thử cùng một tên tailnet trên cả hai đường trước khi thay đổi bất kỳ cài đặt DNS nào.
Trên một máy Mac, ping phân giải tên máy tailnet trong khi nslookup trả về lỗi, và cả hai lệnh đều nói thật. Ứng dụng phân giải qua trình phân giải của hệ thống, thứ mà Tailscale cấu hình theo từng giao diện, trong khi nslookup và host đọc một tệp tĩnh mà MagicDNS không bao giờ chạm tới. Hai đường có thể khác nhau mà không mất một gói nào. Hãy xác định ứng dụng đang lỗi của bạn đã đi theo đường nào trước khi thay đổi bất kỳ cài đặt DNS nào.
Hai đường phân giải, hai câu trả lời khác nhau
Lưu lượng ứng dụng trên macOS đi qua trình phân giải của hệ thống, và các mục trình phân giải giới hạn theo giao diện quyết định máy chủ nào trả lời cho miền nào. Tailscale cài mục MagicDNS của nó ở đó, vì vậy Safari và ssh tìm thấy tên tailnet. Thay vào đó, nslookup, host và dig đọc /etc/resolv.conf hoặc lấy máy chủ từ dòng lệnh, và tệp đó thường vẫn nêu tên bộ định tuyến hoặc một máy chủ văn phòng. Một tên tailnet gửi tới tệp đó không có câu trả lời có thẩm quyền nào chờ nó, nên công cụ báo lỗi trong khi đường của hệ thống thành công.
Không công cụ nào hành xử sai. Chúng hỏi các máy chủ khác nhau, và chỉ một trong những máy chủ đó biết về tailnet của bạn.
Thử cùng tên đó qua đường của hệ thống
Dùng lời gọi tra cứu của hệ thống làm phép thử đầu tiên, rồi so sánh với một truy vấn nhắm trực tiếp vào trình phân giải MagicDNS. Giữ nguyên cách viết ở cả hai, kể cả miền tailnet, vì tên ngắn và tên đủ điều kiện hoàn toàn là những câu hỏi khác nhau với câu trả lời khác nhau.
dscacheutil -q host -a name nas-01.tailnet-a1b2.ts.net
scutil --dns
dig @100.100.100.100 nas-01.tailnet-a1b2.ts.net
Ba đầu ra đó trả lời ba câu hỏi: hệ thống trả về gì, trình phân giải nào được cấu hình cho miền nào, và bản thân MagicDNS biết gì. Một tên có trong đầu ra thứ hai và thứ ba nhưng không có trong đầu ra thứ nhất cho thấy cấu hình cục bộ chứ không phải tailnet.
Khi tên đã phân giải, hãy thử dịch vụ
Một câu trả lời DNS đúng chỉ chứng minh rằng một tên ánh xạ tới một địa chỉ. Dịch vụ phía sau có thể đã dừng, cổng có thể bị lọc bởi một quy tắc truy cập, và chứng chỉ có thể nêu một máy chủ khác với cái bạn đã nhập.
nc -vz nas-01.tailnet-a1b2.ts.net 445
ping -c 3 nas-01.tailnet-a1b2.ts.net
Hãy giữ nguyên văn bản lỗi gốc, vì cảnh báo chứng chỉ, hết thời gian kết nối và không tìm thấy tên đều dẫn tới những nơi khác nhau. Thay đổi máy chủ tên sẽ sửa cái thứ ba và lãng phí một buổi chiều cho hai cái đầu.
MagicDNS không thay thế DNS văn phòng
Một tên bên trong vùng văn phòng không phải tên thiết bị tailnet ngay cả khi cùng một máy khách đến được cả hai. Khi đích nằm sau một bộ định tuyến mạng con, máy khách cần split DNS cho vùng đó trỏ tới trình phân giải nội bộ, đây là một cài đặt khác với MagicDNS và được ghi tài liệu bên cạnh nó.
Miền tìm kiếm cũng quan trọng. Một tên ngắn chưa đủ điều kiện sẽ được thêm từng hậu tố đã cấu hình theo thứ tự, nên một máy tính xách tay vừa tham gia mạng khác có thể phân giải qua một hậu tố cũ. Hãy kiểm tra hậu tố nào đã được áp dụng trước khi tuyên bố vùng bị hỏng.
Khi cả hai đường thất bại, các dữ kiện của tailnet quyết định
Nếu tra cứu của hệ thống và truy vấn trực tiếp đều thất bại cho một thiết bị mà bạn tin là tồn tại, vấn đề nằm phía trên trình phân giải của Mac.
Xác nhận tên máy và miền tailnet trong bảng điều khiển quản trị, xác nhận thiết bị trực tuyến và đã được phê duyệt, và xác nhận cài đặt DNS của máy khách không bị tắt cục bộ. Một thiết bị ngoại tuyến giữ nguyên tên của nó và đơn giản là không có địa chỉ nào để trả về.
Sau đó hãy chọn theo bằng chứng. Một tên phân giải trên đường của hệ thống và thất bại trong nslookup là khác biệt về đường của công cụ; một tên phân giải trong khi dịch vụ từ chối là vấn đề truy cập hoặc chứng chỉ; một tên không phân giải ở đâu là vấn đề tailnet hoặc cấu hình DNS. Ba chủ sở hữu, ba bản sửa, và tài liệu MagicDNS đề cập các đặc thù macOS của trường hợp đầu tiên.