それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

Linux で eth0 を使わせる.( ethXなNIC名に戻す)

Linux で eth0 を使わせる

enp3s0 のような名前が不便だった。

SSDを載せ替えたり、ネットワークインタフェースを切り替えたりするとどうしても思ったようにならない。マイグレーション・サーバ移転で面倒が起きる。

もう、ネットワーク・インタフェースが1個〜2個に限られるようなサーバーは、eth0 で固定しちゃえばいいじゃないか。

サーバの構成を変更すると、netplan や network-manager が設定移行しなくて/ネットワークにつながらなくて焦る。なんでネットに繋がらない!!って焦ってよく見ると 「enp3s0enp3s1 に変わって設定エラー発生」。こんなことが頻発してもうキレた。

昔みたいにeth0 に固定したい。

起動時のカーネル引数で指定する。

/etc/default/grub

GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"

net.ifnames=0 biosdevname=0 が一意な名前を解除するカーネル引数である。

設定の反映

update-grub

カーネルのオプションなので強烈な設定だが、確実に動作するし誤作動もない。

その他の方法

systemdのマニュアルに書いてある

ln -s /dev/null /etc/systemd/network/99-default.link

これでlinkの名前をsystemdに変更を未然に防止できる。がカーネル引数が一番確実。

netplan の場合(注意が必要)

netplan に set-name があるので、これを使うと eth0 にすることができる。

network:
    version: 2
    ethernets:
        enp0s1:
            addresses:
            - 192.168.123.213/24
            gateway4: 0.0.0.0
            match:
                macaddress: 52:54:00:70:cd:5c
            set-name: eth0

ただし、永続化しない。設定ファイルを見て分かる通りenp0s1 を直接書いている。

なので当初目標である「マザーボードを交換しても設定がそのまま使える」という目的は全く達成されない。

ということでnetplan は全く使えない。

さらに、これは、networkd のlink設定を入れるのと同じなので役に立たない。systemdのマニュアルでは候補2と書いてあるが、全く無用の長物である。なぜなら、networkdで「名前がenps01」になったあとに「名前をeth0」に変更する。その変更設定を書くのである。永続化するわけがない。

さらにいえば、match が不可欠でmacaddress を指定して名前を変えるわけである。

これは、vpn などソフトウェア制御なNICのためにある機能であり、物理NICのためには使うべきではない機能だと思う。

2022-01-06 メモ

ubuntu の場合、netplan の設定に、直接eht0 と書いたら、自動的に eth0 が使われた。eth0を使っていてenp0s3 のような表記にしていない人たちへの互換性配慮のためだろうと思う。

逆手に取れば、 netplan の config.yml を eth0 で作っておけばそれで十分解決するわけである。

しかし、上にも書いたとおり、今後動かなくなる可能性が高い。そしてnetplanがない ubuntu以外はどうすればいいんだろうか。と考えるとカーネル引数が確実かもしれない。

他にも方法があるかもしれないので調べたい。

2022-01-10

systemdの公式サイトに記載があったので追記。

2022-02-16

match/macaddress について追記

参考資料

https://www.itzgeek.com/how-tos/linux/debian/change-default-network-name-ens33-to-old-eth0-on-debian-9.html