Máy chủ tên sai được đặt bởi độ phân giải và NetworkManager


34

Máy chủ DNS của tôi là 192.168.1.152.

DNS này được cung cấp cho khách hàng bằng DHCP. Các máy khách windows trên mạng LAN của tôi phân giải đúng tên bằng DNS đó, nhưng máy ảo Ubuntu của tôi thì không.

VM được thiết lập với mạng cầu nối và đang được cung cấp đúng máy chủ DNS, nhưng tên máy chủ cục bộ của tôi không được giải quyết bởi nslookup hoặc trình duyệt.

Đây là một nslookuptrong những tên miền địa phương của tôi:

# nslookup unraid.local
Server:     127.0.0.53
Address:    127.0.0.53#53

** server can't find unraid.local: SERVFAIL

Đây là những gì cần giải quyết bằng cách sử dụng máy chủ DNS của tôi:

# nslookup unraid.local 192.168.1.152
Server:     192.168.1.152
Address:    192.168.1.152#53

Name:   unraid.local
Address: 192.168.1.152

/etc/resolv.conf có một máy chủ tên sai:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about the actual nameservers.

nameserver 127.0.0.53

Tôi chạy lệnh đó. Trong Máy chủ DNS, thật khó hiểu, nó chỉ định đúng máy chủ (và cổng mặc định của tôi).

root@ubuntu:~# systemd-resolve --status
Global
          DNSSEC NTA: 10.in-addr.arpa
                      16.172.in-addr.arpa
                      168.192.in-addr.arpa
                      17.172.in-addr.arpa
                      18.172.in-addr.arpa
                      19.172.in-addr.arpa
                      20.172.in-addr.arpa
                      21.172.in-addr.arpa
                      22.172.in-addr.arpa
                      23.172.in-addr.arpa
                      24.172.in-addr.arpa
                      25.172.in-addr.arpa
                      26.172.in-addr.arpa
                      27.172.in-addr.arpa
                      28.172.in-addr.arpa
                      29.172.in-addr.arpa
                      30.172.in-addr.arpa
                      31.172.in-addr.arpa
                      corp
                      d.f.ip6.arpa
                      home
                      internal
                      intranet
                      lan
                      local
                      private
                      test

Link 2 (ens33)
      Current Scopes: DNS LLMNR/IPv4 LLMNR/IPv6
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
         DNS Servers: 192.168.1.152
                      192.168.1.1

Tôi không muốn "mã cứng" IP của máy chủ DNS trong tệp cấu hình vì tôi sẽ không thể giải quyết khi tôi thay đổi mạng.

Làm cách nào tôi có thể nhận được độ phân giải và Trình quản lý mạng để tự động đặt IP của máy chủ DHCP /etc/resolv.conf?

Câu trả lời:


37

Hãy thử chỉnh sửa /etc/systemd/resolved.conf, thêm máy chủ DNS mong muốn của bạn:

thay đổi điều này:

[Resolve]
#DNS=

để làm điều này (nhưng sử dụng cái bạn muốn - đây là một ví dụ):

[Resolve]
DNS=192.168.1.152

sau đó, khởi động lại dịch vụ:

service systemd-resolved restart

Và khi bạn kiểm tra trạng thái bạn sẽ thấy

$ systemd-resolve --status
Global
         DNS Servers: 192.168.1.152

      DNSSEC NTA: 10.in-addr.arpa
                  16.172.in-addr.arpa
                  168.192.in-addr.arpa
                  17.172.in-addr.arpa
                  18.172.in-addr.arpa
                  19.172.in-addr.arpa

Đây là systemd-giải quyết --status sau khi thay đổi /etc/systemd/resolve.conf pastebin.com/AeUFQkyB Trình duyệt vẫn không thể giải quyết tên.
FireSpore

12
systemd bị hỏng DHCP cho máy chủ biết DNS nên là gì, (và một loạt các cài đặt mạng khác) mà bạn không cần phải thay đổi bất kỳ tệp nào trên máy chủ để điều này hoạt động.
teknopaul

