resolv.confを上書きするときにDNSをどのように設定しますか?

resolv.confを上書きするときにDNSをどのように設定しますか?

オンラインで見たほとんどの情報は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.confsudo resolvconf -u

ちなみに、私は接続ごとにDNSを変更したくなく、特に指定しなかった場合は、すべての接続に使用するデフォルトのDNS設定を指定したいと思います。

修正する:

私はその質問に自分で答えました。 https://unix.stackexchange.com/a/163506/67024

私はこれが最善の解決策だと思います:

  1. 効果がある
  2. 最小限の変更が必要です。
  3. dnsmasqのDNSキャッシュをバイパスせずに動作し続けます。

答え1

baseDNSネームサーバーを上書きするには、.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-toolDNSサーバー

DNS:             208.67.222.222
DNS:             208.67.220.220

これは私のルータによって提供されます。一方、採掘住所は次のとおりです。

;; Query time: 28 msec
;; SERVER: 8.8.4.4#53(8.8.4.4)

私が正しいならば、これらすべてから私が得た教訓は次のとおりです。

  1. resolvonfは「ヘッド」部分のみを読み込みます。 「基本」部分は何とかdnsmasqによって制御されます。
  2. dnsserver は実際に dhcp によって提供されるサーバーに関係なく 8.8.4.4 に強制されますが、要求は常に 8.8.4.4 に送信されるため、dnsmasq によって提供されるキャッシュは失われます。
  3. 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.confdnsmasqパッケージとしてインストールされているため、ファイルはありませんが、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

  1. 「ネットワーク接続」を検索してください。

  2. 開いてみて

                        ここに画像の説明を入力してください。

  3. 次に、WiFiやイーサネットなど、使用している項目を選択して[編集]をクリックします。あなたはこれを得るでしょう:

                  ここに画像の説明を入力してください。

  4. タブで ipv4 を選択します。

  5. メソッドのみのアドレスを選択

  6. 以下にDNS名を入力して保存してください。

  7. 君は終わった

関連情報