私Ubuntuサーバー14.042つのネットワークインターフェースを備えた仮想マシン
eth0
- Web管理の場合SSHeth1
- 受信スパンネットワーク分析用
Macアドレスと論理ネットワークインタフェース名の一貫性と正しいバインディングを確保するために、udevルールを使用してシステムを設定しました。
- サーバーをインストールするときにこれを一度だけ行いました。
このルールを書く
/etc/udev/rules.d/70-persistent-net.rules
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:f5:aa:02", ATTR{dev_id}=="0x0", ATTR{type}=="1", NAME="eth1" SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:f5:aa:f8", ATTR{dev_id}=="0x0", ATTR{type}=="1", NAME="eth0"
この設定は期待どおりに機能します。新しいネットワークインターフェイスがマシンに追加されるまで。新しいインターフェイスは次のとおりです。udevルールに追加されない。 (設定中は一度だけ行うので)
新しいネットワークインタフェース名は一般的な名前(たとえば/// eth3
...)と見なされます。p2p1
em1
名前を使用しない限りudevルールを通して。
インターフェイスを追加してコンピュータを起動した後の経験は次のとおりです。
- 私のudevルールは無視/衝突し、名前が付けられました。
rename3
eth0
誘拐されました。現在、新しいインタフェースの1つはeth0
セキュリティの面で非常に重要な問題です(データ漏洩につながる可能性があります)。
私が見つけた関連プロセスは次のとおりです。/var/log/messages
systemd-udevd[126]: starting version 204
...
vmxnet3 0000:04:00.0 eth0: NIC Link is Up 10000 Mbps
vmxnet3 0000:0b:00.0 eth1: NIC Link is Up 10000 Mbps
vmxnet3 0000:13:00.0 eth2: NIC Link is Up 10000 Mbps
vmxnet3 0000:1b:00.0 eth3: NIC Link is Up 10000 Mbps
...
vmxnet3 0000:0b:00.0 rename3: renamed from eth1
vmxnet3 0000:13:00.0 eth1: renamed from eth2
systemd-udevd[396]: renamed network interface eth1 to rename3
systemd-udevd[405]: renamed network interface eth2 to eth1
- IMO これは競争条件です。ドライバー/カーネルジョブ名。後で私のudevルールが実行されると、占有された名前は次に戻ります。
rename*
質問、
ドライバ/カーネルがインターフェイス名を使用する前に順序を変更し、udev-rulesに優先順位を付ける方法はありますか?
注 - 次の回避策(POCレベル)が私にとって効果的でした。
- udevルールで別の命名規則(たとえば、
management0
および)を使用すると、span0
デフォルト値と競合しないため、問題なく動作します。- @bootのスクリプトの実行 - ハードウェアの変更に関連するudevルールをオーバーライドします。動作しますが、追加の再起動が必要です(素直なアプローチ)。問題ありません。