オンラインで見たほとんどの情報はeditと呼ばれていますが、/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ネームサーバーを上書きするには、.txtの下のファイルに同様の行を追加するだけです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で要求されることを意味します。
別の(おそらくより良い)オプションは、「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
システムログを確認するために実行し、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やイーサネットなど、使用している項目を選択して[編集]をクリックします。あなたはこれを得るでしょう:
タブで ipv4 を選択します。
メソッドのみのアドレスを選択
以下にDNS名を入力して保存してください。
君は終わった