CentOS 6 / RedHat에서 새 네트워크 카드를 어떻게 자동으로 감지합니까?


46

가상 환경에서 CentOS 6을 사용하고 있습니다. CentOS의 가상 버전을 복제 할 때 이전 eth 어댑터는 "제거"되고 새 어댑터 및 네트워크 MAC 주소로 대체됩니다. 그러나 ifcfg-ethn 파일이 여전히 존재합니다. CentOS가 설치와 마찬가지로 네트워크 어댑터 / eth 파일을 자동으로 다시 검색하고 다시 만드는 방법을 알아 내려고합니다.

그렇지 않으면 여기에 설명 된대로 지루한 프로세스가 남아 있습니다 .http : //www.centos.org/docs/5/html/Installation_Guide-en-US/s1-s390info-addnetdevice.html

GUI 에서이 작업을 수행하는 빠른 방법이 있다는 것을 알고 있지만 서버를 사용하고 있으므로이 경우 GUI가 적용되지 않습니다. 도움?

편집 : @OldWolf는 Kudzu를 제안했지만 Kudzu는 Centos 5에서 제거되었으므로 오히려 피할 것입니다. Linux가 초기 설치에서 실행되는 절차가 있습니다. 누군가 수동으로 트리거 할 수 있도록 그 기능을 알아낼 수 있습니까?

답변:


52

CentOS 6에서는 이제 udev가 모든 것을 처리합니다. 파일 로 이동하여 /etc/udev/rules.d삭제 70-persistent-net.rules하고 재부팅하십시오. 손을 앞뒤로 열면 원래의 NIC MAC이 (으)로 표시되고 eth0새 것이 MAC (으)로 표시 됩니다 eth1.

이제 /etc/sysconfig/network-scripts/ifcfg-eth0새 NIC 카드의 MAC 을 편집 하고 수동으로 업데이트해야합니다.

파일을 삭제하면 부팅 프로세스에서 수하물, 즉 이전 NIC MAC 주소가 남지 ​​않은 상태에서 부팅시 탐지 프로세스가 다시 실행됩니다.

VMware ESXi 4.1에서 항상 CentOS 6 클론을 사용해야합니다. kudzu는 이전 버전으로 과거에 처리했을 때 고통 스럽습니다.


2
멋진 tracy가 들렸지 만 설명대로 작동하지 않았습니다. 이전의 ifcfg-eth0 파일은 여전히 ​​올바른 새 파일 대신 원래 MAC 주소와 함께 존재합니다.
Joshua

2
미안 네, 잊어 버렸습니다. 또한 ifcfg-eth0에서 수동으로 mac 주소를 업데이트해야합니다. 죄송합니다. 그것이 효과가있을 것입니다. 더 쉬운 방법이있을 수 있지만 아직 찾지 못했습니다 ...
Tracy Carlton

이것은 좋은 시작이었습니다. 부팅시 프로세스를 자동화하는 스크립트를 작성하는 것이 가능할 것 같습니다. 문제는 머신이 복제 / 이동 된 후에 만 ​​스크립트를 활성화하는 것입니다. 이것에 여전히 완전한 답변 ...
여호수아

5
파일 로 이동하여 /etc/udev/rules.d삭제하고 70-persistent-net.rules재부팅하지 마십시오. /etc/sysconfig/network-scripts/ifcfg-eth0새 NIC 카드의 MAC으로 이동하여 수동으로 업데이트하십시오. 재부팅하면 네트워크가 활성화됩니다.

2
@ 대신 재부팅의 user151091는 start_udev다음 service network restart날 위해 일했습니다.
doshea

5

이 도구를 사용할 수도 있습니다 (GUI 도구, TUI 도구, 텍스트 기반 사용자 인터페이스가 아님).

[root @ localhost ~] # system-config-network-tui

위 명령을 입력하고 Enter 키를 누릅니다

그러면이 화면이 나타납니다

