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.