resolvconfおよびNetworkManagerによって設定された間違ったネームサーバー


34

私のDNSサーバーは192.168.1.152です。

このDNSは、DHCPによってクライアントに提供されます。LAN上のWindowsクライアントはそのDNSを使用して名前を適切に解決しますが、Ubuntu VMは解決しません。

VMはブリッジネットワークでセットアップされ、DNSサーバーに適切に提供されていますが、ローカルホスト名がnslookupまたはブラウザーによって解決されていません。

nslookupローカルドメインの1つを次に示します。

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

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

DNSサーバーを使用して解決すべきことは次のとおりです。

# 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 間違ったネームサーバーがあります:

# 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

そのコマンドを実行しました。紛らわしいことに、DNSサーバーでは、正しいサーバー(およびデフォルトゲートウェイ)を指定しています。

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

ネットワークを変更すると解決できないため、DNSサーバーのIPを構成ファイルに「ハードコード」したくありません。

DHCPサーバーのIP を自動的に設定するためにresolvconfとNetworkManagerを取得するにはどうすればよい/etc/resolv.confですか?

回答:


37

編集/etc/systemd/resolved.confして、目的のDNSサーバーを追加してみてください。

これを変更します:

[Resolve]
#DNS=

これに(ただし、必要なものを使用してください-これは例です):

[Resolve]
DNS=192.168.1.152

その後、サービスを再起動します。

service systemd-resolved restart

ステータスを確認すると、表示されるはずです

$ 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

ここにsystemd-解決--statusは/etc/systemd/resolved.conf変更した後で pastebin.com/AeUFQkyB ブラウザは依然としても解決名に失敗します。
FireSpore

12
systemdはとても壊れています。DHCPは、ホストにDNSがどのようなものであるか(およびその他のネットワーク設定の多く)を伝えるので、これを機能させるためにホスト上のファイルを変更する必要はありません。
テクノポール

4
最適に見えません
Victor

1
DNS IPが変更されるたびに(たとえば、異なるネットワーク上で)再構成する必要があります。
ビクター

34

systemdの既知のバグ

DNS IPが変更された場合に再構成する必要のない一時的な回避策

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

2
このソリューションは、適切に、多少のホストとnslookupコマンドコマンド決意名を働いたが、wgetコマンドやブラウザではありません
FireSpore

1
これは...現在のバグがへのリンクがあること正しいさ/etc/resolv.confから来て/run/systemd/resolve/stub-resolv.confいることは、それがあるべきであるbollox /run/systemd/resolve/resolv.conf ノート/etc/resolv.confは本当にいずれかの場合には存在しません
氏Heelis

@FireSpore:pingそれでは動作しますか?hostそして、nslookupは異なるから解決ホスト名をpingwget/etc/nsswitch.conf解決策を探す必要があるかもしれません。
HongboZhu

9

私はついにubuntu 17.10のこの問題の解決策を得ました。デフォルトでは、このバージョンのUbuntuはを使用しますがsystemd-resolved、これは次のバージョンで安定することを期待しています。

ローカルsystemd解決キャッシュの代わりにカスタムDNSを使用するには、次の手順を実行します。

  1. 新しいネームサーバーを追加します。ファイル/etc/systemd/resolved.confをsudoerとして編集します。ここで、DNSエントリをコメントアウトし、DNSを配置しました [Resolve] DNS=10.96.0.10 8.8.8.8 8.8.4.4

  2. への実際のシンボリックリンクをキャンセルする /etc/resolv.conf

  3. 新しいシンボリックリンクを作成する sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
  4. サービスを再開する sudo service systemd-resolved restart
  5. ネットワークマネージャーを再起動します sudo systemctl restart networking

そして今、あなたがあなたの追加DNSによって提供された名前に掘る場合、あなたは解決されたレコードを見るはずです dig nexus.default.svc.cluster.mydomain

最後のステップは/etc/nsswitch.conf、mdns4_minimalの前にdnsを配置することにより、の解像度の順序を更新することです

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

1
DNS IPが変更されるたびに(たとえば、異なるネットワーク上で)再構成する必要があります。
ビクター

ビクター、あなたは最高の解決策を持っていますか?これは、あなたが静的なネット設定を使用した場合と同じである
ファビオFumarola

この回答は、静的構成と動的構成の両方で機能します:askubuntu.com/a/974482/343617
Victor

ありがとう、私が指摘した解決策は静的でした。同意する
ファビオフマローラ

ちょうど新しい18.04のインストールに私のために働いたこの
JamesCW

1

DHCPが提供するDNSサーバーとドメイン検索順序を置き換える機能を現在サポートしていないNetplanの問題を回避するスクリプトをまとめました。Netplan yamlファイルを作成し、systemd-resolvedが期待どおりに動作するように構成します。

