Sau khi nâng cấp cài đặt 16.04 lên 16.10, tôi gặp sự cố với DNS.
Đầu tiên tôi gặp vấn đề một vài lần khi kết nối với WiFi, trong khi nó hoạt động trên ethernet. Bây giờ nó dường như cũng hoạt động trên WiFi. Không chắc chắn tại sao, và nếu nó liên quan đến vấn đề tôi gặp phải bây giờ:
Khi kết nối với máy chủ VPN bằng Cisco Anyconnect VPN , nó sẽ thêm một dòng trong '/etc/resolv.conf' . Tôi hiểu rằng Ubuntu hiện đang sử dụng phân giải systemd và trang man nói rằng có ba chế độ khác nhau để xử lý /etc/resolv.conf. /Etc/resolv.conf của tôi không phải là một liên kết tượng trưng và không liệt kê 127.0.0.53 dưới dạng máy chủ DNS, theo như tôi hiểu hệ thống đã phân giải nên "đọc nó cho dữ liệu cấu hình DNS". Tuy nhiên, nó dường như không quan tâm đến nó.
đào
Điều kỳ lạ (đối với tôi) là dig host.customer.tld
, trả về một câu trả lời hay với PHẦN TRẢ LỜI hiển thị ip của máy chủ được yêu cầu và nó đề cập đến máy chủ dns được thêm vào /etc/resolv.conf bởi vpn client là SERVER. Khi kết nối vpn bị vô hiệu hóa tôi không nhận được câu trả lời. Tức là đọc /etc/resolv.conf .
ping
Mặt khác, trình duyệt không truy cập /etc/resolv.conf và không thể giải quyết tên máy chủ. Nhân tiện, không phải là ping / curl.
bước sóng
Tôi tìm thấy một bài viết liên quan , và đã thử chạy
nmcli device show <interfacename> | grep IP4.DNS
nhưng nó liệt kê không có dns cho thiết bị cscotun0. (Tuy nhiên, nó cũng không có trong 16.04.) Ngoài ra, nmcli liệt kê máy chủ dhcp của tôi (bộ định tuyến của tôi) dưới dạng máy chủ IP4.DNS cho các kết nối eth / wlan của tôi. Sử dụng dig @192.168.0.1 xxx
cho bất kỳ miền công cộng hoạt động tốt.
cấu hình
Có một số máy chủ DNS khác được liệt kê trong /run/systemd/resolve/resolv.conf:
nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 2001:4860:4860::8888
# Too many DNS servers configured, the following entries may be ignored.
nameserver 2001:4860:4860::8844
Chúng không được phục vụ bởi máy chủ DHCP của tôi. tệp /etc/systemd/resolve.conf chỉ chứa các dòng nhận xét, ngoại trừ phần tiêu đề:
[Resolve]
#DNS=
#FallbackDNS=8.8.8.8 8.8.4.4 2001:4860:4860::8888 2001:4860:4860::8844
Man page của resolved.conf nói rằng
DNS = Danh sách địa chỉ IPv4 và IPv6 được phân tách bằng dấu cách để sử dụng làm máy chủ DNS hệ thống. ... Vì lý do tương thích, nếu cài đặt này không được chỉ định, các máy chủ DNS được liệt kê trong /etc/resolv.conf được sử dụng thay thế, nếu tệp đó tồn tại và bất kỳ máy chủ nào được định cấu hình trong đó. Cài đặt này mặc định cho danh sách trống.
FallbackDNS = Danh sách các địa chỉ IPv4 và IPv6 được phân tách bằng dấu cách để sử dụng làm máy chủ DNS dự phòng. Bất kỳ máy chủ DNS trên mỗi liên kết nào có được từ systemd-networkd.service (8) đều được ưu tiên so với cài đặt này, cũng như bất kỳ máy chủ nào được đặt qua DNS = ở trên hoặc /etc/resolv.conf. Do đó, cài đặt này chỉ được sử dụng nếu không có thông tin máy chủ DNS nào khác được biết. Nếu tùy chọn này không được cung cấp, thay vào đó , một danh sách các máy chủ DNS được biên dịch sẽ được sử dụng.
Có vẻ như dự phòng kết thúc bằng /run/systemd/resolve/resolv.conf trong trường hợp của tôi.
EDIT: Tôi không chắc vấn đề là gì và thành thật mà nói tôi vẫn không biết chính xác nó hoạt động như thế nào, nhưng ít nhất hóa ra giải pháp trong trường hợp của tôi là vô hiệu hóa systemd-resolved
dịch vụ. Tôi nghĩ rằng dịch vụ là bắt buộc, đó là thành phần cung cấp dịch vụ DNS cho tất cả các ứng dụng cục bộ, nhưng rõ ràng có một thứ khác trong đó thực hiện công việc đó.