以下 systemd-resolvedを無効にしてdnsmasqでDNSを解決する方法
しかし、私はできる限りそれに従いましたが、それでもsystemd-resolvedをdnsmasqで適切に置き換えることができませんでした-
dns=dnsmasq
の下の[main]
の下に/etc/NetworkManager/NetworkManager.conf
を置くと、/etc/resolv.conf
のnameserver
はdnsmasq
ではなくISPになります。それを削除すると、/etc/resolv.conf
のnameserver
はsystemd-resolved
、つまり127.0.0.53
のままになります。
つまり、システムDNSサービスとしてdnsmasqを適切に使用するにはどうすればよいのでしょうか。
resolvconf
を削除しましたが、問題はPS。
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.1 LTS
Release: 18.04
Codename: bionic
UPDATE:
私は実際に2回試しましたが、最新のLubuntu 18.04.2 LTSインストールからの最新の試みで、どちらのケースも機能しませんでした。 「動作しませんでした」とは、dnsmasq
がnetstat
経由で ':53
'をリッスンしているのを確認できることを意味しますが、Dig cnn.com
および/またはDNSクエリがタイムアウトします。
こちらが更新された情報です。変更を元に戻し、systemd-resolvedの使用に戻りました。したがって、grep -i stub /etc/systemd/resolved.conf
のような結果は、現在のステージを反映しています(systemd-resolved
に戻ります)。
$ dpkg -l '*dnsmasq*'
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-===================-==============-==============-===========================================
ii dnsmasq 2.79-1 all Small caching DNS proxy and DHCP/TFTP serve
ii dnsmasq-base 2.79-1 AMD64 Small caching DNS proxy and DHCP/TFTP serve
un dnsmasq-base-lua <none> <none> (no description available)
ii dnsmasq-utils 2.79-1 AMD64 Utilities for manipulating DHCP leases
$ ls -al /etc/resolv.conf
lrwxrwxrwx 1 root root 35 2019-07-14 22:07 /etc/resolv.conf -> /var/run/NetworkManager/resolv.conf
$ grep -i stub /etc/systemd/resolved.conf
#DNSStubListener=yes
$ cat /etc/NetworkManager/NetworkManager.conf
[main]
plugins=ifupdown,keyfile
[ifupdown]
managed=false
[device]
wifi.scan-Rand-mac-address=no
# I've removed `resolvconf`:
$ dpkg -l '*resolvconf*'
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-===================-==============-==============-===========================================
un resolvconf <none> <none> (no description available)
$ Sudo ls /run/resolvconf/resolv.conf
ls: cannot access '/run/resolvconf/resolv.conf': No such file or directory
UPDATE2:
何が問題だったかわかったと思います-変更後(回答のすべての手順に従って)、/etc/resolv.conf
の内容を確認したところ、内容は同じままでした。つまり、nameserver 127.0.0.53
がまだ残っています。
nameserver 127.0.0.53
はsystemd-resolved
用であるのに対し、dnsmasq
はnameserver 127.0.0.1
である必要があることを思い出しました。これが、すべてのDNSクエリがタイムアウトになる理由です。
つまり、答えに欠けている1つのステップがあります。それは、nameserver
を127.0.0.1
の/etc/resolv.conf
に変更することですが、方法はわかりません。
Systemd-resolvedを置き換えようとしている理由はわかりませんが、同時に実行する必要がある場合は...
dnsmasq
およびsystemd-resolved
...について
ps auxc | grep -i dns
とps auxc | grep -i resolv
を実行してdnsmasq
とsystemd-resolved
を探します。両方が実行されている場合は、編集してsystemd-resolved
のDNS部分を無効にする必要があります/etc/systemd/resolved.conf
そして...
変化する:
#DNSStubListener=yes
に:
DNSStubListener=no
その後、systemd-resolveとdnsmasqを再起動するか、再起動します。
/ etc/resolv.confであるシンボリックリンクをリセットする必要があります
Sudo mv /etc/resolv.conf /etc/resolv.conf.OLD
#古いシンボリックリンクを保存
Sudo ln -s /run/resolvconf/resolv.conf /etc/resolv.conf
私は、Ubuntu(新しくインストールされた)18.04.03ルーターを自宅のコンピューターに使用しています。ルーターはインターネットプロバイダーからネームサーバーを取得します。ホームネットワークでは、dnsとdhcpにdnsmasq
を使用しています。から始まる
systemctl stop systemd-resolved
変更/etc/systemd/resolved.conf
:
...
#DNSStubListener=yes
DNSStubListener=no
/etc/resolv.confがリンクされているかどうかを確認します。次に、リンク/etc/resolv.confを/run/systemd/resolve/stub-resolv.confではなく/run/systemd/resolve/resolv.confに変更します。
rm /etc/resolv.conf
ln -s /etc/resolv.conf /run/systemd/resolve/resolv.conf
その後
systemctl start dnsmasq
すべての再起動後、DNSサーバーは/etc/resolv.conf
。
私は同じ問題を抱えていましたが、18.04に更新された16.04システムのみでした。 LAN DNSおよびDHCPサーバーとしてdnsmasqも使用しています。新しくインストールされた18.04では、/etc/systemd/resolved.conf
(DNSStubListener)を変更する必要なく、そのまま使用できます。
これと他の違いは、特にansibleのような構成管理ツールを使用する場合に厄介です(たとえば、16.04の場合は/etc/network/interfaces
で、18.04の場合は/etc/netplan/01-netcfg.yaml
で定義されているネットワーク定義)。
そこで、私はようやく、すべてのサーバーをアップグレードではなく新しい18.04で再インストールすることにしました。