################## 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

私のために働いた解決策は私のブログにここに掲載されています

nanoエディターを使用してこれら2つのファイルを編集します

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

使用するDNSサーバーを追加します

nameserver 9.9.9.9
nameserver 127.0.0.1

その後、サービスを再起動します

service systemd-resolved restart

最終チェック:

cat /etc/resolv.conf

nslookupを行う

nslookup google.com 

私はこれを使用しただけで、自宅のラップトップの問題を修正しましたが、将来、ホームネットワークから離れると、プライマリとセカンダリのDNSサーバーがまだ自宅であるため、問題が発生することがわかりますLANアドレスを持つサーバー。


2
DNS IPが変更されるたびに(たとえば、異なるネットワーク上で)再構成する必要があります。
ビクター

エレガントではありませんが、gcloudが就寝時間を妨害することがあります。
ロドリゴフェラーリ

再起動/etc/resolv.conf中にファイルが上書きされるため、編集は機能しませんsystemd-resolved。編集するだけです/etc/systemd/resolved.conf。ここに私の答えを参照してください:askubuntu.com/questions/977243/ubuntu-17-10-disable-netplan/...
EnzoR

1

あなた/etc/resolv.confは問題ではありません。systemd-resolvedデフォルトは未構成になっているため、すべてのルックアップに失敗します。Unconfigured vs A Areasonable Defaultについては、お気軽にご相談ください。

にネームサーバーを手動で追加しsystemd-resolvedます。(システムの更新を生き残るために、以下のOlorinのコメントごとに編集してmkdir、正しいパスで/etcはなく/lib、追加します)

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

追加:

[Resolved]
Cache=yes
DNS=192.168.1.152

その後...

sudo systemctl daemon-reload

systemd-resolvedは賢いですが、パッケージメンテナによって構成されていないため、パッケージメンテナは合理的なデフォルトを信じていないため、愚かに見えます。「djb way」として知られる13のインターネットルートサーバー、または10のopennicサーバー(https://pastebin.com/JBfYVVtGまたはnamebenchで測定される3つの最速のopennicサーバー)を配置できます。ISPネームサーバーももちろんです。プラスGoogle、確かに。systemd-resolved問題ではありません。私は問題です。


あなたはおそらくファイルを編集したくないでしょう/usr/lib-それらはおそらくパッケージのアップグレード時に上書きされます。どこかに対応するファイルがあると思います/etc/systemd(すでに/etc/systemd/resolved.conf管理者が編集できる状態になっているはずです)。
オロリン

1
man resolve.conf.d、dの場合、はい/etc/systemd/resolved.dが場所です。mkdir /etc/[path].dを頻繁に実行する必要があることに気づきました。bob @ laptop l /etc/systemd/resolved.conf.d ls: '/etc/systemd/resolved.conf.d'にアクセスできません:そのようなファイルまたはディレクトリはありません
BobDodds

0

私のシステムで悪いシンボリックリンクを見つけました:/etc/resolv.confを指すシンボリックリンクでした/run/systemd/resolve/stub-resolv.conf

このファイルには1行のみが含まれています。

nameserver 127.0.0.53#53

その結果、ローカルネットワークのDNSルックアップがしばしば欠落していました。

だから、代わりに私が/etc/reolv.conf指すように変更/run/systemd/resolve/resolv.conf

そして正しく動作するようになりました。


0

奇妙なことですが、Ubuntu 18.04で私のために働いた唯一の解決策は、私がここで見つけたものでした:

まず、/etc/resolv.conf目的のネームサーバーを設定して変更します。

# nano /etc/resolv.conf

たとえば、設定

nameserver 8.8.8.8

それから

# chattr +i /etc/resolv.conf

これにより/etc/resolv.confファイルが保護され、rootユーザーを含む誰もファイルを変更できなくなります。


-3

私は同じ問題を抱えています。再起動するたびに、何も解決されません。すべてをアンインストールし、すでに約50回再インストールしました。単に壊れています。

「PCを起動するたびにいくつかの設定を適用するだけで、ホスト名の90%を解決できますが、wgetおよびapt-getの更新とアップグレードは理由もなくランダムに失敗します」

cat /etc/systemd/resolved.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

Ubuntu 17.10 Desktopを使用する場合、「このファイルを編集しないでください」という1つのファイルを編集する必要がありますBLAH BLAH BLAH

まあそれは唯一の方法です〜!

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

そのため、ネームサーバーとして127.0.0.53 IPを削除し、別の1つ、たとえばgoogleを入力します。私の実際のDNS IPアドレスもホスト名を解決しないようです(家の他の10個のマシンとデバイスで動作しますが)が、googleは正常に動作します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.