CentOS7。ネットワークでは、すべてが正常です。
# cat /etc/resolv.conf
nameserver 192.168.1.1
その後、ホスト名を変更することにしました。
# hostnamectl set-hostname host.domain
# reboot
# cat /etc/resolv.conf
# Generated by NetworkManager
search domain
# No nameservers found; try putting DNS servers into your
# ifcfg files in /etc/sysconfig/network-scripts like so:
#
# DNS1=xxx.xxx.xxx.xxx
# DNS2=xxx.xxx.xxx.xxx
# DOMAIN=lab.foo.com bar.foo.com
hostnamectl set-hostname
なぜ私を混乱させているのです/etc/resolv.conf
か?
答え1
MikeAが公式の回答で質問に対するコメントで言ったことを繰り返すと、次のようになります。
dhcpclientである必要はありませんが、NetworkManagerにすることができます。同じファイルに DNS1、DNS2、DOMAIN を指定すると、正しい /etc/resolv/conf が生成されます。
DNS1、DNS2、および DOMAIN がこのファイルにない場合は、/etc/resolv.conf (たとえば、検索およびネームサーバー) に正しい行を手動で追加する必要があります。 - MikeA
私は彼の意見に成功しました(詳細は以下を参照)。
NetworkManager(CentOS 7 - 現在の方法)
- 次の行を追加します
/etc/sysconfig/network-scripts/ifcfg-<inf>
。DNS1=8.8.8.8 DNS2=8.8.4.4 DOMAIN=mydomain.com
- 再起動
"静的" resolv.conf (以前の方法)
PEERDNS=no
存在する/etc/sysconfig/network-scripts/ifcfg-<inf>
- 正しい行
/etc/resolv.conf
(検索、ネームサーバーなど)を手動で追加します(デフォルトでは
追加情報と詳細
ネットワークエラーによりご質問いたします。
サーバーは、KVM環境で実行されるCentOS 7仮想マシンです。
オペレーティングシステムは、SolusVMコントロールパネルテンプレートを介してインストールされます。
CentOS 7をインストールした後、2つの方法のいずれかを使用してホスト名を変更しましたが、どの方法を使用したか覚えていません。
hostname myserver.mydomain.com
;または- SolusVMコントロールパネルの「ホスト名」タブの使用
私は以前のホスト名を表示しhostname
て使用するinit GITコミットがありましたが、固定IPと新しいホスト名/ドメインを持つエントリがあったので、後者だけが行ったと確信しています。違いは下記をご覧ください。resolv.conf
hosts
何らかの理由でこの変更が続いていないように見え、SolusVM(またはKVM Manager)を介してVMがハングして再起動が発生した場合、ホスト名は元の名前に戻りましたsystemd
。
その後、CentOS 7ではホスト名を使用する必要があることがわかりましたhostnamectl set-hostname myserver.mydomain.com
。 [1]
これを実行して再起動した後、DNS検証がなくなり、たとえばnslookup google.com
DNS ping google.com
/確認なしエラーが発生することがわかりました。
SolusVM CentOS 7インストールテンプレートで設定されたすべてのDNS設定はNetworkManagerによって削除されたように見え、これらの変更の原因が誰であるかは不明ですが、GITでは変更が行われたことは明らかです/etc/hostname
。すぐにコマンドを実行します(以下の違いをもう一度参照してください)。/etc/resolv.conf
/etc/machine-info
hostnamectl ...
同様の状況にある人のためのトラブルシューティング目的や明確な例のために私がとった具体的なステップは次のとおりです。
目標:ホスト名、ドメイン名の更新(fqdn)
(明示的:myOLDhostname.myOLDdomain.com - > myNEWhostname.myNEWdomain.com)
初期状態:
hostname
:myOLDhostname.myOLDdomain.com
resolv.conf
:
# Generated by NetworkManager search myOLDdomain.com nameserver 8.8.8.8 nameserver 8.8.4.4
machine-info
:(/dev/null
つまり、存在しない)
コマンドの実行
hostnamectl set-hostname myNEWhostname.myNEWdomain
- 再起動。再起動後、VMに再びSSHを介して接続します。
nslookup google.com
、を試行中にping google.com
次のエラーが発生しました。ping: unknown host google.com
cat /etc/resolv.conf
次のようになります。
# Generated by NetworkManager
search myNEWdomain.com
# No nameservers found; try putting DNS servers into your
# ifcfg files in /etc/sysconfig/network-scripts like so:
# DNS1=xxx.xxx.xxx.xxx
# DNS2=xxx.xxx.xxx.xxx
# DOMAIN=lab.foo.com bar.foo.com
- 検索結果、、、およびの項目が
/etc/sysconfig/network-scripts/ifcfg-eth0
ないため、結果はです。DNS1
DNS1
DOMAIN
nameserver
/etc/resolv.conf
- 次のように追加します
sudoedit /etc/sysconfig/network-scripts/ifcfg-eth0
。
DNS1=8.8.8.8
DNS2=8.8.4.4
DOMAIN=myNEWdomain.com
- もう一度コマンドを実行します
hostnamectl set-hostname myNEWhostname.myNEWdomain
- しかし、まだDNSがないため、
nslookup
まだping
失敗します。 - 提案されているようにNetworkManagerを再起動してみました。
systemctl restart NetworkManager.service
- まだDNSがないので、コマンドを実行しました。
reboot
- 再起動後、SSH経由で再度ログインしましたが、すべてが正常でした。
ping
そしてnslookp
それはすべて効果がありました。 - 次に、
cat /etc/resolv.conf
含まれている項目を確認して確認しますnameserver
。
# Generated by NetworkManager
search myNEWdomain.com
nameserver 8.8.4.4
nameserver 8.8.8.8
GITの場合etckeeper
(デフォルトでは管理者のGITリポジトリ)を使用しており、/etc
コマンドを実行する前に初期設定が表示され、ネットワーク関連ファイルに対する他の変更は明確に表示されません。/etc/{hostname,resolv.conf,hosts}
hostnamectl
答え2
メインセクションにresolv.conf
スニペットを追加して、Networkmanager に変更しないように指示できます。nodns
/etc/NetworkManager/conf.d/nodns.conf
[main]
dns=none
(忘れないでくださいsystemctl restart NetworkManager
)