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
/etc/resolv.conf
に静的に追加できます。これらの追加は、自動的に追加されるものをオーバーライドできます。
まず、resolvconf
パッケージをインストールします。
次に、Alt + F2を押してgksudo nautilus
を実行します。ファイルの先頭に追加する場合は、/etc/resolvconf/resolv.conf.d/head
を開きます。最後に追加する場合は、/etc/resolvconf/resolv.conf.d/tail
を開きます。変更を加え、ファイルを保存/閉じてから、Sudo resolvconf -u
を実行して変更を適用します。
(ファイルの開始時または終了時の設定の優先順位が最も高いかどうか覚えていません。)
私はまったく同じ問題を抱えていました-サーバーがリブートされるたびにresolv.confが書き換えられます。
DHCPが原因でした。 resolv.confを希望どおりに設定するために、/etc/dhcp/dhclient.conf
を編集し、次を追加しました。
supersede domain-name "my.domain.com";
prepend domain-search "my.domain.com";
これに変更を加えることで、実際にresolv.confファイルについてかなり制御できます。
それが役に立てば幸い。
(この回答には、何が起こっているかを調査する方法が含まれています。これらの方法を使用して詳細情報を収集および提供すると、実際のソリューションを提供できる場合があります。)
/etc/resolv.conf
に対する一見自発的な更新のトリガーとして考えられるのは、DHCPリースが更新されたときです。 DHCPリースを取得する期間を確認してください(これはシステムログに表示されるはずです。/var/log/syslog
にあると思います)。
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
)を停止してから再起動してください。
ターミナルを開いて入力します
Sudo chattr +i /etc/resolv.conf
+ iは、rootであってもブート時にファイルがリセットされないように注意します。
上記を取り消すには
Sudo chattr -i /etc/resolv.conf
多くのための
man chattr
resolv.conf
にdisable_make_resolv_conf
というファイルを作成して、/etc/dhcp3/dhclient-enter-hooks.d
の更新を無効にします
#!/bin/sh
make_resolv_conf(){
}
resolv.conf
リフレッシュを担当するのと同じ名前で標準関数を置き換えます。
運がよかった別のオプションには、resolvconf
の使用が含まれます。
このファイルにエントリを追加します。
/etc/resolvconf/resolv.conf.d/base
そして、それらは/etc/resolv.conf
に追加されます。
このUbuntuの投稿のおかげで: resolv.confに再起動時に失われない行を含めるにはどうすればよいですか?
遅くなりましたが、上記のすべてとは異なるため、ケースを投稿します。
私の場合、/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
に追加しました。問題は解決しました(解決せず、回避しました)。しかし、誰かがそれに遭遇した場合、そのシナリオで何が起こっているかを知ることは興味深いかもしれません。
ファイル/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
Ifcfg-ethXファイルに次のように入力するだけです
DNS1 = 192.168.X.X
DNS2 = 192.168.X.X
DOMAIN = yourdomain.com
ネットワークマネージャーは、サービスの再起動後またはボックスの再起動後に、これらのレコードをresolv.confファイルに保留します。