4
Có vẻ không tối ưu, bạn sẽ phải làm điều này mỗi khi thay đổi máy chủ / mạng DNS
Victor

1
Bạn sẽ cần phải cấu hình lại mỗi khi IP DNS thay đổi (ví dụ trên các mạng khác nhau).
Victor

34

Được biết lỗi systemd .

Giải pháp tạm thời không cần cấu hình lại nếu IP DNS thay đổi:

sudo rm -f /etc/resolv.conf
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
reboot

2
Giải pháp này đã hoạt động được phần nào, các lệnh máy chủ và nslookup giải quyết đúng tên, nhưng wget và trình duyệt thì không
FireSpore

1
Điều này là chính xác ... lỗi hiện tại là liên kết /etc/resolv.confđến từ /run/systemd/resolve/stub-resolv.confbollox, cần /run/systemd/resolve/resolv.conf lưu ý rằng /etc/resolv.confnó không thực sự tồn tại trong cả hai trường hợp
Mr Heelis

@FireSpore: có pinghoạt động không? hostnslookupgiải quyết tên máy chủ khác với pinghoặc wget. Bạn có thể cần phải tìm kiếm /etc/nsswitch.confmột solutioin.
HongboZhu

9

Cuối cùng tôi đã có một giải pháp cho vấn đề này cho Ubuntu 17.10. Theo mặc định, phiên bản Ubuntu này sử dụngsystemd-resolved , mà tôi hy vọng sẽ ổn định cho các phiên bản tiếp theo.

Để sử dụng dns tùy chỉnh thay vì bộ đệm được phân giải hệ thống cục bộ, hãy làm như sau:

  1. thêm máy chủ tên mới. Chỉnh sửa tập tin /etc/systemd/resolved.confdưới dạng sudoer. Ở đây tôi đã nhận xét mục DNS và đặt dns của tôi [Resolve] DNS=10.96.0.10 8.8.8.8 8.8.4.4

  2. hủy symlink thực tế để /etc/resolv.conf

  3. tạo một liên kết tượng trưng mới sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
  4. khởi động lại dịch vụ sudo service systemd-resolved restart
  5. khởi động lại trình quản lý mạng sudo systemctl restart networking

Và bây giờ nếu bạn đào một tên do add dns của bạn cung cấp, bạn sẽ thấy bản ghi được giải quyết dig nexus.default.svc.cluster.mydomain

Bước cuối cùng là cập nhật thứ tự độ phân giải /etc/nsswitch.conf, bằng cách đặt dns trước mdns4_minimal

hosts           files dns mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] myhostname

1
Bạn sẽ cần phải cấu hình lại mỗi khi IP DNS thay đổi (ví dụ trên các mạng khác nhau).
Victor

Victor bạn có một giải pháp tốt nhất? điều này cũng tương tự nếu bạn sử dụng cấu hình mạng tĩnh
Fabio Fumarola 16/2/18

Câu trả lời này hoạt động cho cả cấu hình tĩnh và cấu hình động: Askubfox.com/a/974482 4323617
Victor

cảm ơn bạn, giải pháp tôi đã chỉ ra là tĩnh. Tôi đồng ý
Fabio Fumarola

Điều này chỉ làm việc cho tôi trên bản cài đặt mới 18.04
JamesCW

1

Tôi tập hợp một tập lệnh xoay quanh vấn đề Netplan hiện không hỗ trợ khả năng thay thế máy chủ DNS được cung cấp DHCP và thứ tự tìm kiếm tên miền. Nó tạo tệp yaml Netplan và cấu hình systemd-phân giải để hoạt động như mong đợi.

################## Start Netplan config (renderer: NetworkManager)
#  Some useful commands for customisation
# NetConn=$(nmcli device show|grep GENERAL.CONNECTION|head -n1|awk '{print $2}')
# IP=$(nmcli device show|grep IP4.ADDRESS|head -n1|awk '{print $2}')
# GATEWAY=$(nmcli device show|grep IP4.GATEWAY|head -n1|awk '{print $2}')
# sed -i 's/renderer: networkd/renderer: NetworkManager/' //etc/netplan/01-netcfg.yaml
######################################
systemctl start NetworkManager
NIC=$(nmcli device show|grep GENERAL.DEVICE|head -n1|awk '{print $2}')

