オンラインで目にするほとんどの情報には編集するように書かれています/etc/resolv.conf
が、そこで行った変更は上書きされてしまいます。
$ cat /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
nameserver 127.0.1.1
127.0.1.1 は のローカル インスタンスのようですdnsmasq
。dnsmasq
ドキュメントには を編集するように書かれています/etc/resolv.conf
。 にカスタム ネームサーバーを追加しようとしましたが、を実行した後、/etc/resolv.conf.d/base
に変更が反映されませんでした。/etc/resolv.conf
sudo resolvconf -u
参考までに、接続ごとに DNS を変更するのではなく、特に指定がない限り、すべての接続で使用するデフォルトの DNS 設定を設定したいと考えています。
アップデート:
私はこの質問に自分で答えました: https://unix.stackexchange.com/a/163506/67024
私はこれが最善の解決策だと考えています。
- それは動作します。
- 最小限の変更で済み、
- dnsmasq の DNS キャッシュをバイパスするのではなく、引き続きそれと連携して動作します。
答え1
base
DNS ネームサーバーを上書きしたい場合は、の下のファイルに次のような行を追加するだけでよいと思いますresolv.conf.d
。
例
注記:始める前に、次のパッケージがインストールされていることを確認してくださいapt install resolvconf
。
$ sudo vim /etc/resolvconf/resolv.conf.d/base
次に、ネームサーバーのリストを次のように入力します。
nameserver 8.8.8.8
nameserver 8.8.4.4
最後に更新resolvconf
:
$ sudo resolvconf -u
のマニュアルページを見ると、resolvconf
の下にあるさまざまなファイルについて説明されています/etc/resolvconf/resolv.conf.d/
。
/etc/resolvconf/resolv.conf.d/base
File containing basic resolver information. The lines in this
file are included in the resolver configuration file even when no
interfaces are configured.
/etc/resolvconf/resolv.conf.d/head
File to be prepended to the dynamically generated resolver
configuration file. Normally this is just a comment line.
/etc/resolvconf/resolv.conf.d/tail
File to be appended to the dynamically generated resolver
configuration file. To append nothing, make this an empty
file. This file is a good place to put a resolver options line
if one is needed, e.g.,
options inet6
ファイルの先頭に警告があるにもかかわらずhead
:
$ cat /etc/resolvconf/resolv.conf.d/head
# 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
この警告は、これらのファイルが構築されるときに、これらのファイルを使用して作成される結果ファイルに最終的に警告が反映されるようにするためにあります。したがって、ファイルについて上記で説明した行を、ファイルにもresolv.conf
簡単に追加できます。nameserver
base
head
参考文献
答え2
私もこの質問に興味があり、@sim が提案した解決策を試しました。
それをテストするために、私は
nameserver 8.8.8.8
と/etc/resolvconf/resolv.conf.d/base
nameserver 8.8.4.4
で/etc/resolvconf/resolv.conf.d/head
その後、ネットワークを再起動しました
sudo service network-manager restart
結果は次/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
nameserver 8.8.4.4
nameserver 127.0.1.1
そしてnm-tool
DNSサーバは
DNS: 208.67.222.222
DNS: 208.67.220.220
これらはルーターから提供されるものです。一方、アドレスを調べると、
;; Query time: 28 msec
;; SERVER: 8.8.4.4#53(8.8.4.4)
もし私が正しいとすれば、このすべてから私は次のように結論づける。
- 「ヘッド」部分のみがresolvonfによって読み取られ、「ベース」部分はdnsmasqによって何らかの形で制御されます。
- dnsserver は、dhcp によって提供されるサーバーに関係なく、実際には 8.8.4.4 に強制されますが、リクエストは常に 8.8.4.4 に送信されるため、dnsmasq によって提供されるキャッシュは失われます。
- dnsmasq は引き続き、dhcp によって提供される dnsserver のみを使用します。
全体的にはうまく機能していますが、期待通りの結果ではないと思います。より近い解決策は次のようになります。編集
sudo vim /etc/dhcp/dhclient.conf
それから加えて
supersede domain-name-servers 8.8.8.8;
結果は次のようになります: resolv.confには127.0.0.1のみが含まれているため、dnsmasqキャッシュが呼び出され、nm-toolは次のように言います。
DNS: 8.8.8.8
つまり、検索した名前がキャッシュにない場合は、DHCP によって提供されるサーバーではなく、8.8.8.8 で要求されます。
もう1つの(おそらくより良い)オプションは、「supersede」の代わりに「prepend」を使用することです。この方法では、名前が8.8.8.8で解決されない場合、リクエストは他のサーバーにフォールバックされます。実際、nm-toolは次のように言っています。
DNS: 8.8.8.8
DNS: 208.67.222.222
DNS: 208.67.220.220
答え3
dnsmasq
次の行を追加することで、が使用するネームサーバーを変更できることがわかりました/etc/dnsmasq.conf
。
server=8.8.8.8
server=8.8.4.4
/etc/dnsmasq.conf
ただし、dnsmasq パッケージによってインストールされるため、ファイルはありませんでしたが、Ubuntu には dnsmasq-base しか付属していません。 を実行しsudo apt-get install dnsmasq
、 を編集し/etc/dnsmasq.conf
、 とsudo service dnsmasq restart
を実行しましたsudo service network-manager restart
。
sudo tail -n 200 /var/log/syslog
syslog をチェックして、dnsmasq
指定したネームサーバーが使用されていることを確認しました。
Oct 21 23:00:54 mylaptop dnsmasq[8611]: using nameserver 8.8.8.8#53
Oct 21 23:00:54 mylaptop dnsmasq[8611]: using nameserver 8.8.4.4#53
答え4
「ネットワーク接続」を検索
それを開く
次に、WiFi または Ethernet のいずれか、または使用しているものを選択し、編集をクリックします。次のようになります。
タブでipv4を選択
メソッド内のアドレスのみを選択する
以下にDNS名を入力して保存してください
完了です