Ubuntuでsystemd-resolvedを無効にする方法は?


87

Ubuntu 17.04でsystemd-resolvedを無効にするにはどうすればよいですか?

で無効にすると動作systemctl disableしませんでした(サービスはNetworkmanagerによって再起動されたようですか?)


10
systemd-resolvedは単に大きいだけでなく、dnsサーバーがクライアント構成で指定されている順序で常に解決しようとするわけではないため、dns解決が機能する方法を壊します。サーバーがドメインを解決しない場合、リスト内の次のものが最上部に移動します(Poetteringはその「メモリー」を呼び出します)。詳細については、このスレッドを参照してください。
ライフボーイ

7
また、iptablesルールもバイパスしますが、これはひどい考えです。
スポンジマン

回答:


150

このメソッドは、Ubuntuリリース17.04(Zesty)、17.10(Artful)、18.04(Bionic)、18.10(Cosmic)、および19.04(Disco)で機能します。

systemdで解決されたサービスを無効にして停止します。

sudo systemctl disable systemd-resolved
sudo systemctl stop systemd-resolved

次に、の[main]セクションに次の行を追加します/etc/NetworkManager/NetworkManager.conf

dns=default

シンボリックリンクを削除する /etc/resolv.conf

rm /etc/resolv.conf

NetworkManagerを再起動します

sudo systemctl restart NetworkManager

また、systemd-resolvdを無効にすると、一部のユーザーのVPNでの名前解決が壊れることがあることに注意してください。ランチパッドでこのバグをご覧ください(ありがとう、Vincent)。


4
これはUbuntu 17.04では機能しないようです。また、設定ファイルは/etc/NetworkManager/NetworkManager.confです。上記を行うと、名前解決が壊れます。systemd-resolvedは非常に時間がかかりますが、今ではVPN DNSの解決はまったく適切に機能しません。バグの進行状況はこちらで確認できます:bugs.launchpad.net/ubuntu/+source/systemd/+bug/1624317
ビンセント

5
systemd-resolvedが無効になったら、「apt-get install dnsmasq」を実行する必要があるという上記の回答に追加する必要があると思います。
ライフボーイ

5
@LifeBoy私はdnsmasqを使用しません。ローカルネームサーバーは使用していません。その値は表示されません。
バスティアンフォイト

9
Ubuntu 18.04では、コマンドsudo systemctl disable systemd-resolved.serviceおよびsudo service systemd-resolved stopを実行するだけです。それは私のために働いた。
ダニエルイーグル

12
ありがとうございました。SystemDはLinuxを台無しにしており、信頼性が高く理解しやすいものから、魔法で動作するものに変えています。
フォーブスミスター

18

私は最近(k)Ubuntu 17.04にアップグレードしましたが、systemdへの変更にも偶然出会いました。

私のセットアップは、ブロードバンドHUBにDNSプロバイダーがあり、これがネットワーク上のすべてのデバイスの主要な情報源であるという点で、かなり典型的だと思います(そのうちいくつか)。

systemdにはいくつかの美しさがありますが、それはすべて悪いわけではありませんが、ドキュメント、Ubuntuチームからのコミュニケーションの欠如、そして「誰にとっても壊れているにも関わらずそれを変えましょう」という考え方が本当に悪いのです。

いくつかの髪を切り取った後の私のための解決策は、/ etc / systemd / resolved.confを編集することでした:

[Resolve]
DNS=192.168.1.254   # <-- change to your router address
#FallbackDNS=8.8.8.8 8.8.4.4 2001:4860:4860::8888 2001:4860:4860::8844
Domains=lan         # <-- change to your localdomain name (maybe .local)
#LLMNR=yes  <-- I dabbled with this for a while but it doesn't matter
#DNSSEC=no
#Cache=yes
#DNSStubListener=udp

これがなぜ機能しないのか理解できなかったので、/ etc / resolv.confをsystemdが提供するものに切り替えることも必要であることがわかりました。すぐに使えるインストールの場合はそうではありません(理由は不明です)。

sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf

ローカルDNSサーバーは使用されず、すべてのDNS要求は私のHUBに送信されます。

systemd-resolvがデフォルトになったため、これは他のソリューションを切り取って配置するよりもはるかに優れたソリューションだと思います。

関連する問題は、/ etc / nsswitch.confが削除されていることです。

次のようになります。

ホスト:ファイルmdns4_minimal dns [NOTFOUND = return] resolve [!UNAVAIL = return] dns

[NOTFOUND = return]は処理がそこで終了することを意味するため、これは紛らわしい構成です。それ以降のエントリは使用されません。


1
そして、私は新しいWIFIに接続するたびに設定のルーターアドレスを変更する必要がありますか?本気?-1
バスティアンフォイト

あなたがそれでローミングしていることに気づきませんでした。ある場合は、構成アイテムをコメント化したままにします。次に、次のような/etc/resolv.confを取得する必要があります。ネームサーバー8.8.8.8ネームサーバー8.8.4.4
user2427436

1
netplanを正しく設定する場合、resolved.confを編集する必要はないと思います。つまり、netplanはシンボリックリンクファイルに正しい値を書き込みます... PS SYSTEMD SUCKS!
g33kz0r

3

VPNでリークの問題が発生し、systemdの設定方法がわからない場合(私のように)、最初の回答で説明した方法で削除できますがdns=default、ネームサーバー127.0をアクティブにするため、行を追加しないでください.0.1。ルーターをdnsとして設定するには、/etc/resolvconf/resolv.conf.d/ フォルダーに「tail」ファイルを作成し、次の行を追加しますnameserser 192.168.1.1

ln -sf /var/run/resolved/resolv.conf /etc/resolv.confあなたがこのファイルを台無しにしたなら、してください。


1
本当に?私にとっては、答えで説明したとおりに機能します。ネームサーバー127.0.0.1を絶対に使用しない また、ネームサーバーのIPを構成ファイルにハードコードすることはあまり便利ではないと思います。少なくとも私はかなり頻繁にWiFiネットワークを切り替え、各無線LANが異なるネームサーバを持っている
バスティアンフォークト

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