回答:
dnsmasq
パッケージは16.10および17.04でも引き続き利用できます。
dnsmasq
無効にする前にsystemd-resolved
、インストールと依存関係(または少なくともパッケージをダウンロード)します。
sudo apt-get install dnsmasq
無効systemd-resolved
にしdnsmasq
て実行中です:
sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved
systemctl status dnsmasq
dnsmasq
味わう季節。設定を適用した後、再起動しますdnsmasq
。
sudo systemctl stop dnsmasq
sudo systemctl start dnsmasq
ステップ2の後、ステップ3が完了するまで、システムリゾルバーが動作しない場合があります。dnsmasq
デフォルトの設定で機能させるには、ネットワークサブシステムを再起動(または単に再起動)する必要がある場合があります。私のテストでは、既知のDNSサーバーを追加して/etc/dnsmasq.conf
再起動dnsmasq
するだけで、liveCD環境で動作するようになりました。
dns=dnsmasq
する設定を/etc/NetworkManager/NetworkManager.conf
@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を使用しています。
systemd-resolvedのマニュアルによると、systemd-resolvedは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で名前解決がどのように機能するかについてはあまりよく知らず、これらのマニュアルから理解したことについても確信が持てません。何か間違いがあった場合は喜んで指摘します。
(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