15.10으로 업데이트 한 후 네트워크 인터페이스 이름이 변경됨-udev 변경


55

Ubuntu 서버 15.04를 실행하는 가상 머신을 방금 출시 된 새로운 안정 15.10으로 업데이트했습니다.

명백한 문제는 없었지만 재부팅 후 컴퓨터의 네트워크 연결이 끊어졌습니다. lspci올바른 카드를 보여주고 lsmod드라이버가로드되었음을 증명했습니다.

편집이나 제거에 대한 힌트는 /etc/udev/rules.d/70-persistent-net.rules성공하지 못했지만 (여전히 네트워크가없고 새 파일이 없음) 유명인 /lib/udev/write_net_rules도 존재하지 않았습니다.

udev 및 systemd에 대한 단서가 많지 않으므로 / sys / class / net에서 네트워크 인터페이스 이름이 변경되었음을 찾는 데 약간의 시간이 걸렸습니다. 그것은되었다 ens32에서 이름이 변경되었다, eth0. /etc/network/interfaces네트워크 통신을 변경 한 후 다시 활성화되었습니다.

그러나 왜 이런 일이 발생합니까? 이런 일이 발생하면 인터페이스 파일을 자동으로 업데이트해서는 안됩니까?

지금은 가상 네트워크 카드를 삭제하고 다른 하나를 만든, eth0하게 eno16777728하지 그래서, 음, 좋은이다.

이 동작 (적어도 업그레이드 절차의 동작)을 버그로보고해야합니까?

게다가 /etc/udev/rules.d/70-persistent-net.rules지금 은 쓸모 없습니까? 그리고 (부분적으로 만 관련되어 있지만) 어떻 /etc/udev/rules.d/70-persistent-cd.rules습니까?)

편집-추가 질문 (응답 후)/etc/network/interfaces 실제 인터페이스 이름 과의 종속성이 나를 귀찮게했습니다. 다른 가상 머신에 * ubuntu를 새로 설치했습니다. 놀랍게도 /etc/network/interfaces루프백 장치에 대한 참조 만 포함했습니다. 그러나 원래 VM으로 인해이 변경으로 인해 네트워크가 작동하지 않았습니다. 그래서 다른 무엇을 바꿔야합니까?

편집 음, 다른 테스트에서 나는 새로운 우분투 발견 서버 네트워크 인터페이스 카드를 /etc/network/interfaces분투가되지 않은 상태. 아마도 사용 중이 network-manager거나 다른 것일 수 있습니다.


17.04에서도 같은 버그가 다시 나타납니다. 시험판 단계에서만 희망하십시오.
avtomaton

답변:


56

Ubuntu 15.10 (Wily Werewolf)에서 systemd / udev로 시작하면 모든 로컬 이더넷, Wlan 및 Wwan 인터페이스 ( source )에 예측 가능하고 안정적인 네트워크 인터페이스 이름이 자동으로 할당됩니다 .

udev는 기본적으로 다음과 같은 네트워크 인터페이스 이름 지정 체계를 지원합니다.

  1. 펌웨어 / BIOS 통합 명칭은 온 - 보드 장치에 인덱스 번호를 제공 (예 : eno1)
  2. 펌웨어 / BIOS 제공하는 PCI 익스프레스 핫 플러그 슬롯 인덱스 번호를 통합하는 이름 (예 : ens1)
  3. 하드웨어의 커넥터의 물리적 / 지리적 위치 통합하는 이름 (예 : enp2s0)
  4. 인터페이스의 MAC 주소를 포함 명칭 (예 : enx78e7d1ea46da)
  5. 예측할 수없는 고전적인 커널 네이티브 ethX 이름 지정 (예 : eth0)-사용되지 않음

기본적으로 systemd는 이제 정책에 따라 인터페이스 이름을 지정합니다.

  1. 펌웨어의 해당 정보가 적용 가능하고 사용 가능한 경우
  2. 펌웨어의 해당 정보가 적용 가능하고 사용 가능한 경우
  3. 해당되는 경우
  4. 기본적으로 사용되지 않지만 사용자가 원하는 경우 사용할 수 있습니다.
  5. 다른 모든 경우에.

이것을 어떻게 비활성화합니까?

기본적으로 다음과 같은 옵션이 있습니다.

  • 예를 들어 인터페이스의 이름을 internet0 또는 lan0으로 지정하여 고유 한 이름 지정 체계를 작성하십시오. 이를 위해 고유 한 udev 규칙 파일을 작성하고 장치의 이름 특성을 설정하십시오. 기본 정책 파일보다 먼저 이름을 지정하여 주문하십시오./etc/udev/rules.d/70-my-net-names.rules
  • 다른 이름 지정 체계를 선택하기 위해 기본 정책 파일을 변경하십시오 (예 : 기본적으로 MAC 주소 다음에 모든 인터페이스 이름을 지정하는 경우) : cp /lib/udev/rules.d/80-net-setup-link.rules /etc/udev/rules.d/80-net-setup-link.rules파일을 편집하고 필요에 따라 행을 변경하십시오.
  • 전달 net.ifnames=0커널 명령 행에.

