예측 가능한 네트워크 인터페이스 이름은 NFS 루트 인터페이스의 이름을 바꾸지 않습니다.

예측 가능한 네트워크 인터페이스 이름은 NFS 루트 인터페이스의 이름을 바꾸지 않습니다.

NFS 루트와 예측 가능한 네트워크 인터페이스를 사용하여 이더넷 인터페이스 이름이 다르다는 것을 발견했습니다. 커널에 의해 구성된 인터페이스 중 하나는 eth0으로 명명되었고, 다른 인터페이스는 네트워크 장치 명명 체계에 따라 명명되었습니다. 따라서 동일한 Image가 로컬에서 시작되고 네트워크를 통해 시작되면 동일한 인터페이스의 최종 이름이 다릅니다. 이는 일부 구성을 방해하는 것 같습니다. 예를 들어 [eth0]을 사용하는 ptp4l.service 구성이 있으므로 로컬 및 네트워크 부팅을 위해 [end0] 및 [eth0]을 사용하여 별도의 구성을 만들어야 하는데 이는 불편한 것 같습니다.

NFS 루트를 사용하는 경우 NFS 루트가 의존하는 이더넷 인터페이스가 있습니다. 따라서 커널에 의해 구성되고 이름이 지정되며 설정할 수 없습니다.

NFS 루트 systemd-udevd.service를 사용하면 eth0의 이름을 바꿀 수 없음이 표시됩니다.

systemd-udevd[180]: eth0: Network interface 'eth0' is already up, refusing to rename to 'end0'.

하지만 eth0에는 이미 ID_NET_NAME_ONBOARD가 있습니다.

# udevadm test-builtin net_id /sys/class/net/eth0 2> /dev/null
ID_NET_NAMING_SCHEME=v252
ID_NET_NAME_MAC=xxxxxxxxxxxxx
ID_NET_NAME_ONBOARD=end0

예측 가능한 네트워크 인터페이스 이름을 비활성화하는 것은 고려하지 않습니다.

그렇다면 커널 부팅 중에 이더넷 인터페이스 이름을 설정하거나 systemd-udevd가 ID_NET_NAME_ONBOARD를 사용하여 구성된 인터페이스의 이름을 바꾸도록 강제하는 방법이 있습니까?

답변1

또는 ID_NET_NAME_ONBOARD를 사용하여 systemd-udevd가 구성된 인터페이스의 이름을 바꾸도록 강제합니다.

이 작업은 매우 쉽게 수행할 수 있지만 나중에 보면핵심이름 변경을 거부하고 systemd-udevd가 잘못된 당사자가 아닌 경우 systemd-udevd를 물리치려는 시도는 의미가 없습니다.

"예측 가능한 네트워크 인터페이스 이름"에는 마법 같은 것이 없습니다. 이것은 단지 udev 규칙일 뿐이며, udev는 ip link set인터페이스 이름을 바꾸는 데 동일한 방법을 사용합니다.

예측 가능한 네트워크 인터페이스 이름이 NFS 루트로 테스트되었으며 이 상황에 대한 올바른 솔루션이 있을 수 있습니다.

systemd/udev에서 권장하는 일반적인 솔루션은 initramfs를 사용하여 시작하는 것입니다. initramfs는 프로세스가 시작되기 전에 커널이 네트워크를 구성하도록 하는 대신 사용자 공간에서 이 작업을 수행합니다(그러면 NFS 루트도 마운트됩니다). initramfs는 네트워크 구성을 진행하기 전에 systemd-udevd를 시작하거나 다른 이름 바꾸기를 수행할 수 있습니다.

systemd-networkd의 최신 버전은 커널 명령줄 네트워크 매개변수도 인식하므로 해당 매개변수를 initramfs에 더 쉽게 포함할 수 있습니다.

관련 정보