• 文字サイズ変更
  • S
  • M
  • L
  • No : 201
  • 公開日時 : 2024/08/29 12:27
  • 更新日時 : 2024/10/09 15:38
  • 印刷

仮想マシンのデフォルトNICを変更後、通信が不安定になりました。

回答

以下の事象に該当していないかご確認ください。
該当している場合は、後述の対応策を実施してください。
 
■発生条件
以下条件にすべて当てはまる仮想マシンにおいて、本事象が確認されています。
  • CentOS7 系 (RHEL 含む)
  • 複数 NIC を持っている
  • OS 上でスタティックルートを設定している
     

■事象内容
発生条件に当てはまる仮想マシンにて、IDCF クラウドコンソール画面よりデフォルト NIC (デフォルトネットワーク)の変更を実施すると、通信が不安定となります。
また、/var/log/messages に以下のようなエラーメッセージが発生します。

Mar 2 11:53:41 localhost NetworkManager[XXX]: <error> [XXXXXXXXXXXX] platform-linux: do-add-ip4-route[2: 10.XX.XX.XX/XX 100]: failure 101 (Network is unreachable)

ルーティングテーブルとインタフェース状態が、デフォルト NIC 変更前後で以下例のように変化が発生します。
 

  1. ens192 が切断状態になる
  2. ens160 と ens192 それぞれに付与された IP アドレスが逆に設定される。 そのため、ルーティングテーブル上 (★) のデフォルトゲートウェイの IP アドレスが変更されたにもかかわらず、ルーティングファイル名に含まれる NIC 名に変更はない。


【デフォルト NIC 変更前】

# nmcli d

DEVICE  TYPE      STATE     CONNECTION
ens160  ethernet  接続済み  ens160
ens192  ethernet  接続済み  有線接続 1

# ip route show

default via 192.168.7.254 dev ens160 proto dhcp metric 100 ★
10.34.0.0/21 dev ens192 proto kernel scope link src 10.34.0.216 metric 101
192.168.0.0/21 dev ens160 proto kernel scope link src 192.168.0.50 metric 100
172.16.0.0/21 via 192.168.7.254 dev ens160 proto static metric 100


<ルーティングファイル一覧 出力例>

# ls /etc/sysconfig/network-scripts/route-*

/etc/sysconfig/network-scripts/route-ens160


【デフォルト NIC 変更後】

# nmcli d

DEVICE  TYPE      STATE               CONNECTION
ens160  ethernet  接続中(IP 設定を取得中)   ens160
ens192  ethernet  切断済み            --

# ip route show

default via 10.34.0.1 dev ens160 proto dhcp metric 100 ★
10.34.0.0/21 dev ens160 proto kernel scope link src 10.34.0.216 metric 101
192.168.0.0/21 dev ens192 proto kernel scope link src 192.168.0.50 metric 100
172.16.0.0/21 via 192.168.7.254 dev ens192 proto static metric 100


<ルーティングファイル一覧 出力例>

# ls /etc/sysconfig/network-scripts/route-*

/etc/sysconfig/network-scripts/route-ens160  #変更前とルーティングファイル名の NIC 名が変わっていない


上記のルーティングファイル一覧 出力例にて、デフォルト NIC 変更前は、 ens160 側のルーティングファイルが設定されていることがわかります。
しかし、デフォルト NIC 変更後は、もともと ens160 に付与されていた IP アドレスが ens192 に付与されています。
 

■原因
CentOS7 系(RHEL 含む)の挙動として、デフォルト NICを変更すると、同時に OS 内の NIC 名が変更されてしまいます。
それにともなってルーティングファイルのファイル名も NIC 名に合わせて変更されることを期待されますが、ファイル名は変更されません。
これにより NIC 名をもとに設定を読み込んでいるルーティング設定が適切に反映されません。
 
■対応策
OS 上でルーティングファイル名の変更が必要です。
手順を以下に記載します。
 

1. ルーティングファイルの中身を参照し、切断状態の NIC(本例では ens192 )のルーティング設定が記述されていることを確認します。

[root@localhost network-scripts]# cat route-ens160
ADDRESS0=172.16.0.0
NETMASK0=255.255.248.0
GATEWAY0=192.168.7.254 # ens192 のゲートウェイとなっている


2. 以下コマンドで、正しい NICのルーティングファイル名を変更します。
本例では、ルーティングファイル名に含まれる NIC 名を ens160 から ens192 に変更します。

# mv route-ens160 route-ens192


3. ネットワークを再起動します。

# systemctl restart network


4. 以下コマンドを再度実行し、接続ができるようになったことを確認できます。

# nmcli d

DEVICE  TYPE      STATE     CONNECTION
ens160  ethernet  接続済み  ens160
ens192  ethernet  接続済み  有線接続 1


以上で対応策は完了です。

アンケート:ご意見をお聞かせください

ご意見・ご感想をお寄せください お問い合わせを入力されましてもご返信はいたしかねます