6
소스? Ubuntu의 공식 릴리스 노트 페이지에 링크를 추가 할 수 있습니까 (어딘가에 있고 찾을 수 없습니다!)
Rmano

2
예, 이것이 소스입니다.
kyodake

4
전혀 이해되지 않는 것은 새로 설치하지 않고 업그레이드를 수행했다는 것입니다. 업그레이드는 시스템을 작동 상태로 유지해야하기 때문에 실제 우분투 버그처럼 들립니다.

1
@kyodake는 우분투 15.10에 / usr / lib / udev 폴더가없고, / lib / udev가 있습니다
EdiD

1
@ EdiD : 좋아, 버그 수정.
kyodake

39

ArchWiki 초보자 가이드 는 더 쉬운 방법이 있습니다 .

먼저 장치의 MAC 주소를

$ ip link

출력은 다음과 같이 표시됩니다

3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000     
          link/ether 20:68:9d:xx:xx:xx brd ff:ff:ff:ff:ff:ff

장치의 MAC 주소는

20:68:9d:xx:xx:xx

그냥 파일을 만드십시오 (텍스트 편집기에서 sudo 권한으로 간단히 열 수 있습니다)

$ nano /etc/udev/rules.d/10-network.rules    

다음 줄 추가

SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="aa:bb:cc:dd:ee:ff", NAME="net1"

이름을 원하는 이름으로 바꾸고 aa : bb : cc : dd : ee : ff를 장치의 MAC 주소로 바꾸십시오.

이제 컴퓨터를 재부팅하면 장치 이름이 변경되었을 것입니다.


가장 직접적이고 간단한 솔루션! 대단히 감사합니다!
3bdalla

1
규칙이 VLAN 및 브리지 인터페이스에 적용되지 않도록하려면 DRIVERS=="?*",after를 추가하십시오 ACTION=="add",. 참조 askubuntu.com/questions/767786/...
멋있지 리에게

16

이것을 시도하십시오 :을 편집 하십시오 /etc/default/grub. 라인 변경

GRUB_CMDLINE_LINUX=""

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

그리고 마지막으로 다음을 실행하십시오.

# update-grub

루트로 시스템을 재부팅하십시오.


이것은 netboot에서도 작동합니다. syslinux.cfg 파일의 append 문에 다음을 추가하는 데 성공했습니다. append (...) net.ifnames=0 (...)
carestad

이 솔루션은 Ubuntu 16.04에서도 완벽하게 작동합니다!
Nullldata

위의 GRUB 매개 변수 (net.ifnames = 0)를 추가하고 udev 이름 바꾸기 규칙을 제거하여 vlan을 작동시켜야했지만 이제는 모든 것이 정상입니다. 솔루션 주셔서 감사합니다.
Albert Veli

감사합니다. 헤드리스 서버에 Ubuntu Server 16.04를 설치하고 있으며 네트워크 인터페이스에 어떤 이름이 있는지 알지 못했기 때문에 서버가 네트워크에 없었습니다. 이 작업을 수행하고 / etc / network / interfaces에 인터페이스 이름으로 "eth0"이 있는지 확인하고 드라이브를 서버에 다시 넣습니다. 이제 온라인 상태입니다. Acer Aspire H340에 Ubuntu를 설치하는 방법은 최신 정보가 아니므로 다른 사람들이 같은 시간을 낭비하지 않기를 바랍니다.
MetalMikester 2018 년

5

나는 이것이 조금 늦을 수도 있다는 것을 알고 10-network.rules를 추가하는 것이 도움이되었지만 완전히 그렇지는 않은 것 같습니다. 이름을 바꾸려면 장치의 커널 이름을 추가해야했습니다. /etc/udev/rules.d/10-network.rules가 작동하는 방법은 다음과 같습니다.

SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="MAC:ADDRESS",KERNEL=="enp4s8", NAME="eth0"

커널이 부팅 될 때 커널이 장치의 이름을 지정하는 것으로 KERNEL == ""을 변경하십시오.

HTH

KC


3

새로 설치 한 경우

apt-get remove biosdevname

그때

update-initramfs -u

udev net ruels 파일이 있는지 확인하십시오. 그렇다면 제거하십시오.

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

이제 / etc / network / interfaces를 편집하고 인터페이스 이름을 eth0, eth1 등으로 바꿉니다.

재부팅


2

파일을 만들어서이 작업을 수행했습니다.

root@odroid:~# cat /etc/udev/rules.d/70-persistent-net.rules
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth0", NAME="eth0"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.