GNU/Linux >> Linux の 問題 >  >> Linux

resolv.conf が上書きされているときに DNS を設定するにはどうすればよいですか?

DNSネームサーバーをオーバーライドしたい場合は、 base にこれに似た行を追加するだけです resolv.conf.d の下のファイル .

$ sudo vim /etc/resolvconf/resolv.conf.d/base

次に、ネームサーバー リストを次のように入力します。

nameserver 8.8.8.8
nameserver 8.8.4.4

最後に resolvconf を更新します :

$ sudo resolvconf -u

resolvconf の man ページを見ると、 /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 に ファイルも。

参考文献

  • ubuntu 14.04 の永続的な DNS ネームサーバー
  • resolv.conf を使用して DNS サーバーを追加するにはどうすればよいですか?

私もこの質問に興味があり、@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 dnsserver は

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 によって制御されます
  • dhcp が提供するサーバーに関係なく、dnsserver は実際には 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
    

    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 restartsudo 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
    

    Linux
    1. ファイルがWgetによってダウンロードされているかどうかを確認する方法は?

    2. プロキシを永続的に使用するように curl を設定するにはどうすればよいですか?

    3. resolv.conf を編集するにはどうすればよいですか?

    1. リダイレクトされたときに正しい名前のファイルを取得するにはどうすればよいですか?

    2. ファイルを実行不可として設定するには?

    3. 出力をリダイレクトするときに特定のファイル許可を設定する方法は?

    1. BashスクリプトをBashにパイプするときにパラメータを設定する方法は?

    2. dnsmasq を再起動すると resolv.conf が上書きされ続け、dnsmasq が壊れる

    3. Linux で暗号化されたスワップ ファイルを設定するにはどうすればよいですか?