CentOS 7 - 再起動なしでネットワークインターフェイスの名前を変更する

CentOS 7 - 再起動なしでネットワークインターフェイスの名前を変更する

修正に合格しました/etc/sysconfig/network-scripts

  • eth0 - >ネットワークカード0
  • eth1 - >ネットワークカード1

変更されたネットワークスクリプトの内容は次のとおりです。

# cat /etc/sysconfig/network-scripts/ifcfg-nic0
DEVICE=nic0
BOOTPROTO=static
ONBOOT=yes
HWADDR=xx:xx:xx:xx:xx:xx
USERCTL=no
IPV6INIT=no
MASTER=bond0
SLAVE=yes

新しい設定を有効にするには、再起動してください。しかし、この設定をどのように有効にできますか?いいえ再起動?

Aはsystemctl restart networkこれを実行できませんでした。

oldname() でインターフェイスを閉じることができますが、古い名前や新しい名前の指定に関係なく、ifdown eth0ifupのメッセージが表示されます。

エラー:[/etc/sysconfig/network-scripts/ifup-eth]デバイスnic0が存在しないため、初期化が遅れます。

/etc/init.d/network status次の出力を表示します。

Configured devices:
lo bond0 nic0 nic1
Currently active devices:
lo eth0 eth1 bond0

両方ifconfigip a以前のインターフェイス名を表示します。

答え1

ip コマンドを使用してデバイス名を変更できます。

/sbin/ip link set eth1 down
/sbin/ip link set eth1 name eth123
/sbin/ip link set eth123 up

編集する:

完全性と後世のために(そして情報提供の目的で)次の内容を残す予定ですが、確認しました。swillについてのコメントそしてマルコ幕組の回答デバイス名を正しく指定するには、インターフェイス /etc/sysconfig/network-scripts/ifcfg-eth0 の名前とデバイスを変更し、ファイル名を変更します。構成ファイルにhwaddr =フィールドを含めるだけです。参照が更新されたら、この方法を使用することをお勧めします。

次回の再起動時に正しく機能するようにudevルールを設定したことを確認することもできます。 udevパスはCentOS 7から/usr/lib/udev/rules.d/60-net.rulesに移動されましたが、まだ同じ方法で管理できます。もしあなたならカーネルの起動文字列に "net.ifnames=0 biosdevname=0" を追加します。ネットワークカードの以前の命名方式に戻るには、次の手順を実行します。

ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{type}=="1", PROGRAM="/lib/udev/rename_device", RESULT=="?*", NAME="$result"

そしてそれに置き換え

ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{address}=="00:50:56:8e:3f:a7", NAME="eth123"

各ネットワークカードに1つのエントリが必要です。正しい MAC アドレスを使用し、名前フィールドを更新してください。意図しない結果が生じる可能性があるため、「net.ifnames=0 biosdevname=0」を使用しない場合は注意してください。

答え2

実際、最良の答えはすでに投稿された2つの答えを組み合わせたものだと思います。ネットワークサービスを再起動せずにデバイス名を変更するには、ip linkJames Shewey()が提案したコマンドを使用してくださいip link set <old_device_name> name <new_device_name>

Red Hat Linuxで再起動後も変更を保持するには、/etc/sysconfig/network-scripts/ファイル名をifcfg_<old_device_name>に変更ifcfg_<new_device_name>し、DEVICE内部変数をに変更します<new_device_name>HWADDRudevルールに触れる必要はありません。これは、60-net.rulesifcfg設定ファイルが実際に読み込まれる場所であるためです/etc/sysconfig/network-scripts

答え3

ip link set ens33 down
ip link set ens33 name eth0
ip link set eth0 up

mv /etc/sysconfig/network-scripts/ifcfg-{ens33,eth0}

sed -ire "s/NAME=\"ens33\"/NAME=\"eth0\"/" /etc/sysconfig/network-scripts/ifcfg-eth0

sed -ire "s/DEVICE=\"ens33\"/DEVICE=\"eth0\"/" /etc/sysconfig/network-scripts/ifcfg-eth0

MAC=$(cat /sys/class/net/eth0/address)

echo -n 'HWADDR="'$MAC\" >> /etc/sysconfig/network-scripts/ifcfg-eth0

答え4

@James Sheweyの答えが正しいアプローチであるようです。

構成ファイルを使用して再ロードをトリガーする場合は、/etc/sysconfig/network-scriptsコメントに記載されている@Tom Huntなど、カーネルモジュールをアンロードしてロードすることも機能します。

service network stop
modprobe -r igb
modprobe igb
service network start

システムにリモートでアクセスする場合は、nohupからすべてのコマンドを実行する必要があります。それ以外の場合、システムはロックされます。

nohup sh -c "service network stop && modprobe -r igb && modprobe igb ; service network start"

もちろん、リロードするドライバはインターフェイスによって異なります。

関連情報