여기에 이미지 설명을 입력하십시오

장치 구성을 선택하고 Enter를 누르십시오.

그러면이 화면이 나타납니다

여기에 이미지 설명을 입력하십시오

여기서 eth0은 /etc/sysconfig/network-scripts/ifcfg-eth0

편집 내용이 파일에 eth0미치는 영향ifcfg-eth0


이것은 일부 사람들 / 사례에 대한 유용한 답변 일 수 있지만 TUI / GUI를 통해 수행 할 수없는 네트워크 어댑터 구성을 스크립트하거나 자동화하는 것이 목표였습니다. 원본 게시물을 읽어보십시오. "CentOS가 네트워크 어댑터 / eth 파일을 자동으로 다시 검색하고 다시 만들도록하는 방법을 알아 내려고합니다."
Joshua

@Joshua 죄송합니다 ... + 1
최대

@ max, system-config-network이 인터페이스를 여는 것 같습니다.
Acumenus

2
@QiFan이 명령을 시도yum install system-config-network-tui
max

1
@QiFan 어떤 패키지에 해당 명령이 포함되어 있는지 알아 보려면 다음을 시도하십시오yum whatprovides */system-config-network-tui
max

4

지속적 규칙 파일을 삭제하십시오.

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

ifcfg-eth0를 편집하십시오.

nano /etc/sysconfig/network-scripts/ifcfg-eth0

HWADDR줄을 모두 제거하십시오 (또는 새 NIC의 MAC 주소와 일치하도록 변경하십시오).

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

reboot

NIC를 다시 변경하면 1 단계와 3 단계를 반복하십시오.


정말로 재부팅해야합니까? 왜 네트워크 서비스를 다시 시작하지 않습니까?
vgoff

이것은 일부 사람들 / 사례에 유용한 답변 일 수 있지만, 이것의 목표는 네트워크 어댑터 구성을 스크립트하거나 자동화하는 것이 었습니다. 원래 게시물에서 : "CentOS가 네트워크 어댑터 / eth 파일을 설치와 마찬가지로 자동으로 다시 검색하고 다시 만드는 방법을 알아 내려고합니다."
Joshua

@vgoff 예, 분명히 네트워크 서비스를 다시 시작하면 좋은 :)는 아마도 그가 등 "eth0를 ifup을"네트워크 장치 자체, 예를 재부팅 참조의 작품
여호수아

그럴 수도 있지만 '장치'가 아니라 '시스템'이라고 말합니다.
vgoff

틀릴 수도 있지만 '서비스 네트워크 다시 시작'으로 인해 영구 규칙 파일을 제거한 후 어댑터 이름이 바뀌지 않으며 이름을 바꾸려면 재부팅 또는 'start_udev'가 필요하다고 생각합니다.
doshea

4

복제 후 파일을 수정하면 유스 케이스에서 작동하지 않으므로 다음과 같이 문제를 해결했습니다.

각각의 Mac 주소에 대한 참조를 제거하여 두 파일을 편집해야합니다.

/etc/sysconfig/network-scripts/ifcfg-eth0 -HWADDR = 줄을 제거하십시오.

/etc/udev/rules.d/70-persistent-net.rules -다음 쉼표를 포함하여 ATTR {address} ==에서 제거하십시오.

이제 VM을 복제하고 Mac 주소를 변경하면 Mac 주소가 두 파일에 쓰여지지 않으므로 네트워킹이 작동합니다.


이것은 나를 위해 일했습니다-언급 한 것처럼 MAC 주소는 어느 파일에도 다시 쓰여지지 않으므로 계속 변경할 수 있으며 인터페이스는 동일한 구성으로 "eth0"으로 유지됩니다. 이것은 하나의 네트워크 어댑터가있는 경우에만 작동하는 것 같습니다. 그렇지 않으면 "udev 시작"에서 부팅 지연 시간이 길고 두 번째 장치는 "rename3"이라고합니다. 두 장치의 이름은 "eth0"이라고 제안하기 때문입니다. ".
doshea

