web-dev-qa-db-ja.com

ネットワークインターフェイスの順序を制御するにはどうすればよいですか?

3つのNICを備えたマシンを構成しようとしています。最初の2つは組み込みGbEコントローラー、3つ目は10GbEコントローラーです。 NetworkManagerを使用して、静的IPアドレスを使用するように「最初の」GbE NIC(当時はeth0)を構成しました。2番目のGbE NIC別のプライベートネットワークで構成され、10GbE NICは現在使用されていません。

マシンを再起動すると、eth0、eth1、eth2などの順序がランダムに表示されます。 eth0が静的IPアドレスを取得することもあれば、eth1として認識されてDHCPアドレスを取得することもあります。この場合、正しく再構成する前にケーブルを交換する必要があります。

特定の物理NIC=が次の再起動を変更せずに常にeth0またはeth1として表示されるように、順序を制御するにはどうすればよいですか?

6
Andy

RHEL 6で引き続きサポートされている方法は、udevデバイスルールによるものです。

自動生成される/etc/udev/rules.d/70-persistent-net.rules一貫した命名を強制します:

# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.

# PCI device 0x8086:0x10c9 (igb)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:25:90:1d:d1:30", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

# PCI device 0x8086:0x10c9 (igb)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:25:90:1d:d1:31", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

そうでない場合は、独自のMACアドレスで同様の構文を使用して、永続的なデバイスの命名を強制できます。

3
HBruijn

RHEL 6以降では、これをサポートする方法は 一貫したネットワークデバイスの命名 です。これにより、すべてのインターフェイスがハードウェアに基づいた意味のある名前を取得し、システムの使用期間を通じて同じままです(ハードウェアを変更しない場合でも、変更した場合でも)。

(RHEL 7では 別の命名形式 が使用されることに注意してください。)

RHEL 6でこれに切り替えるには、 システムを再インストール する必要があります。インストールするときは、インストールメディアを起動するとき、およびインストールするたびに、カーネルコマンドラインオプションbiosdevname=1を渡す必要があります。システムを起動します。

4
Michael Hampton

多分誰かがそれらの情報が役に立つと思うでしょう:まず第一に、RHEL7では、システムを再インストールしてインターフェースの命名規則を変更する必要はありません。

注:必要なブートパラメータ:

a) With no parameters or net.ifnames=1 used, the names will use systemd Predictable Network Interface Names
b) With biosdevname=1 used, the names will be managed by udev (technically systemd-udev) using Consistent Network Device Naming
c) With net.ifnames=0 and biosdevname=0 both specified, traditional ("kernel names") ethX names will be used; if udev rules are also added they can rename the interfaces to anything except eth

例:

Edit /etc/default/grub
append selected params eg.
biosdevname=0 net.ifnames=0
grub2-mkconfig -o /boot/grub2/grub.cfg

メイントピックの場合:すべてのインターフェイスの順序を調整する必要がある場合、手順は簡単です。

mv /etc/udev/rules.d/70-persistent-net.rules /root/ 
(New udev rules will be generated at next boot)

Adjust configuration files in
/etc/sysconfig/network-scripts/ifcfg-eth*
[Edit device name, connection name, HWADDR etc.] 

Reboot and then udev will generate rules basing on configuration files - if you did it properely.
4
windoo

RedHat documentation で提案されているように、インターフェース設定ファイルでHWADDR=MAC-addressパラメータを指定できます。

HWADDR = MAC-addressここで、MAC-addressは、AA:BB:CC:DD:EE:FFの形式のイーサネットデバイスのハードウェアアドレスです。このディレクティブは、複数のNIC=を含むマシンで使用し、各NICのモジュールに構成されたロード順序に関係なく、インターフェースに正しいデバイス名が割り当てられるようにする必要があります。このディレクティブは、 MACADDRと組み合わせて。

2
grekasius

HBruijnが言及したように、rhel6の順序は/etc/udev/rules.d/70-persistent-net.rulesです。このファイルは/ lib/udev/write_net_rulesによって書き込まれます。

何らかの理由でネットワークインターフェースの任意の事前に決められた順序が必要な場合は、このスクリプトを独自のスクリプトに置き換えて、70-persistent-net.rulesファイルを作成できます。これにより、上書きされなくなります。

使用するためにデバイス情報を取得できます

lspci | grep -i ethernet

デバイスのリストを取得する

ethtool -i ethx
ethtool -P ethx

それぞれのMACアドレスを取得します(PCI @/MAC @を関連付けます)。

0
tonioc