네트워크 인터페이스 이름 변경 Ubuntu 16.04


55

이 새로운 Ubuntu 16.04 LTS 버전에서 네트워크 인터페이스 이름을 변경하려고했지만가 없습니다 /etc/udev/rules.d/70-persistent-net.rules.

그래서 사용하려고했지만 /lib/udev/write_net_rules존재하지 않습니다.

왜이 수정이 필요합니까? Flex 라이센스를 사용하는 가상 플랫폼을 시뮬레이션하는 도구를 사용하고 있으므로 인증은 eth0인터페이스 이름 이어야 합니다.

어떠한 제안?

명령 ip link은 다음을 반환합니다.

user@laptop:~$ ip link 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp6s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
link/ether b8:2a:xx:yy:xx:yy brd ff:ff:ff:ff:ff:ff
3: wlp7s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000
link/ether 5c:e0:xx:yy:xx:yy brd ff:ff:ff:ff:ff:ff

user@laptop:~$ ifconfig 
enp6s0    Link encap:Ethernet  HWaddr b8:2a:xx:yy:xx:yy  
lo        Link encap:Local Loopback  
wlp7s0    Link encap:Ethernet  HWaddr 5c:e0:xx:yy:xx:yy  

(일부 정보는 무시되고 억제되었습니다)

나는 이미 몇 가지 링크를 시도했다.

답변:


74

최신 버전의 Ubuntu에서 네트워크 이름을 변경하는 방법에 대한 잘못된 정보가 많이 있습니다. 일부 정보는 systemd.link를 가리키며, 이는 Ubuntu (16.04 현재)가 systemd의이 부분을 사용하지 않기 때문에 잘못되었습니다.

실제로, 인터페이스 이름 변경은 두 가지 작은 차이점을 제외하고는 거의 비슷하게 작동합니다. 먼저 파일을 /etc/udev/rules.d/70-persistent-net.rules수동으로 만들어야합니다. 이는이 파일을 덮어 쓰는 스크립트에 대해 걱정할 필요가 없으며 필요한 행을 추가 할 수 있습니다 (주석도 필요하지 않음). 두 번째-이것은 변경하는 데 많은 시간이 걸리는 변경 사항입니다-형식은 Ubuntu 14.04 LTS와 비교하여 약간 변경되었습니다.

MAC 주소가 "02 : 01 : 02 : 03 : 04 : 05"인 "eth0"으로 NIC의 인터페이스 이름을 고정하는 행은 다음과 같습니다.

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="02:01:02:03:04:05", ATTR{dev_id}=="0x0", ATTR{type}=="1", NAME="eth0"

이 라인은 우분투 14.04 LTS와 거의 동일하지만 약간의 차이가 있습니다. 우분투 14.04에는 추가 조건이 KERNEL=="eth*"있습니다. 어떤 이유로 Ubuntu 16.04 LTS에서는 작동하지 않습니다. 이 추가 조건이 존재하면 전체 행이 무시되고 기본 동작으로 돌아갑니다 (에 지정된대로 80-net-setup-link.rules).


2
빙고! 이제 USB 도킹 스테이션의 NIC에 대한 enusb01이 있습니다. 감사! # USB 디스플레이 링크 도킹 스테이션 SUBSYSTEM == "net", ACTION == "add", DRIVERS == "? *", ATTR {address} == "8c : ae : 4c : fa : 92 : bf", ATTR { dev_id} == "0x0", ATTR {type} == "1", NAME = "enusb1"
플리커 플라이

어떻게에 이름을 설정할 수 있습니다 enp0s1에서 enp0s17? 같은 과정입니까? 또한, 내가 좋아하는 가상 네트워크 인터페이스에 대해 무엇을해야 enp0s1:1하거나 enp0s2등?
soufrk

2
16.04에서 실제로 모든 것을 지정할 필요는 없습니다. 나는 도망 갈 수 있었다SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="xx:xx:xx:xx:xx:xx", NAME="eth0"
kbuilds

4
Linux에서 @kbuilds, Scratch에서 : DRIVERS == "? *"-Udev가 VLAN 또는 브리지 하위 인터페이스를 무시하도록하기 위해 존재합니다 (이 하위 인터페이스에는 드라이버가 없기 때문). 할당 될 이름이 상위 장치와 충돌하기 때문에 이러한 하위 인터페이스는 건너 뜁니다.
John Doe