#####   create Netplan yaml config file
cat >/etc/netplan/01-netcfg.yaml <<EOF 
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
  network:
   version: 2
   renderer: NetworkManager
   ethernets:
EOF
echo "    ${NIC}:" >> /etc/netplan/01-netcfg.yaml
cat >>/etc/netplan/01-netcfg.yaml <<EOF
      dhcp4: yes
      nameservers:
        search: [abc.domain.edu, def.domain.edu]
        addresses: [10.10.11.22, 10.10.11.23]

EOF

#work around DNS resolv bug
systemctl stop systemd-resolved
sed -i 's/#DNS=/DNS=10.10.11.22 10.10.11.23/' /etc/systemd/resolved.conf
sed -i 's/#Domains=/Domains=abc.domain.edu def.domain.edu' /etc/systemd/resolved.conf
systemctl start systemd-resolved
systemctl restart NetworkManager
netplan apply
reboot
############### End Netplan Config

1

Giải pháp hiệu quả với tôi được đăng ở đây trên blog của tôi

Sử dụng trình chỉnh sửa nano để chỉnh sửa 2 tệp này

nano /etc/resolv.conf
nano /etc/resolvconf/resolv.conf.d/head

Thêm máy chủ DNS bạn muốn sử dụng

nameserver 9.9.9.9
nameserver 127.0.0.1

Sau đó khởi động lại dịch vụ

service systemd-resolved restart

Kiểm tra lần cuối:

cat /etc/resolv.conf

Làm nslookup

nslookup google.com 

Tôi chỉ sử dụng cái này và nó đã khắc phục sự cố trên máy tính xách tay của tôi ở nhà, nhưng một lúc nào đó trong tương lai khi tôi ra khỏi mạng gia đình tôi có thể thấy rằng nó sẽ gây ra sự cố, bởi vì máy chủ dns chính và phụ vẫn sẽ là nhà của tôi máy chủ với địa chỉ lan của họ.


2
Bạn sẽ cần phải cấu hình lại mỗi khi IP DNS thay đổi (ví dụ trên các mạng khác nhau).
Victor

nó không thanh lịch, nhưng nó hoạt động đôi khi phá hoại giờ đi ngủ của tôi.
Rodrigo Ferrari

Chỉnh sửa /etc/resolv.confkhông hoạt động vì tập tin sẽ bị ghi đè trong quá trình systemd-resolvedkhởi động lại. Chỉ cần chỉnh sửa /etc/systemd/resolved.conf. Xem câu trả lời của tôi ở đây: askubfox.com/questions/977243/ubfox-17-10-disable-netplan/ mẹo
EnzoR

1

Của bạn /etc/resolv.conf không phải là vấn đề. systemd-resolvedchỉ mặc định là không được cấu hình, vì vậy nó thất bại trong tất cả các tra cứu. Vui lòng nói về Unconfigured vs A Reasonable Default.

Tự thêm máy chủ tên vào systemd-resolved. (chỉnh sửa cho mỗi bình luận Olorin của bên dưới để thêm mkdir, con đường đúng /etckhông /lib, để sống sót cập nhật hệ thống)

sudo mkdir -p /etc/systemd/resolved.conf.d
sudo nano /etc/systemd/resolved.conf.d/00-my-dns-server-is.conf

Thêm vào:

[Resolved]
Cache=yes
DNS=192.168.1.152

Sau đó...

sudo systemctl daemon-reload

systemd-resolvedlà thông minh, nhưng, không được cấu hình, bởi vì, những người bảo trì gói, nó chỉ LOOKS ngu ngốc vì những người bảo trì gói không tin vào Mặc định hợp lý. Chúng tôi có thể đặt 13 máy chủ gốc internet vào đó hay còn gọi là "djb way" hoặc 10 máy chủ opennic: https://pastebin.com/JBfYVVtG hoặc ba máy chủ opennic nhanh nhất, được đo bằng namebench. Cộng với máy chủ tên ISP, chắc chắn. Cộng với Google, chắc chắn. systemd-resolvedkhông phải là vấn đề Tôi là vấn đề.


