毎度、ググっても出てこない小ネタを取り扱っております。
本記事は個人的な見解であり、筆者の所属するいかなる団体にも関係ございません。
本ブログは、問題解決の為にGPT-5.4と会話した内容を元にGPT-5.4で作成しました。
1. NVIDIA Base Command Managerのヘッドノードでens18のIPアドレスとDNS設定を変更した手順
1-1. はじめに
NVIDIA Base Command Manager(以下、BCM)のヘッドノードで、外部向けインターフェースens18のIPアドレスとDNS設定を変更した際の手順をまとめます。
今回の目的は、次の2点です。
-
ens18のIPアドレスをDHCP取得から固定IPアドレス192.0.2.135へ変更する - DHCP由来のDNS設定を削除し、DNSサーバーを
192.0.2.53に統一する
最終的には、以下の状態にできました。
-
ens18のIPアドレス:192.0.2.135 - デフォルトゲートウェイ:
192.0.2.1 - DNSサーバー:
192.0.2.53 - DHCP由来のDNS設定: 削除済み
BCM環境ではOS側の設定ファイルを直接編集するのではなく、cmshで管理されている設定を変更するのが正しい流れでした。
1-2. 変更前の状態
変更前のens18は、以下のようにDHCPでIPアドレスを取得していました。
ip a show ens18
2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether bc:24:11:60:53:90 brd ff:ff:ff:ff:ff:ff
altname enp0s18
inet 192.0.2.9/24 brd 192.0.2.255 scope global dynamic ens18
ルーティングは次のようになっていました。
ip route
default via 192.0.2.1 dev ens18
192.0.2.0/24 dev ens18 proto kernel scope link src 192.0.2.9
BCM側でも、ens18はDHCPインターフェースとして認識されていました。
cmsh -c "device interfaces bcm11-headnode; list"
cmsh -c "device interfaces bcm11-headnode; get ens18 dhcp"
cmsh -c "device interfaces bcm11-headnode; get ens18 ip"
Type Network device name IP Network Start if
------------ -------------------- ---------------- ---------------- --------
physical ens18 [dhcp] 192.0.2.9 externalnet always
physical ens19 [prov] 10.141.255.254 internalnet always
yes
192.0.2.9
この状態から、ens18を固定IP化していきます。
2. IPアドレス変更前の確認
2-1. ゲートウェイ疎通を確認した
まず、現在のネットワークが正常に動いていることを確認するため、デフォルトゲートウェイへの疎通を確認しました。
ping -c 3 192.0.2.1
結果は正常で、ゲートウェイへの疎通に問題はありませんでした。
2-2. 変更予定のIPアドレスが未使用か確認した
次に、設定予定のIPアドレス192.0.2.135が他の機器で使われていないことを確認しました。
arping -D -I ens18 192.0.2.135
このとき、ARP応答は返ってきませんでした。
Sent 26 probes (26 broadcast(s))
Received 0 response(s)
そのため、192.0.2.135は未使用と判断できました。
2-3. BCM上の現在値を退避した
作業前に、現在の値を簡単に退避しておきました。
cmsh -c "device interfaces bcm11-headnode; list" > /root/bcm11-headnode.interfaces.before.txt
ip a show ens18 > /root/ens18.before.txt
ip route > /root/ip-route.before.txt
後から比較できるようにしておくと、トラブル時に戻しやすくなります。
3. ens18を固定IPアドレスへ変更した
3-1. DHCPを無効化した
まず、ens18のDHCPを無効化しました。
cmsh -c "device interfaces bcm11-headnode; set ens18 dhcp no; commit"
このとき、次の警告が表示されました。
warning: No DHCP interfaces detected, but name servers from DHCP in partition is set
この警告は、インターフェース側ではDHCPを無効化したのに、BCMのpartition設定にDHCP由来のDNS情報が残っていることを示しています。
ただし、これはエラーではなく警告でした。
3-2. 固定IPアドレスを設定した
続いて、ens18のIPアドレスを192.0.2.135へ変更しました。
cmsh -c "device interfaces bcm11-headnode; set ens18 ip 192.0.2.135; commit"
このときも、同じ警告が表示されました。
warning: No DHCP interfaces detected, but name servers from DHCP in partition is set
3-3. BCM上で設定が反映されたことを確認した
設定後に、BCM側の値を確認しました。
cmsh -c "device interfaces bcm11-headnode; get ens18 dhcp"
cmsh -c "device interfaces bcm11-headnode; get ens18 ip"
cmsh -c "device interfaces bcm11-headnode; list"
結果は以下のとおりです。
no
192.0.2.135
Type Network device name IP Network Start if
------------ -------------------- ---------------- ---------------- --------
physical ens18 192.0.2.135 externalnet always
physical ens19 [prov] 10.141.255.254 internalnet always
これで、BCM上ではens18の固定IP化が完了しました。
4. DNS設定を確認した
4-1. partitionにDHCP由来のDNS設定が残っていた
先ほどの警告の原因を確認するため、partition設定を確認しました。
cmsh -c "partition use base; show"
重要な部分は次のとおりです。
Name servers 192.0.2.53
Name servers from dhcp 192.0.2.1
つまり、BCMのpartitionには以下の2種類のDNS情報が同時に存在していました。
- 明示的に設定されているDNSサーバー:
192.0.2.53 - DHCP由来で残っていたDNSサーバー:
192.0.2.1
今回のようにIPアドレスを静的にした場合、DHCP由来のDNS情報は不要です。
4-2. OS側でも両方のDNSが見えていた
OS側の/etc/resolv.confでも、実際に両方のDNSサーバーが見えていました。
cat /etc/resolv.conf
nameserver 127.0.0.1
nameserver 192.0.2.53
nameserver 192.0.2.1
search cm.cluster nvidia.com eth.cluster
さらに、resolvectl statusでも同じ状態でした。
resolvectl status
DNS Servers: 127.0.0.1 192.0.2.53 192.0.2.1
この時点で、DHCP由来のDNSがOSにも反映されていることが分かります。
5. DHCP由来のDNS設定を削除した
5-1. nameserversfromdhcpを確認した
まず、cmshの対話モードに入り、対象プロパティを確認しました。
cmsh
partition use base
get nameserversfromdhcp
結果は以下のとおりです。
192.0.2.1
5-2. clearで削除した
続いて、DHCP由来DNS設定を削除しました。
clear nameserversfromdhcp
この時点で、プロンプトが未コミット状態を表す表示に変わりました。
[bcm11-headnode->partition*[base*]]%
削除後に再確認すると、値は空になっていました。
get nameserversfromdhcp
その後、commitして確定しました。
commit
再度確認すると、nameserversfromdhcpは空のままでした。
get nameserversfromdhcp
これで、DHCP由来のDNS設定はBCM上から削除されました。
6. OS側への反映を確認した
6-1. /etc/resolv.confを確認した
cmshでの変更後、OS側のDNS設定を確認しました。
cat /etc/resolv.conf
結果は以下のとおりです。
nameserver 127.0.0.1
nameserver 192.0.2.53
search cm.cluster nvidia.com eth.cluster
先ほどまで存在していた192.0.2.1が消えており、192.0.2.53だけになっていました。
6-2. resolvectl statusを確認した
続いて、systemd-resolvedの状態も確認しました。
resolvectl status
重要な部分は次のとおりです。
Global
DNS Servers: 127.0.0.1 192.0.2.53
DNS Domain: cm.cluster eth.cluster nvidia.com
こちらでも、DHCP由来のDNSが消えていることを確認できました。
7. 再起動後の永続化を確認した
7-1. BCM上の設定を確認した
再起動後に、BCM上の値を改めて確認しました。
cmsh -c "partition use base; get nameservers"
cmsh -c "partition use base; get nameserversfromdhcp"
cmsh -c "device interfaces bcm11-headnode; get ens18 ip"
結果は以下のとおりです。
192.0.2.53
192.0.2.135
nameserversfromdhcpは空のままで、ens18のIPアドレスも192.0.2.135のままでした。
7-2. OS側の設定も確認した
OS側の/etc/resolv.confも確認しました。
cat /etc/resolv.conf
nameserver 127.0.0.1
nameserver 192.0.2.53
search cm.cluster nvidia.com eth.cluster
再起動後も、DNSサーバーは192.0.2.53のみになっていました。
これにより、今回の設定変更が一時的なものではなく、BCM管理下の永続設定として保存されていることを確認できました。
8. 最終的な状態
8-1. IPアドレス設定
最終的なens18のIPアドレス設定は以下のとおりです。
- IPアドレス:
192.0.2.135 - サブネット:
192.0.2.0/24 - デフォルトゲートウェイ:
192.0.2.1
8-2. DNS設定
最終的なDNS設定は以下のとおりです。
- DNSサーバー:
192.0.2.53 - DHCP由来DNS: 削除済み
-
/etc/resolv.confにも反映済み
9. 今回のポイント
9-1. IPアドレス変更だけでは不十分な場合がある
今回の作業では、IPアドレスをDHCPから固定へ変えただけでは完了しませんでした。
partition側にName servers from dhcpが残っていたため、警告が表示され、OS側でも不要なDNSサーバーが見えていました。
そのため、BCM環境ではIPアドレス変更に加えて、DNS設定の整合性まで確認する必要があります。
9-2. BCM管理の設定はcmshで確認・変更する
今回の変更対象は、OSの一時設定ではなく、BCMの管理情報でした。
そのため、次のような項目はcmshで確認・変更する必要があります。
device interfaces ...partition use basenameserversnameserversfromdhcp
設定後にcommitし、再起動後も値が残っていることを確認するのが重要です。
10. 実際に使ったコマンド一覧
10-1. IPアドレス確認と変更
ip a show ens18
ip route
cmsh -c "device interfaces bcm11-headnode; list"
cmsh -c "device interfaces bcm11-headnode; get ens18 dhcp"
cmsh -c "device interfaces bcm11-headnode; get ens18 ip"
ping -c 3 192.0.2.1
arping -D -I ens18 192.0.2.135
cmsh -c "device interfaces bcm11-headnode; set ens18 dhcp no; commit"
cmsh -c "device interfaces bcm11-headnode; set ens18 ip 192.0.2.135; commit"
10-2. DNS確認と変更
cmsh -c "partition use base; show"
cat /etc/resolv.conf
resolvectl status
cmsh
partition use base
get nameserversfromdhcp
clear nameserversfromdhcp
commit
get nameserversfromdhcp
11. まとめ
11-1. 今回の結論
NVIDIA Base Command Managerのヘッドノードでens18のIPアドレスを変更する場合は、cmshでDHCPを無効化し、固定IPアドレスを設定します。
ただし、それだけでは不十分な場合があります。
今回の環境では、partition側にDHCP由来のDNS設定が残っていたため、以下もあわせて実施しました。
-
ens18を固定IP192.0.2.135に変更 -
nameserversfromdhcpを削除 - DNSサーバーを
192.0.2.53に整理 - 再起動後も設定が残ることを確認
11-2. 同じような作業をするときの注意点
同じような作業を行う場合は、次の流れで進めると分かりやすいと思います。
- 現在のIPアドレスとゲートウェイを確認する
- 変更先IPアドレスが未使用か確認する
-
cmshでDHCPを無効化する -
cmshで固定IPを設定する -
partitionのDNS設定を確認する - 必要なら
nameserversfromdhcpを削除する -
/etc/resolv.confとresolvectl statusでOS側反映を確認する - 再起動後に永続化を確認する