1
중요 : 이름이 바뀐 인터페이스가 자동으로 시작되도록 / etc / network / interfaces를 편집해야합니다. 그렇지 않으면 SSH를 사용하는 경우 작동하지 않는 이유를 알아 내려고 낭비하는 시간을 언급하지 않고 해당 시스템에 액세스 할 수 없게됩니다.
user4551

65

Ubuntu 16.04.1 LTS에서 Linux plaptop 4.4.0-31-genericx86_64 MATE. @Geancarlo Abich 답변 중 1 단계이며 효과가있었습니다 . 우분투는 재부팅 후 바로 새로운 이름을 만들었습니다.

/ etc / default / grub을 편집하여 줄을 변경하십시오.

GRUB_CMDLINE_LINUX=""

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

그리고 마지막으로:

$ sudo update-grub

시스템을 재부팅하십시오 :

$ sudo reboot
msa@plaptop:~$ ifconfig 
eth0      Link encap:Ethernet  HWaddr 70:5a:0f:d7:03:38  
          inet addr:10.67.10.43  Bcast:10.67.10.255  Mask:255.255.255.0
          inet6 addr: fe80::8c03:edb5:a3d1:ba21/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:63129 errors:0 dropped:0 overruns:0 frame:0
          TX packets:37788 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:51115719 (51.1 MB)  TX bytes:5006758 (5.0 MB)
          Interrupt:16 Memory:f1200000-f1220000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:255 errors:0 dropped:0 overruns:0 frame:0
          TX packets:255 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:21076 (21.0 KB)  TX bytes:21076 (21.0 KB)

wlan0     Link encap:Ethernet  HWaddr 44:85:00:62:c6:e5  
          inet addr:10.67.14.106  Bcast:10.67.14.255  Mask:255.255.255.0
          inet6 addr: fe80::5844:f9dd:32ff:9b45/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:25 errors:0 dropped:0 overruns:0 frame:0
          TX packets:86 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:5320 (5.3 KB)  TX bytes:14611 (14.6 KB)

1
이 단계를 업데이트 한 후에는 나를 위해 작동하지 않습니다. ifcofig는 "보라"카드가 :( ETH와 ENS 표시되지 표시
비멀의 프라 카쉬

2
이것은 나를 위해 일했습니다. @vimalprakash 또한이 변경 후 ifconfig 출력에 'lo'만 표시되었습니다. 그러나 내 / etc / network / interfaces의 구성이 이전 이름으로되어 있기 때문에 다른 인터페이스가 다운 되었기 때문에 (ifconfig -a를 수행하여 모든 인터페이스를 확인하십시오).
chitti

그것은 나를 위해 일했다.
Paulo

"net.ifnames = 0"&& "biosdevname = 0"명령은 무엇을합니까 ??? 여기에 게시물은 어쨌든 순수한 금입니다 .... 16.04 xubuntu에서 작업

2
Ubuntu 18.04에서도 작업
Simon Warta

12

우분투 -16.04-server-amd64

에서 /etc/default/grub변경

GRUB_CMDLINE_LINUX=""

GRUB_CMDLINE_LINUX="net.ifnames=0"

그런 다음 다음을 입력하십시오.

sudo update-grub

시스템을 재부팅

sudo reboot

3
더 나은GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
musbach

8

나는 몇 가지 제안을 섞어 보았고 해결책을 찾았습니다!

1 단계 : 기본 펌웨어 상속 이름을 비활성화합니다.

당신이 편집 /etc/default/grub에서 라인 변경

GRUB_CMDLINE_LINUX=""

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

그리고 마지막으로 루트로 실행하십시오.

$ sudo update-grub

시스템을 재부팅하십시오.

$ sudo reboot

2 단계 : 영구 파일/etc/udev/rules.d/70-persistent-net.rules을 루트로 작성하고 채 웁니다.

$ sudo gedit /etc/udev/rules.d/70-persistent-net.rules

예:

# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.

# PCI device lan Device
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="XX:yy:XX:yy:XX:yy", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="ethX"

# PCI device Wlan Device
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="XX:yy:XX:yy:XX:yy", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="wlanX"

인터페이스 MAC 주소를 사용하여 이름을 바꾸려는 인터페이스를 참조하고 원하는대로 'X'인터페이스 이름 값을 변경하십시오.

변경 사항을 저장하고 재부팅하십시오.

$ sudo reboot

이것은 나를 위해 작동합니다.


4
2 단계는 필요하지 않습니다.
musbach

1
네. @musbach는 16.04에 말을 확인할 수 있습니다
menixator
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.