1 개의 어댑터를위한 실용적인 솔루션. 또한 네트워크 설정에서 연결 유형을 브리지로 설정하는 것을 잊지 마십시오.
Cherry

3

VirtualBox에서 복제 할 때 eth0을 수정하기 위해 Bashfu를 작성한 CentOS 6 가상 머신을 너무 많이 만들고 삭제했습니다.

   [root@jp-xm-base ~]# cat fixeth0.sh
if grep -q eth1 /etc/udev/rules.d/70-persistent-net.rules; then
   sed -i '/eth0/d' /etc/udev/rules.d/70-persistent-net.rules;
   sed -i 's/eth1/eth0/g' /etc/udev/rules.d/70-persistent-net.rules;
   ETHERNET=`grep eth0 /etc/udev/rules.d/70-persistent-net.rules | awk -F"," '{print $4}' | awk -F"\"" '{print $2}'`;
   echo Ethernet Addr: $ETHERNET;
   sed -i 's/HWADDR=".*"/HWADDR="'$ETHERNET'"/' /etc/sysconfig/network-scripts/ifcfg-eth0;
   /sbin/start_udev
   /sbin/service network restart;
fi

1

유일한 문제가 mac 주소라면 다음과 비슷한 것을 실행할 수 있습니다.

TEST=`ifconfig | grep eth | awk '{ print $5}'`; sed "s/HWADDR.*/HWADDR\=$TEST/g" ifcfg-eth0 > TMP; mv TMP ifcfg-eth0

HWADDR 항목을 업데이트합니다.

편집 : 문제가 가상 하드웨어의 실제 변경 인 것처럼 보이기 때문에 다음을 시도 할 수 있습니다. ( 여기 에서 참조 및 참조 )

/ etc / sysconfig / hwconf를 편집하고 이전 NIC에 대한 모든 참조를 제거하고 kudzu를 다시 실행하여 새 하드웨어가 감지되는지 확인하십시오. 재부팅해야 할 수도 있습니다.


예를 들어 eth0에서 MAC 주소를 수동으로 변경하려고 시도했지만 여전히 작동하지 않습니다. "서비스 네트워크 강제 재로드", "ifup eth0"등에 대한 후속 시도는 항상 "장치 eth0이 존재하지 않는 것 같습니다 ..."도움말로 끝납니다.
Joshua

어떤 유형의 가상화를 사용하고 있으며 시스템을 어떻게 복제 했습니까?
OldWolf

VirtualBox이지만 가상화가 중요하지 않다고 생각합니다. 실제 상자를 종료하고 기존 네트워크 어댑터를 제거하고 다른 어댑터를 추가하는 것과 같습니다.
Joshua

@Josh 세 개의 세트가있을 수 있으므로 편집중인 ifcfg- * 파일은 어디에 있습니까? / etc / sysconfig / network-scripts 및 / etc / sysconfig / networking / devices 및 / etc / sysconfig / networking / profiles / default를 확인하십시오 ( 예, 알아요-어댑터를 설정하는 데 사용하는 도구와 관련이있는 것 같습니다). 첫 번째는 차이를 만드는 것이되어야하지만 다른 것들도 다루어야 할 수도 있습니다.
링커 3000

1
내가 묻고 가상화 유형이 중요한 이유는 복제 프로세스의 모양을 결정하기 때문입니다. 동일한 호스트의 VMware 클론은 사용자가 지시하지 않는 한 가상 네트워크 하드웨어를 변경하지 않습니다. 귀하의 경우 문제는 mac 주소 나 복제 프로세스가 아니며 가상 하드웨어를 변경하는 것입니다.
OldWolf

1

Vmware를 사용하지 않고 virsh와 함께 KVM을 사용하고 있습니다. 이것이 내가 한 일입니다.

