영구 네트워크 장치 이름 지정 비활성화

영구 네트워크 장치 이름 지정 비활성화

나는 단일 이더넷 인터페이스를 갖춘 qemu 기반 가상 머신에서 CentOS-6.5를 실행하고 있는데 놀랍게도 udev는 어떤 이유로든 이름을 eth0에서 eth1로 바꿨습니다(!)

그래서 저는 이 동작을 완전히 비활성화하고 싶습니다. 즉, 커널 명령줄에 "net.ifnames=0"을 전달하고 싶습니다. 작동하지 않는 것 같고 동작이 변하지 않습니다. 커널 매개변수인 "biosdevname=0"도 도움이 되지 않습니다.

% qemu-system-x86_64 -cpu host -boot c -hda my_image.qcow2 -snapshot
-m 1024 --enable-kvm -name vm0 -nographic -display curses -pidfile
/var/run/vm0.pid -mem-path /dev/hugepages -mem-prealloc -monitor
unix:/var/run/vm0monitor,server,nowait -net none -netdev
type=tap,id=net0,script=no,downscript=no,ifname=vhost1,vhost=on
-device virtio-net-pci,netdev=net0,mac=00:00:00:00:00:01,csum=off,gso=off,guest_tso4=off,guest_tso6=off,guest_ecn=off

경고나 오류가 없으며 나중에 가상 머신에 로그인할 수 있습니다. 그러나 udev는 단일 네트워크 인터페이스의 이름을 eth0에서 eth1로 변경한 것으로 보입니다. 이는 시작 시 자동으로 생성되는 규칙 파일입니다.

% cat /etc/udev/rules.d/70-persistent-net.rules
# PCI device 0x1af4:0x1000 (virtio-pci)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:00:00:00:00:0
1", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

virtio-pci 드라이버가 시스템의 단일 인터페이스로 eth1을 선택하는 이유는 무엇입니까?

그러나 mac=.. 옵션 없이 qemu를 실행하면 이런 일이 발생하지 않습니다. MAC 주소는 qemu 사전 정의된 52:54:xxx이지만 명령줄을 통해 Mac을 제공하고 싶습니다.

답변1

삭제:

/etc/udev/rules.d/70-persistent-net.rules

그리고 다시 시작하세요. udev네트워크 어댑터를 찾아서 이름을 지정합니다 eth0. 그런 다음 어댑터 이름을 일관되게 지정하기 위한 규칙을 사용하여 위의 파일을 다시 만듭니다 eth0.

파일을 삭제하기 전에 읽어보면 어댑터 이름을 지정하는 규칙을 찾을 수 있습니다 eth1. 파일에는 특정 어댑터의 이름을 지정하는 다른 규칙이 있을 수 있습니다 eth0. 과거 어느 시점에 어댑터를 교체한 경우 이런 일이 자주 발생합니다.

이 동작을 완전히 비활성화하려면 파일을 심볼릭 링크 위에 만드십시오 /dev/null.

# ln -s /dev/null /etc/udev/rules.d/70-persistent-net.rules

관련 정보