Mặc dù bạn có thể không muốn chỉnh sửa một tệp /usr/lib- những tệp đó có thể sẽ bị ghi đè khi nâng cấp gói. Tôi nghĩ rằng một tập tin tương ứng ở đâu đó /etc/systemdlà cách để đi (nó đã /etc/systemd/resolved.confsẵn sàng để được chỉnh sửa bởi quản trị viên).
Olorin

1
man giải quyết.conf.d, với d, có /etc/systemd/resolve.d là nơi. Tôi nhận thấy rằng chúng ta thường phải mkdir /etc/[path[.d. bob @ laptop l /etc/systemd/resolve.conf.d ls: không thể truy cập '/etc/systemd/resolve.conf.d': Không có tệp hoặc thư mục như vậy
BobDodds

0

Trên hệ thống của tôi, tôi tìm thấy một symlink xấu: /etc/resolv.conflà một symlink trỏ đến/run/systemd/resolve/stub-resolv.conf

Tệp này chỉ chứa một dòng:

nameserver 127.0.0.53#53

Do đó, việc tra cứu DNS của mạng cục bộ thường bị thiếu.

Vì vậy, thay vào đó tôi đã thay đổi /etc/reolv.conf để chỉ đến/run/systemd/resolve/resolv.conf

và bây giờ hoạt động chính xác.


0

Thật lạ nhưng giải pháp duy nhất phù hợp với tôi trên Ubuntu 18.04 là giải pháp tôi tìm thấy ở đây :

Đầu tiên, thay đổi /etc/resolv.confbằng cách đặt máy chủ tên mong muốn :

# nano /etc/resolv.conf

Đặt, ví dụ,

nameserver 8.8.8.8

Và sau đó làm

# chattr +i /etc/resolv.conf

Điều này bảo vệ /etc/resolv.conftập tin để không ai có thể sửa đổi nó kể cả người dùng root.


-3

Tôi có cùng một vấn đề. Mỗi lần khởi động lại, sẽ không có gì giải quyết. Tôi đã gỡ cài đặt mọi thứ và cài đặt lại khoảng 50 lần. Nó chỉ đơn giản là bị hỏng.

Vì vậy, cách khắc phục là .... "chỉ cần áp dụng một vài cài đặt mỗi khi bạn khởi động máy tính của mình, điều này cho phép 90% tên máy chủ giải quyết nhưng việc cập nhật và nâng cấp apt-get sẽ không thành công ngẫu nhiên mà không có lý do"

mèo /etc/systemd/resolve.conf

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.
#
# Entries in this file show the compile time defaults.
# You can change settings by editing this file.
# Defaults can be restored by simply deleting this file.
#
# See resolved.conf(5) for details

[Resolve]
#DNS=
#FallbackDNS=
#Domains=
#LLMNR=yes
#MulticastDNS=yes
#DNSSEC=no
#Cache=yes
#DNSStubListener=udp

Khi sử dụng Ubuntu 17.10 Desktop, bạn phải chỉnh sửa một tệp có nội dung KHÔNG CHỈNH SỬA FILE BLAH BLAH BLAH NÀY

Vâng, đó là cách DUY NHẤT nó hoạt động ~!

root@nas:~# cat /etc/resolv.conf
# This file is managed by man:systemd-resolved(8). Do not edit.
#
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about the actual nameservers.
nameserver 8.8.8.8

Vì vậy, loại bỏ IP 127.0.0.53 làm máy chủ tên và nhập một cái khác, ví dụ google. Có vẻ như địa chỉ IP DNS thực tế của tôi không giải quyết tên máy chủ (mặc dù nó hoạt động trên 10 máy và thiết bị khác trong nhà), nhưng google hoạt động tốt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.