web-dev-qa-db-ja.com

resolv.confが上書きされ続けている間にdhclientで静的DNSを設定する方法は?

Debian NetworkConfiguration wiki に続いて、静的 OpenNIC DNS をセットアップしようとしましたが、成功しませんでした。最初に試したのは/etc/resolv.confを直接編集することでしたが、上書きされ続けます。 wikiページには、上書きの3つの考えられる原因がリストされています。

  1. resolvconfプログラム
  2. network-managerデーモン
  3. DHCPクライアント
$ apt-cache policy resolvconf
resolvconf:
  Installed: (none)
  Candidate: 1.76.1
  Version table:
     1.76.1 0
        500 http://ftp.us.debian.org/debian/ jessie/main AMD64 Packages
$ apt-cache policy network-manager
network-manager:
  Installed: (none)
  Candidate: 0.9.10.0-7
  Version table:
     0.9.10.0-7 0
        500 http://ftp.us.debian.org/debian/ jessie/main AMD64 Packages

resolvconfまたはnetwork-managerがインストールされていないことを考えると、ソースはDHCPクライアントであると想定できます。 network-managerの代わりにwicdを使用していますが、wicd-gtkプロパティで静的DNSを設定しても機能しません。したがって、/etc/dhcp/dhclient.confを追加してsupersede domain-name-servers 50.116.40.226;を編集しましたが、/etc/resolv.confはまだ次のとおりです。

$ cat /etc/resolv.conf
nameserver 2001:558:feed::2
nameserver 2001:558:feed::1

ここで何が起こっているのですか? resolvconfをインストールして、機能するかどうかを確認する必要がありますか? wicdをあきらめてnetwork-managerをインストールしますか?

5
lscstu22

DHCPサーバーが一方的な応答を送信すると思うので、supersedeパラメーターを設定した場合もresolv.confが上書きされました。 + i attrを追加することで解決できる場合もありますが、変更を加える必要がある場合は、手動で設定を解除して再設定する必要があります。

実際、クライアント側でいくつかのスクリプトを書くことができます( man 8 dhclient-script )。

このトピックは debian wiki :でも説明されています。

別のアプローチでは、dhclient-scriptのフックスクリプトを利用します。 dhclient-script(8)によると:

クライアントスクリプトは、起動時に最初にシェル関数make_resolv_confを定義します。これは、後で/etc/resolv.confファイルを作成するために使用されます。デフォルトの動作をオーバーライドするには、enterhookスクリプトでこの関数を再定義します。したがって、次の手順を実行することで、dhclientがresolv.confを上書きするのを防ぐことができます。

echo 'make_resolv_conf() { :; }' > /etc/dhcp/dhclient-enter-hooks.d/leave_my_resolv_conf_alone
chmod 755 /etc/dhcp/dhclient-enter-hooks.d/leave_my_resolv_conf_alone

Dhclient-scriptはrun-parts(8)を使用して読み取るファイルを決定するため、実行ビットが必要です。同じ理由で、ファイル名には文字、数字、アンダースコア、ハイフン以外は含めないでください。

1
LilloX

ちなみに、物事はまったくうまくいっていません、それは友達でもありませんが、去る前によく見る必要があります。したがって、システムに「chattr + i」ファイルを適用すると、問題の解決策を探す必要があると思いますそれは時々私たちの顔にある非常に単純なものであり、システムに私たちの意志を押し付けたいと神経質になっているために満たすことができません、時には小さなスクリプトがネットワークでうまく実行されたときに奇跡を起こすことさえありますが、どうやらあなたはこれを望まないようですちなみに、システム管理者になることを勉強していないか、勉強しています。ごめんなさい!しかし、神経質になって、システム上でこの種のナンセンスなトリックを実行したいのであれば、結局のところ、それは私のシステムにはありません。それであなたを怒らせて申し訳ありません!これをする代わりに! 'chattr'コマンドconfigureを使用するには、 'interfaces'ファイルを編集します。これは通常/ etc/network /フォルダーにあり、必要なネームサーバーIPを使用してdns-nameserverオプションを追加/変更します。これらのオプションがファイルにない場合は、小さな例として追加できます。

-サンプル:「/ etc/network/interfaces」ファイルをこのように編集するだけです。

   auto lo
   iface lo inet loopback
   iface lo inet6 loopback

   iface eth0 inet dhcp <= Here would be for DHCP devices.
   iface eth0 init 192.168.1.2 <= Here your fixed IP on the network.
   iface eth0 inet6 auto <= Here you define your IPv6 automatically.

   dns-nameserver 192.168.1.1 <= Your IP address here.
   dns-nameserver 8.8.8.8
   dns-nameserver 8.8.4.4

-ファイルを保存してネットワークを再起動します...

サーバーのIPアドレスを設定するだけの場合は、インターフェイスファイルの最後に次のように設定します。

   dns-nameserver 8.8.4.4
   dns-nameserver 8.8.8.8

ここで使用されている例を次に示します。DHCPを使用しない場合は、ネットワークシステムのすべての起動を変更するルーターによって自動的に定義されたIPを使用する必要があります。

    auto lo
    iface lo inet loopback
    iface lo inet6 loopback
    iface eth0 inet static

            address 192.168.1.4/24
            netmask 255.255.255.0
            gateway 192.168.1.1

   dns-nameserver 192.168.1.4
   dns-nameserver 8.8.4.4
   dns-nameserver 8.8.8.8

-ここでは、理解を深めるために確認するための小さなサンプルを示します。

0
Joke Sr. OK