CentOS 6.4로 '기본'이미지를 만들었습니다. 이것은 모든 복제본의 소스입니다. 첫 부팅 후 다음과 같은 스크립트를 만들었습니다.

cat /etc/init.d/manglemac 
#!/bin/bash
#
# manglemac        This starts and stops mangle-mac
#
# chkconfig: 2345 11 88
# description: This obtains tha mac of eth0 and writes into ifcfg

mac=$(grep -H . /sys/class/net/*/address | grep eth0 | cut   -d ':' -f2-10)
match_mac=$(grep $mac /etc/sysconfig/network-scripts/ifcfg-eth0)

if [ -z "$match_mac" ];
then
   echo HWADDR=$mac >> /etc/sysconfig/network-scripts/ifcfg-eth0
fi

init에 추가

chkconfig --add manglemac

HWADDR 또는 UUID의 / etc / sysconfig / network-scripts / ifcfg-eth0에 대한 모든 참조를 삭제하고 /etc/udev/rules.d/70-persistent-net.rules에서 udev 규칙도 삭제했습니다.

이 시점에서 시스템을 종료하고 복제를 시작했습니다. 모두 잘 작동합니다. 내가 만든 스크립트는 매우 간단하지만 잘 작동하지만 네트워크 설정에 대한 몇 가지 가정을합니다 (eth0 만 해당).

도움이 되길 바랍니다.


0

나는 여러 개의 NIC를 다루고 있었고 위의 어느 것도 나를 위해 일하지 않았기 때문에 (VMware Fusion 7 / VMware 6 이하) 스크립트를 작성했습니다. 타르볼이 여기 있습니다 .

여기에 README함께 제공되는 것이 있습니다.

  • 이 tarball 및 관련 스크립트는 최근 복제 된 VMware CentOS 6 이하 시스템 (시스템 없음)의 MAC 주소를 변경합니다.
  • 한 번만 복제 할 머신에서 수행해야하는 모든 작업 :

    1. 설치 lshw
    2. 모든 MAC 주소 /etc/sysconfig/network-scripts/ifcfg-eth?를 MACDADDY num 으로 바꾸 십시오. 여기서 num 은 네트워크 인터페이스의 번호입니다. 파일의 이름 지정 패턴을 따라야합니다.
    3. 운영:

      chckconfig change_mac_address on
      

      파일에 지정된 적절한 실행 레벨에서 sym 링크를 추가해야합니다.

    4. 머신을 정상적으로 복제하고 작동시킵니다. 각 ifcfg-eth?파일 에서 MAC 주소를 변경해야 합니다.
      • udev 파일을 지우십시오.
      • e1000 장치를 다시 스캔하십시오.
      • 네트워크를 다시 시작

문제 :

  • 왜 그런지 확실하지 않지만 때로는 모든 NIC를 인식하기 위해 네트워크를 다시 시작해야하는 경우가 있습니다.

    /etc/init.d/network restart
    

    sleep 20시작 부분 에를 넣어서 수정했습니다./etc/init.d/network

  • 이것은 나에게 문제가되지 않았지만 스크립트 lshw는 NIC와 동일한 순서로 NIC 를 반환해야합니다.ifcfg-eth?
  • 이는 NIC 장치가 e1000이라고 가정합니다. VMware 표준?
  • ifcfg-eth?파일 번호를 바꾸어 lshw작동하지 않을 가능성이 높고 NIC가 많은 시스템을 수행하는 경우와는 달리 파일 번호를 바꾸는 것이 좋습니다.
  • 하나의 NIC 만 있으면 작동합니다.
  • 최초 시동 후에는 상기 /usr/bin/change_mac_address.pl로 이동/usr/bin/change_mac_address.pl.old
  • MACDADDY가 없으면 아무것도하지 않더라도 재부팅 할 때마다 실행되지 않습니다. 당신의ifcfg-eth?
  • 당신은 또한 실행할 수 있습니다 아마

    chkconfig change_mac_address off
    
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.