web-dev-qa-db-ja.com

resolv.confが何かによってリセットされ続ける

resolv.confがなぜこれに変わり続け、外部のインターネットにアクセスできず、ローカルネットワークのみにアクセスできないのかを理解する必要があります。

$ cat /etc/resolv.conf
nameserver 192.168.16.1
domain localdomain
search localdomain

ループバックインターフェイスを取り除き、/etc/network/interfacesのeth0インターフェイスに jontsaiのポステロスブログ の指示を追加して修正したと思います。

私は次のようなことを試しました:

$ Sudo ifconfig eth0 down
$ Sudo ifconfig eth0 up
$ Sudo /etc/init.d/networking restart
$ Sudo dhclient

そして、物事は一時的に機能し、最終的にresolv.confのネームサーバーは再び元に戻ります。

追伸また、これを buntuforums に投稿しました。


編集:NetworkManagerの他に、resolv.confに書き込むプログラムが少なくとも1つあります。NetworkManagerを更新すると、生成されるresolv.confファイルには# Generated by NetworkManagerというコメントがあり、変更後も変わらないバージョンがあるためです。

だから私はこれを試しています:

while true; do echo listening; lsof | grep /etc/resolv.conf; echo sleeping; sleep 1; done


編集2:

ファイルの出力を追加する:

$ cat /etc/network/interfaces 
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

/etc/NetworkManager/NetworkManager.confなどのファイルはありません

$ Sudo cat /etc/NetworkManager/system-connections/Auto\ Ethernet 

[connection]
id=Auto Ethernet
uuid=#######omitted#######
type=802-3-ethernet
autoconnect=true
timestamp=1314377063

[ipv4]
method=auto
ignore-auto-routes=false
ignore-auto-dns=false
dhcp-send-hostname=false
never-default=false

[802-3-ethernet]
speed=0
duplex=full
auto-negotiate=true
mtu=0

[ipv6]
method=ignore
ignore-auto-routes=false
ignore-auto-dns=false
never-default=false
28
jontsai

/etc/resolv.confに静的に追加できます。これらの追加は、自動的に追加されるものをオーバーライドできます。

まず、resolvconfパッケージをインストールします。

次に、Alt + F2を押してgksudo nautilusを実行します。ファイルの先頭に追加する場合は、/etc/resolvconf/resolv.conf.d/headを開きます。最後に追加する場合は、/etc/resolvconf/resolv.conf.d/tailを開きます。変更を加え、ファイルを保存/閉じてから、Sudo resolvconf -uを実行して変更を適用します。

(ファイルの開始時または終了時の設定の優先順位が最も高いかどうか覚えていません。)

13
Azendale

私はまったく同じ問題を抱えていました-サーバーがリブートされるたびにresolv.confが書き換えられます。

DHCPが原因でした。 resolv.confを希望どおりに設定するために、/etc/dhcp/dhclient.confを編集し、次を追加しました。

supersede domain-name "my.domain.com";
prepend domain-search "my.domain.com";

これに変更を加えることで、実際にresolv.confファイルについてかなり制御できます。

それが役に立てば幸い。

8

(この回答には、何が起こっているかを調査する方法が含まれています。これらの方法を使用して詳細情報を収集および提供すると、実際のソリューションを提供できる場合があります。)

/etc/resolv.confに対する一見自発的な更新のトリガーとして考えられるのは、DHCPリースが更新されたときです。 DHCPリースを取得する期間を確認してください(これはシステムログに表示されるはずです。/var/log/syslogにあると思います)。

auditdを使用できますInstall auditd ファイルを変更するものを見つける。デーモン(Sudo service auditd start)を起動し、そのファイルへの変更を監視するように指示します。

Sudo auditctl -w /etc/resolv.conf -p w

監査ログは/var/log/audit/audit.logにあります。ファイルが変更された時刻と、それを変更したプログラムの名前が表示されます。

resolvconfパッケージがインストールされている場合、Network Managerが足を踏み入れている可能性があります。すべてのネットワークインターフェースを停止してから、Network Manager(Sudo service network-manager stop)を停止してから再起動してください。

5
Gilles

ターミナルを開いて入力します

Sudo chattr +i /etc/resolv.conf

+ iは、rootであってもブート時にファイルがリセットされないように注意します。

上記を取り消すには

Sudo chattr -i /etc/resolv.conf

多くのための

man chattr
4
tanmay.01

resolv.confdisable_make_resolv_confというファイルを作成して、/etc/dhcp3/dhclient-enter-hooks.dの更新を無効にします

#!/bin/sh
make_resolv_conf(){
}

resolv.confリフレッシュを担当するのと同じ名前で標準関数を置き換えます。

3
Andrew Blake

運がよかった別のオプションには、resolvconfの使用が含まれます。

このファイルにエントリを追加します。

/etc/resolvconf/resolv.conf.d/base

そして、それらは/etc/resolv.confに追加されます。

このUbuntuの投稿のおかげで: resolv.confに再起動時に失われない行を含めるにはどうすればよいですか?

3
Drew

遅くなりましたが、上記のすべてとは異なるため、ケースを投稿します。

私の場合、/etc/resolv.conf/var/run/NetworkManager/resolv.confへのシンボリックリンクであり、何らかの理由でcat /etc/resolv.confはそのようなファイルやディレクトリをエラーにしない(空であるためか?)

Viで開いてnameserver x.x.x.xを追加すると機能しますが、再起動するとクリアされます。

/etc/network/interfacesを編集してdns-nameservers x.x.x.xを追加し、/etc/dhcp/dhclient.confを変更してrequestdomain-name-serversの下で削除し、prepend domain-name-servers x.x.x.xも編集しようとしました。

Resolvconfバイナリがインストールされていません。NetworkManager.confに関連するものはありませんでした。しかし、マシンを再起動するたびに、ドメインサーバーはありませんでした。

理由はわかりませんが、これはGNS3によって起動されたVBoxマシンであるため、VBoxの内部設定のため、インターフェイスを作成せずに残す必要があります。どうやらGNS3から起動すると、マシンを起動するとGNS3がその場で「UDPインターフェイス」を作成するようです。

したがって、無限に検索するのを防ぐために、echo nameserver x.x.x.x> /etc/resolv.conf/etc/profileに追加しました。問題は解決しました(解決せず、回避しました)。しかし、誰かがそれに遭遇した場合、そのシナリオで何が起こっているかを知ることは興味深いかもしれません。

1
Adriano_epifas

ファイル/etc/NetworkManager/NetworkManager.confがある場合

cat /etc/NetworkManager/NetworkManager.conf

resolv.confのリセットを停止するようにNetworkManagerを設定できます

Sudo sh -c 'echo "
[main]
dns=none
" >> /etc/NetworkManager/NetworkManager.conf'
cat /etc/NetworkManager/NetworkManager.conf

手動で/etc/resolv.confを変更し、その永続性をテストします

Sudo systemctl restart NetworkManager
# Sudo service network-manager restart
cat /etc/resolv.conf

ソース: https://askubuntu.com/a/623956/452398

1
adabru

Ifcfg-ethXファイルに次のように入力するだけです

DNS1 = 192.168.X.X

DNS2 = 192.168.X.X

DOMAIN = yourdomain.com

ネットワークマネージャーは、サービスの再起動後またはボックスの再起動後に、これらのレコードをresolv.confファイルに保留します。

0
user2564853