OS VERSION : RHEL 6.7
( CentOS 6.7 에도 그대로 적용이 가능하며
본 포스팅의 적용 가능 버전으로 4 버전은 확인해보지 못했고
5 버전과 6 버전은 동일하다.)
리눅스를 이용해 네트워크를 설정하다 보면 eth0부터 시작되길 원하는데 그렇지 않은 경우가 생길 수 있다.
필요에 따라 eth0을 eth10으로 사용하고 싶을 수도 있고 eth0과 eth1의 순서를 바꾸어서 사용해야 하는 경우도 있을 수 있다.
이번 포스팅에서는 NIC에 설정되어 있는 eth 넘버를 바꾸는 방법을 설명한다.
다음은 eth0 하나만 사용하던 호스트가 NIC 3개를 추가하고 맥 주소를 새로 받아 eth0 이 사라지고
eth1, eth2, eth3, eth4로 이름이 바뀐 상황으로
/etc/sysconfig/network-scripts/ 디렉토리 안에 존재하는 eth 파일은 ifcfg-eth0 하나뿐이다.
ifcfg-eth0 파일 내용에 있는 맥주소가 다른 eth 인터페이스와 충돌이 일어나므로 굉장히 불안정한 상태이다.
IP주소와 서브넷을 잘 입력해 네트워크 상태를 up 시켜도 현재와 같이 불안정한 상태에서는 인터페이스의
IP 설정이 무효화되는 경우가 생겨 작업 중인 인터페이스와의 세션이 끊기게 되어 곤란한 상황이 생길 수도 있다.
우선 NIC가 4개 이므로 ifcfg-eth 파일 4개가 필요한데 파일은 ifcfg-eth0 하나밖에 없으니까 그냥 복사한다.
나는 0,1,2,3으로 사용하고 싶으니까 0,1,2,3으로 만들었다.
복사한 4개 파일의 내용을 수정해야 한다.
vi로 4개 파일을 수정한다.
eth0의 내용이다.
여기에서 중요한 것은 HWADDR과 UUID를 사용하면 안 된다. 주석처리 하자
주석처리 했다.( 맨 앞에 # 문자로 시작되는 라인은 주석처리되어 그냥 무시하게 된다는 내용임 )
:wn으로 저장하고 다음 파일을 본다
아래에 eth1 파일이다.
똑같이 주석처리를 하고
DEVICE이름이랑
BOOTPROTO=dhcp -> none
NM_CONTROLLED=yes -> no
ONBOOT=yes -> no
이 정도 수정하고 저장한다. 이어서 다음 파일을 본다.
아래에 eth2 파일이다.
마찬가지다.
아래에 마지막 4번째 NIC인 eth3 파일이다. 똑같이 수정하고 마지막 파일이므로 wq로 저장하고 나간다.
지금까지 /etc/sysconfig/network-scripts 디렉토리 밑에 ifcfg-eth0, ifcfg-eth1, ifcfg-eth2, ifcfg-eth3
4개 파일을 수정했다. 본 파일들의 세부 옵션에 대한 설명은 차후에 포스팅하도록 하겠다.
다음 내용을 설명하기에 앞서 서버 혹은 PC가 NIC를 인식하는 방법에 대해 설명을 하고자 한다.
정확하게 알고 있는 것이 아니기 때문에 대충 이런 방식이구나 하고 이해해 주길 바란다.
NIC를 인식시키는 방법으로는 NIC마다 가지고 있는 고유 번호인 MAC을 확인하여 인식하는 방법과
머더보드(메인보드, 보드)가 슬롯마다 가지고 있는 버스주소를 이용해 인식하는 방법이 있는데
다음은 머더보드의 버스주소를 매칭해 인식하는 방법이다. MAC주소를 이용하는 방법도 사용할 수 있지만
좀 더 오랜 기간을 두고 보았을 때 NIC가 고장이 나서 교체하게 되는 경우 MAC 주소 변경 작업을 다시 해야 하는 번거로움이 있다.
같은 슬롯에 NIC를 교체하게 되더라도 머더보드의 버스 주소는 바뀌지 않기 때문에 eth넘버가 바뀌지 않으므로 본 방식을 추천한다.
그럼 설명 시작 하겠다.
버스 주소와 NIC가 사용하는 드라이버를 확인해야 할 필요가 있기 때문에
ethtool 명령어에 -i 옵션을 주어 현재 설정되어 있는 NIC들의 정보를 확인한다.
driver 이름은 현재 리눅스에서 사용하고 있는 module 이름이고 bus-info가 버스 주소이다.
둘 다 어딘가에 잘 적어두자.
나는 4개의 NIC의 드라이버가 모두 e1000이다.
이후 모듈을 한번 내렸다가 다시 올릴 건데 NIC4개의 드라이버를 확인했을 때 2개일 수도 있고 3개일 수도 있다.
모든 드라이버 모듈을 내렸다가 다시 올려주면 된다.
모듈을 내리기 전에
/etc/udev/rules.d/70-persistent-net.rules 파일을 수정할 거다.
vi 에디터로 파일을 열어보자
대충 보아도 좀 복잡해 보인다. 잘못 만지면 NIC 날아가는 거 아닌가.. 하고 걱정할만하다.
여기에서 필요한 것은 KERNEL과 NAME 두 가지이다.
나머지는 다 지우고 KERNEL과 NAME 사이에 ID 정보를 끼워 넣어주자. ID 정보는 내가 새로 입력하는 거다.
자세히 본 사람은 알겠지만
KERNEL 뒤에 ==
ID 뒤에 ==
NAME 뒤에 =
이다.
내용은 모두 " 로 감싸주자
ID에 아까 적어둔 버스주소를 정확하게 입력해 주고 콤마를 찍어준다.
NAME에 eth뒤에 숫자를 포함해 적을 건데
원하는 숫자를 적으면 그대로 올라온다. 만약 여기에서 숫자를 변경하고 싶다면 처음에 수정했던
/etc/sysconfig/network-scripts/ifcfg-ethX 파일이름과 파일 내용을 같이 수정해 주자.
아래에 보면 모두 주석처리되어 있는데 주석처리하면 안 된다.
그럼 이제 모든 설정이 끝났다.
나는 지금 puuty를 이용해 접속되어 있기 때문에 network 데몬이 내려가면 연결이 끊길 것이다. 만약 내가 지금 세션이 연결되어 있는 인터페이스가 변하지 않는다면 잘 붙어있겠지만 보장은 할 수 없다.
그래서 연결이 끊기더라도 실행되라고 한 줄로 모두 적었다.
1. service network stop # 네트워크 서비스를 내린다.
2. modprobe -r e1000 # NIC 드라이버 모듈을 내린다. ( 아까 ethtool로 확인한 드라이버의 개수가 여러 개면 여러 번 내려줘야 한다. )
3. start_udev # 부팅될 적에 본 적이 있는 뭐가 출력될 것이다 ( udev 밑에 있는 모듈을 새로 불러오는 것이다. )
4. 2에서 내렸던 모듈을 다시 올려준다.
5. service network start # 네트워크 서비스를 올린다.
내가 원하는 대로 바뀐 인터페이스 이름들을 확인하고 뿌듯해한다.
이해가 안 가는 부분이 있다면 충분히 본인이 더 찾아보고 찾아보고 찾아본 이후에
그래도 모르겠다 이해가 안 간다 하는 부분이 있으면 댓글로 달아주길 바란다.
참, 내가 지금 설명한 내용 중에 틀렸다거나 잘못 설명한 부분이 있다면 그것도 댓글로 지적해 줘라.
이상으로 본 포스팅을 마치겠다.