systemd-resolvedを無効にしてdnsmasqでDNSを解決する方法は?


回答:


35

dnsmasq パッケージは16.10および17.04でも引き続き利用できます。

  1. dnsmasq無効する前にsystemd-resolvedインストールと依存関係(または少なくともパッケージをダウンロード)します。

    sudo apt-get install dnsmasq
    
  2. 無効systemd-resolvedにしdnsmasqて実行中です:

    sudo systemctl stop systemd-resolved
    sudo systemctl disable systemd-resolved
    
    systemctl status dnsmasq
    
  3. dnsmasq味わう季節。設定を適用した後、再起動しますdnsmasq

    sudo systemctl stop dnsmasq
    sudo systemctl start dnsmasq
    

ステップ2の後、ステップ3が完了するまで、システムリゾルバーが動作しない場合があります。dnsmasqデフォルトの設定で機能させるには、ネットワークサブシステムを再起動(または単に再起動)する必要がある場合があります。私のテストでは、既知のDNSサーバーを追加して/etc/dnsmasq.conf再起動dnsmasqするだけで、liveCD環境で動作するようになりました。


すばらしい答えであり、NetworkManagerを無効にすることが唯一の解決策のように思えます。
-bogl

3
私にとって、これは偉大な答えだっただけでなく、追加、@ blablaの答えからの追加の手順を必要とdns=dnsmasqする設定を/etc/NetworkManager/NetworkManager.conf
ロベルトTyley

こっちも一緒。systemdで解決されたdnsmasqへのバインドされていない切り替えに苦労した後、ubuntu 17.10でトリックを行いました。ただし、blablaの追加機能を使用する必要がありました。
アルベルトL.ボンフィリオ

17

@quixoticの答えに加えて:

/etc/NetworkManager/NetworkManager.confにあることを確認してください:

[main]
dns=dnsmasq

追加する必要がある場合は、次のようにNetworkManagerを再起動します。

sudo systemctl restart NetworkManager

および/etc/resolv.confへのシンボリックリンクである必要があります/var/run/NetworkManager/resolv.conf。このようにすることができます

sudo rm /etc/resolv.conf; sudo ln -s /var/run/NetworkManager/resolv.conf /etc/resolv.conf

実際にはdns=default、dnsmasqで定義されているのではなくNetworkManagerで定義されているネームサーバーがあるので、それを設定し、正常に動作します。これは私にとってはうまくいきます-NMは、システムトレイを介してKDEのNM設定で行われた設定からネームサーバーを取得します。ホームネットワークFWIWで固定IPを使用しています。
pbhj

1
このステップは、私にとって@quixoticの答えに必要な追加でした(ubuntu 17.04、完全インストール、LiveCDではありません)。
ロベルトタイリー

0

systemd-resolvedのマニュアルによると、systemd-resolvedは3つの異なるインターフェースを介して名前解決サービスを提供します。

  1. 「バスで完全に機能するAPI systemd-resolved公開」
  2. 「ローカルループバックインターフェイス上のIPアドレス127.0.0.53のローカルDNSスタブリスナー」
  3. RFC3493で定義されているglibc getaddrinfo(3)APIおよびgethostbyname(3)を含む関連するリゾルバ関数。このAPIは、Linuxプラットフォーム以外にも広くサポートされています。現在の形式では、DNSSEC検証ステータス情報は公開されませんが、同期のみです。このAPIは、glibcネームサービススイッチ(nss(5))によってサポートされています。glibcのNSSリゾルバー機能がsystemd-resolvedを介してホスト名を解決できるようにするには、glibc NSSモジュールnss-resolve(8)の使用が必要です。

最初の2つのインターフェースは通常のDNS解決に干渉しないようで、私にとっては問題は3番目にある可能性が高いです。

nss-resolveのマニュアル:

NSSモジュールをアクティブにするには、/ etc / nsswitch.confの「hosts:」で始まる行に「resolve」を追加します。具体的には、/ etc / nsswitch.confの「hosts:」行の「resolve」を早期に(ただし、「files」または「mymachines」エントリの後に)、「dns」エントリが存在する場合はその直前に置き、 「[!UNAVAIL = return]」。DNSクエリが実行されている場合は常にsystemd-resolved(8)を介してルーティングされますが、このサービスが利用できない場合はnss-dnsにルーティングされます。

したがって、必要なのは、/ etc / nsswitch.confの「host:」行で「dns」を「resolve」に先行させることです。そして、getaddrinfo単純に/etc/resolv.confに従う必要があります。

このソリューションは、systemd-resolvedがすべてのDNS解決要求を処理するのを防ぐだけであり、特定のネットワークマネージャーに制限されません。また、LLMNRおよびmDNSサービスが正常に動作していることも確認します。

(Linuxで名前解決がどのように機能するかについてはあまりよく知らず、これらのマニュアルから理解したことについても確信が持てません。何か間違いがあった場合は喜んで指摘します。


0

(X)Ubuntu 18.04の場合(stackexchangeでの私の回答を参照)。

ここにそれのコピーがあります(コピーを作るべきですか?)

これが(X)Ubuntu 18.04 Bionicのソリューションです。

dnsmasqをインストールする

sudo apt install dnsmasq

ポート53のsystemd-resolvedリスナーを無効にします(アップグレード時に上書きされる可能性があるため、/ etc / systemd / resolved.confには触れないでください)。

$ cat /etc/systemd/resolved.conf.d/noresolved.conf 
[Resolve]
DNSStubListener=no

そしてそれを再起動します

$ sudo systemctl restart systemd-resolved

(またはによって完全に無効にする$ sudo systemctl disable systemd-resolved.service

/etc/resolv.confを削除して、再度作成します。resolv.confはデフォルトで/run/systemd/resolve/stub-resolv.confへのシンボリックリンクであるため、これは重要です。シンボリックリンクを削除しない場合、ファイルはリブート時にsystemdによって上書きされます(systemd-resolvedを無効にした場合でも!)。また、NetworkManager(NM)は、systemdで解決された構成を検出するためのシンボリックリンクであるかどうかを確認します。

$ sudo rm /etc/resolv.conf
$ sudo touch /etc/resolv.conf

NMによる/etc/resolv.confの上書きを無効にします(オプションのrc-managerもありますが、マニュアルに記載されているにもかかわらず機能しません)。

$ cat /etc/NetworkManager/conf.d/disableresolv.conf 
[main]
dns=none

そして再起動します:

$ sudo systemctl restart NetworkManager

NMのresolv.confを使用するようにdnsmasqに指示します。

$ cat /etc/dnsmasq.d/nmresolv.conf 
resolv-file=/var/run/NetworkManager/resolv.conf

そして再起動します:

$ sudo systemctl restart dnsmasq

解決にはdnsmasqを使用します。

$ cat /etc/resolv.conf 
# Use local dnsmasq for resolving
nameserver 127.0.0.1
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.