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


29

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

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

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

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

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

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

PS私もこれをubuntuforumsに投稿しました


編集:NetworkManagerの他に少なくとも1つのプログラムがあり、NetworkManager resolv.confを更新すると、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

Network Managerのバグか、設定ミスの可能性が高いと思われます。どのバージョンのUbuntuを実行していますか?あなたは持っていますresolvconfパッケージがインストールされていますか?内容を投稿し/etc/network/interfaces/etc/NetworkManager/NetworkManager.confそして/etc/NetworkManager/system-connections/*
ジル 'SO-悪であるのをやめる'

resolvconfパッケージなしで10.04を実行しています。ある時点で、DSLモデムが(ルーターの背後で)悪くなったのに、ローカルネットワークは正常だったので、インストールしようとしたnscddnsmasq、アンインストールされたかもしれませんが、干渉するアーティファクトが残っているかもしれません。
-jontsai

さて、3週間で初めてコンピューターを再起動したところ、問題はなくなったと思います。o_O
jontsai

確かではありませんが、DHCPサーバーvmnet1またはvmnet8(NATおよびホストオンリー)に何らかの問題があったと思います
-jontsai

1
Ubuntu 12.04はベースシステムにresolvconfを導入し、resolv.confの処理方法を根本的に変更して以来、この議論全体の関連性は低下しています。
jdthood

回答:


13

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

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

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

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


ネットワークマネージャーの変更は、VPNに接続すると元に戻ります。これにより、接続したネットワークに関係なく、リゾルバリストに8.8.8.8を保持できました。
スティーブンP

8

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

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

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

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

それが役に立てば幸い。


2
これは最もクリーンなソリューションですが、何らかの理由で数年前に私のシステムで動作しなくなりました。それ以来、resolvconfスクリプトまたはchattr + i /etc/resolv.confを無効にしています。
-Tronic

7

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

/etc/resolv.confDHCPリースが更新されたときに、見かけ上自発的な更新が発生する可能性があります。DHCPリースを取得する期間を確認します(これはシステムログに表示されるはずです、と思います/var/log/syslog)。

auditd 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)を停止してから再起動してください。


1
DHCPリリースについては正しいと思います。次のように、ネットワークマネージャーでDHCP設定を変更できnm-connection-editorます。ターミナルで実行します。インターフェイスを選択して、編集をクリックします。IPv4設定では、DHCPアドレス(または同様のもの)のみと呼ばれる方法があるはずです。間違っていなければ、ネームサーバーではなくDHCP経由でIPアドレスを取得できます(以下のフィールドで指定できます)。
クリスチャンスケイト

MACアドレスを静的IPにマップするようにルーターを設定しているため、DNSリースは長期間に渡ります。このauditctl行は私にとってはうまくいきません。NetworkManagerのサービス名はnetwork-manager(ハイフンを含む)と思います。resolvconfパッケージをインストールしていませんでしたが、/etc/resolvconf/フォルダー内にアイテムがあり、別のUbuntuマシンと比較したときにそれがなかったため、パッケージをインストールおよびアンインストールし、そのフォルダーを手動で削除しました。/etc/resolv.conf書き直されたばかりなのでauditctl、仕事に就くのは非常に役立つと思います。
jontsai

@jontsai /etc/resolvconfあなたがresolvconfパッケージを持っていなくても、の存在は正常であり、いくつかのパッケージはそこにフックをドロップし、これらのフックresolvconfはインストールされている場合にのみ使用されます。auditctl問題が再び発生する場合に備えて、行を修正しました。
ジル 'SO-悪である停止

ファイルを編集しているものを見つけるためにユーザーauditdのアイデアが好きでしたが、ファイルが既に変更された後に開始されるようです。
ピーターサンカウスカス

4

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

sudo chattr +i /etc/resolv.conf

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

上記を取り消すには

sudo chattr -i /etc/resolv.conf

多くのための

man chattr

これは私にはうまくいきませんでした。ネットワークマネージャーを再起動しても、/ etc / resolv.confはDHCPネームサーバーで上書きされます。
トミー

GCP内で実行されているDebian 9 VMで働いていました。わーい!ありがとう!
-the0ther


3

私はの更新を無効にするresolv.confと呼ばれるファイル作成することdisable_make_resolv_confにし/etc/dhcp3/dhclient-enter-hooks.d

#!/bin/sh
make_resolv_conf(){
}

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


1

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

私の場合、/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と削除、および編集を試みrequest domain-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問題を解決しました(解決されていないが、heheを回避しました)。しかし、誰かがそれに遭遇した場合、そのシナリオで何が起こっているかを知ることは興味深いかもしれません。


1

ファイルがある場合 /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


dns = noneを追加すると、問題が適切に修正されます。
タイヤ

0

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

DNS1 = 192.168.XX

DNS2 = 192.168.XX

DOMAIN = yourdomain.com

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


0

誰かが同じ場合に備えて:

ファイル内のインターフェイスにdhcpを設定するのを忘れた /etc/network/interfaces

Networkmanagerは、受け取っ/etc/resolv.confたdhcp回答から変更します。

hth


0

ある場合# Generated by NetworkManagerには/etc/resolv.conf

Network Managerの構成を編集します。

sudo vim /etc/NetworkManager/NetworkManager.conf

[main]セクションの追加rc-manager=unmanaged

[main]                                                                                                                                   
rc-manager=unmanaged

どうして?

rc-manager-resolv.conf管理モードを設定します。デフォルト値はNetworkManagerのビルドオプションに依存し、このバージョンのNetworkManagerはデフォルトの「symlink」でビルドされました。

(...)

unmanaged:触れないでください/etc/resolv.conf

詳細情報の構成リファレンス:https : //developer.gnome.org/NetworkManager/stable/NetworkManager.conf.html

次に、を編集して/etc/resolv.confNetwork Managerを再起動し、/etc/resolv.confそのままであるかどうかを確認します。

sudo systemctl restart NetworkManager

または

sudo service network-manager restart

より:

cat /etc/resolv.conf

手順が失敗した場合は/etc/resolv.conf、ネットワーク管理の際に上書きされた追加してみてください再起動dns=noneする[main]よう設定してセクションhttps://askubuntu.com/a/1150326/364772は言いました

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.