CentOS 7 - 재부팅 없이 네트워크 인터페이스 이름 바꾸기

CentOS 7 - 재부팅 없이 네트워크 인터페이스 이름 바꾸기

수정을 통과했습니다 /etc/sysconfig/network-scripts.

  • eth0 -> 네트워크 카드 0
  • eth1 -> 네트워크 카드 1

수정된 네트워크 스크립트의 내용은 다음과 같습니다.

# cat /etc/sysconfig/network-scripts/ifcfg-nic0
DEVICE=nic0
BOOTPROTO=static
ONBOOT=yes
HWADDR=xx:xx:xx:xx:xx:xx
USERCTL=no
IPV6INIT=no
MASTER=bond0
SLAVE=yes

새 구성을 활성화하려면 다시 시작하세요. 하지만 이 구성을 어떻게 활성화할 수 있나요?아니요재시작?

A는 systemctl restart network이를 수행하지 못했습니다.

oldname()을 통해 인터페이스를 닫을 수 있지만 이전 이름이나 새 이름 제공에 관계 ifdown eth0없이 ifup다음 메시지가 나타납니다.

오류: [/etc/sysconfig/network-scripts/ifup-eth] 장치 nic0이 존재하지 않는 것 같아 초기화가 지연됩니다.

/etc/init.d/network status다음 출력을 표시합니다.

Configured devices:
lo bond0 nic0 nic1
Currently active devices:
lo eth0 eth1 bond0

둘 다 ifconfigip a이전 인터페이스 이름을 표시합니다.

답변1

ip 명령을 사용하여 장치 이름을 바꿀 수 있습니다.

/sbin/ip link set eth1 down
/sbin/ip link set eth1 name eth123
/sbin/ip link set eth123 up

편집하다:

완전성과 후세를 위해 (및 정보 제공의 목적으로) 다음 내용을 남길 예정이지만 확인했습니다.swill에 대한 댓글그리고마르코 마쿠조의 답변장치 이름을 올바르게 지정하려면 인터페이스 /etc/sysconfig/network-scripts/ifcfg-eth0의 이름과 장치를 변경하고 파일 이름을 바꾸십시오.구성 파일에 hwaddr= 필드만 포함하면 됩니다.참조가 업데이트된 후에 이 방법을 사용하는 것이 좋습니다.

다음 재부팅 시 제대로 작동하도록 udev 규칙을 구성했는지 확인할 수도 있습니다. udev 경로는 CentOS 7에서 /usr/lib/udev/rules.d/60-net.rules로 이동되었지만 여전히 동일한 방식으로 관리할 수 있습니다. 만약 너라면커널 부팅 문자열에 "net.ifnames=0 biosdevname=0"을 추가합니다.네트워크 카드의 이전 명명 체계로 돌아가려면 다음을 수행하십시오.

ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{type}=="1", PROGRAM="/lib/udev/rename_device", RESULT=="?*", NAME="$result"

그리고 그것을로 교체

ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{address}=="00:50:56:8e:3f:a7", NAME="eth123"

각 네트워크 카드마다 하나의 항목이 필요합니다. 올바른 MAC 주소를 사용하고 이름 필드를 업데이트하십시오. 의도하지 않은 결과가 발생할 수 있으므로 "net.ifnames=0 biosdevname=0"을 사용하지 않는 경우 주의하십시오.

답변2

실제로 가장 좋은 답변은 이미 게시된 두 답변을 조합한 것이라고 생각합니다. 네트워크 서비스를 다시 시작하지 않고 장치 이름을 변경하려면 ip linkJames Shewey()가 제안한 명령을 사용하십시오 ip link set <old_device_name> name <new_device_name>.

Red Hat Linux에서 재부팅 후에도 변경 사항이 유지되도록 하려면 /etc/sysconfig/network-scripts/파일 이름을 ifcfg_<old_device_name>로 변경 ifcfg_<new_device_name>하고 DEVICE내부 변수를 로 변경하십시오 <new_device_name>.HWADDRudev 규칙을 건드릴 필요가 없습니다., 60-net.rulesifcfg 구성 파일이 실제로 읽혀지는 곳이기 때문입니다 /etc/sysconfig/network-scripts.

답변3

ip link set ens33 down
ip link set ens33 name eth0
ip link set eth0 up

mv /etc/sysconfig/network-scripts/ifcfg-{ens33,eth0}

sed -ire "s/NAME=\"ens33\"/NAME=\"eth0\"/" /etc/sysconfig/network-scripts/ifcfg-eth0

sed -ire "s/DEVICE=\"ens33\"/DEVICE=\"eth0\"/" /etc/sysconfig/network-scripts/ifcfg-eth0

MAC=$(cat /sys/class/net/eth0/address)

echo -n 'HWADDR="'$MAC\" >> /etc/sysconfig/network-scripts/ifcfg-eth0

답변4

@James Shewey의 답변이 올바른 접근 방식인 것 같습니다.

구성 파일을 사용한 다음 다시 로드를 트리거하려는 경우 /etc/sysconfig/network-scripts주석에 언급된 @Tom Hunt와 같이 커널 모듈을 언로드하고 로드하는 것도 작동합니다.

service network stop
modprobe -r igb
modprobe igb
service network start

시스템에 원격으로 액세스하는 경우 nohup에서 모든 명령을 실행해야 합니다. 그렇지 않으면 시스템이 잠깁니다.

nohup sh -c "service network stop && modprobe -r igb && modprobe igb ; service network start"

물론 다시 로드할 드라이버는 인터페이스에 따라 다릅니다.

관련 정보