eth0
서버를 Debian 9에서 10으로 업그레이드하기 전에 인터페이스 이름을 이전 이름( , eth1
)에서 새 이름(예 enp1s0
: 권장 사항)으로 마이그레이션하려고 했습니다 enp2s0
. 내가 찾은 모든 가이드는 다음과 같이 말합니다.
- 이전 이름과 새 이름을 찾아보세요(완료).
- 제거하거나 주석을 달면
/etc/udev/rules.d/70-persistent-net.rules
이는 데비안 9에서 이전 이름을 유효하게 유지하는 유일한 방법이라고 합니다. - 파일을 편집하고
/etc
새 이름을 이전 이름으로 바꾸고 재부팅하고 기도하십시오.
문제는 그것이 /etc/udev/rules.d/70-persistent-net.rules
존재하지 않는다는 것입니다. 영. 그래서 서버는사용했어야 했는데새 이름. 데비안 9에서는 udev가 이를 자체적으로 적용해야 합니다.
커널 명령줄 인수에 대한 형식을 확인하라는 제안을 어딘가에서 보았습니다 net.ifnames=0
. 하지만.
난 이해가 안 돼요. 누구든지 udev NIC 명명 프로세스에 대해 밝힐 수 있습니까? 어떤 udev 규칙을 확인해야 합니까?
답변1
udev의 미스터리를 더 깊이 파고들면서 다음 명령을 사용하면 네트워크 이름 할당을 디버깅할 수 있다는 사실을 발견했습니다.https://manpages.debian.org/testing/udev/systemd.link.5.en.html)
sudo SYSTEMD_LOG_LEVEL=debug udevadm test-builtin net_setup_link /sys/class/net/eth0
calling: test-builtin
...
Load module index
Found container virtualization none
timestamp of '/etc/systemd/network' changed
timestamp of '/lib/systemd/network' changed
Skipping overridden file: /lib/systemd/network/99-default.link.
Parsed configuration file /etc/systemd/network/99-default.link
Created link configuration context.
ID_NET_DRIVER=e1000e
Config file /etc/systemd/network/99-default.link applies to device eth1
ID_NET_LINK_FILE=/etc/systemd/network/99-default.link
Unload module index
Unloaded link configuration context.
/etc/systemd/network/99-default.link
에 제공된 정책을 건너뛰기 위한 주석 만 포함되어 /lib/systemd/network/99-default.link
커널 제공 이름이 유효한 상태로 유지됩니다. /etc에서 파일을 삭제하면 새 이름이 복원됩니다.