Red Hat 7のNetwork Managerで、ホスト名を変更した後、古い/間違った検索ドメインが使用されるという問題が発生します。 /etc/resolv.confで、私は見ます:
# Generated by NetworkManager
search **ec2.internal** d.sample.com
nameserver 172.31.0.2
hostname
と入力すると、目的の出力が表示されます。
[root@testing01 ~]# hostname
testing01.d.sample.com
ただし、置換検索ドメインの代わりに、それは追加検索ドメインへの新しいドメイン名です。私はec2.internalを完全に削除し、このドメインを完全に斧にしたいと考えています。 /etc/resolv.conf
ファイルを直接編集すると、Network Managerによって破壊されます。 Network Managerを無効にしたくないので、どうしても必要な場合を除き、NMによる/etc/resolv.conf
の管理を無効にしたくありません。
それで、1)NMが私の検索ドメインを元に戻し続けるのはなぜですか、2)nmcliまたはコマンドラインツールのみを使用してこれをどのように修正できますか?
数時間ぶらついた後、私はこれを解決することができました。結局、これはDHCP経由で設定されていました:
nmcli -f ip4 device show eth0
IP4.ADDRESS[1]: 172.31.53.162/20
IP4.GATEWAY: 172.31.48.1
IP4.DNS[1]: 172.31.0.2
IP4.DOMAIN[1]: ec2.internal
ネットワークインターフェイスのipv4.dns-search値を上書きすることで、IP4.DOMAIN [1]を上書きすることができました。
nmcli connection modify uuid \`nmcli connection show --active | grep 802-3-ethernet | awk '{print $(NF-2)}' | tail -n 1` ipv4.dns-search d.sample.com
またはもっと簡単に
nmcli connection modify System\ eth0 ipv4.dns-search "d.sample.com"
次に、NetworkManagerを再起動する必要があります
systemctl restart NetworkManager.service
また、Amazonインスタンスを使用していたため、 cloud.cfgファイルを更新する必要がありました。
/etc/resolv.confファイルは、ネットワークに変更または更新があると常に上書きされます。 /etc/resolvconf/resolv.conf.d/
フォルダー内のファイル、つまりhead
ファイルを編集することで、何を書き込むかを制御できます。
これを/etc/resolvconf/resolv.conf.d/head
ファイルに配置します。
nameserver 172.31.0.2
search testing01.d.sample.com
これは、更新されるたびに/etc/resolv.conf
のヘッダーになります。
Redhatベースのシステムの場合、次の手順を使用します:
/etc/sysconfig/network-scripts
にあるネットワークスクリプトを編集します。検出されたネットワークデバイスのエントリが表示されます(つまり、ネットワークアダプターeth0
のifcfg-eth0)。
このファイルを編集(/etc/sysconfig/network-scripts/ifcfg-eth0
):
この行を追加:
DOMAIN=sample.com
次のコマンドも実行します。
$ Sudo hostnamectl set-hostname --static "testing01.d.sample.com"
ほとんどの場合、変更を有効にするにはシステムを再起動する必要があります。
「nmcli connection modify ...」で接続ファイルが変更されているが、アクティブな接続は変更されていない場合:
nmcli c load/etc/NetworkManager/system-connections/the-connection-name [-possibly-uuid-too]
man nmcli:connection-- load filename ... 1つまたは複数の接続ファイルをディスクからロード/リロードします。接続ファイルを手動で編集した後にこれを使用して、NetworkManagerが最新の状態を認識していることを確認します。