web-dev-qa-db-ja.com

systemdでインターフェースの名前が変更されない

Ubuntu 16.04 VPSのネットワークインターフェイスの名前を変更しようとしていますが、変更できません。 Systemdは、プライマリネットワークインターフェイスにenp0s3という名前を付けています。このインターフェースの名前をeth0に変更します。

systemd.linkドキュメント によると、次の内容の/etc/systemd/network/10-eth0.linkというファイルを作成しました。

[Match]
MACAddress=08:00:27:f7:57:e5

[Link]
Name=eth0

MACアドレスは、インターフェイスのip a出力で指定されたものと一致します。また、/etc/network/interfacesファイルのenp0s3エントリの名前をeth0に変更しました。ただし、マシンを再起動すると、インターフェイスの名前は引き続きenp0s3になります。

dmesg出力の次のエントリは私にとって興味深いものです。

e1000 0000:00:03.0 eth0:(PCI:33MHz:32-bit)08:00:27:f7:57:e5
e1000 0000:00:03.0 eth0:Intel(R)PRO/1000 Network Connection
e1000 0000:00:03.0 enp0s3:eth0から名前変更

したがって、どうやら、それはeth0として始まりますが、再びenp0s3に名前変更されます。なぜだかわかりませんか?

リンクファイルをデバッグしようとすると、次の出力が表示されます。

$ Sudo udevadm test-builtin net_setup_link /etc/systemd/network/10-eth0.link
calling: test-builtin
=== trie on-disk ===
tool version:          229
file size:         6841778 bytes
header size             80 bytes
strings            1755242 bytes
nodes              5086456 bytes
Load module index
timestamp of 'etc/systemd/network' changed
Parsed configuration file /lib/systemd/network/99-default.link
Parsed configuration file /etc/systemd/network/10-eth0.link
Created link configuration context.
unable to open device '/sys/etc/systemd/network/10-eth0.link'

Unload module index
Unloaded link configuration context.

デバイスを開くことができないという行は奇妙に見えます。なぜそれを試みているのかわかりません、/ sysの下にetcディレクトリがまったくありません。作成する必要がありますか?

なぜ私のインターフェース名が付かないのかについての洞察は大歓迎です。

5
Oldskool

https://www.freedesktop.org/software/systemd/man/systemd.link.html によると、デフォルトの命名ポリシーは次のとおりです。

#  /usr/lib/systemd/network/99-default.link
[Link]
NamePolicy=kernel database onboard slot path
MACAddressPolicy=persistent

だから、あなたはあなたのeth0.linkに次の行を追加したいと思うかもしれません:

NamePolicy=mac

私はこれをテストしていなかったので、はっきりしませんが、問題はMACで一致しているのではないかと思いますが、それを維持するための命名ポリシーはありません。

各ポリシーは失敗する可能性があり、最初に成功したポリシーが使用されます。名前は直接設定されませんが、プロパティ「ID_NET_NAME」としてudevにエクスポートされます。これは、デフォルトで、udevルールによって「NAME」を設定するために使用されます。名前がユーザースペースによってすでに設定されている場合、名前変更は実行されません

それはただの推測です。

また、少なくとも https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/ ごとにdefault.linkを無効にすることもできるはずです。

私が実行している一部のopenSUSEシステムでは、同様の問題がありました(99-default.link 'trick'を使用する必要があることに加えて)、/ etc/udev/rules.dの下に2つのファイルを作成することで解決しました(- https://unix.stackexchange.com/questions/118272/80-net-setup-link-no-longer-functions-when-i-downgraded-systemdhttps:// wiki.archlinux.org/index.php/Network_configuration#Device_names および https://wiki.gentoo.org/wiki/Udev/Upgrade_Guide ):

Sudo touch /etc/udev/rules.d/80-net-setup-link.rules(またはその名前の空のファイルがその場所にあることを確認してください)

そして

/etc/udev/rules.d/10-persistent-network.rulesを作成しました:

ACTION=="add", SUBSYSTEM=="net", KERNEL=="eth*", ATTR{tx_queue_len}="1000"

あなたの場合、実際にそのファイルを使用して、必要な名前を設定できます。

ACTION=="add", SUBSYSTEM=="net",ATTR{address}=="08:00:27:f7:57:e5",NAME="eth0"
6

上記のすべてを試しました。何も機能しません。私は2週間研究を続けています。

私は答えを見つけ、それはうまくいきました。ここに:

https://superuser.com/questions/914646/renaming-network-interface-with-systemd

投稿には、レナルトのノートへのリンクが含まれていますが、まったく役に立ちません。投稿を読んで、あなたは勝つべきです。

これが私がそれを機能させる方法です:

ステップ1:Sudo nano /etc/udev/rules.d/70-local-net-names.rules

SUBSYSTEM == "net"、ACTION == "add"、ATTR {address} == "74:da:38:68:55:c1"、NAME = "wlan1"

このファイルは/usr/lib/udev/rules.d/80-net-setup-link.rulesの前に注文する必要があります

これはDebian Stretchで動作します。 Ubuntuでも動作するはずです。

3
Nettmaus

Systemdドキュメントによると、これは新しい 予測可能なネットワークインターフェイス名 が原因です。

ドキュメントでは、その動作を無効にする3つのオプションがあると言っています。おそらく3番目のオプションが最も簡単です。

  1. 固定名の割り当てを無効にして、予測できないカーネル名が再び使用されるようにします。これを行うには、デフォルトポリシーのudevの.linkファイルをマスクします。ln -s/dev/null /etc/systemd/network/99-default.link

  2. インターフェースに「internet0」、「dmz0」、「lan0」などの名前を付けることにより、独自の手動命名方式を作成します。そのためには、/ etc/systemd/network /に独自の.linkファイルを作成します。これにより、1つ、一部、またはすべてのインターフェースに対して明示的な名前またはより適切な命名方式が選択されます。詳細については、systemd.link(5)を参照してください。

  3. カーネルコマンドラインでnet.ifnames = 0を渡す

1
Andor

examples は、NamePolicy=を設定する必要があることを明示的に示しています。

[Link]
NamePolicy=
Name=eth0

Name=eth0が優先されます。それ以外の場合は、デフォルトのNamePolicyが優先されます。

私はこれをテストし、それが問題を修正することを確認できます。

0
Zulakis