우분투 리눅스에서 잃어버린 eth0 디바이스를 찾아서...

 

오늘 여러분에게 알려드릴 내용은 리눅스에서 이더넷 장치 번호에 대한 것 입니다.
사실 매우 간단한 건데 이걸 이렇게 따로 정리하게 된 데에는 제가 이것 때문에 좀 삽질을 해 버려서 그렇습니다.
우리에게 삽질이라는 것은 매우 고달프고 슬픈 일이고, 그것을 누군가 하지 않게 도와준다면 그 사람은 천사니까요.
아마 전 천사가 되려나 봅니다. 으하하하하!!! ^^v

 

Step 1. 일반적인 상태에서 ifconfig

 

헛소리는 여기서 그만하고 일단 리눅스에서 우리가 잘 아는 이더넷 정보 보는 명령어를 한번 쳐 봅시다.

$ ifconfig

eth0      Link encap:Ethernet  HWaddr f4:ce:46:0f:4c:b1
          inet addr:192.168.10.29  Bcast:192.168.255.255  Mask:255.255.0.0
          inet6 addr: fe80::f6ce:46ff:fe0f:4cb1/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:374886581 errors:0 dropped:0 overruns:0 frame:9
          TX packets:381551488 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:700781527 (700.7 MB)  TX bytes:478153271 (478.1 MB)
          Interrupt:16

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:16436  Metric:1
          RX packets:548522 errors:0 dropped:0 overruns:0 frame:0
          TX packets:548522 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:38073420 (38.0 MB)  TX bytes:38073420 (38.0 MB)

일반적으로 이렇게 이더넷 장치 정보와 Loopback 정보가 나타나게 되겠죠.
우리에게 가장 흔한 eth0는 잡히면 그냥 아무런 의식없이 이더넷을 사용하게 되는거고 안잡히면 매우 기분 나쁘게 됩니다.
저는 서버를 설정할 때에 아래와 같이 주소를 정적으로 사용합니다.


다들 우분투에서 이더넷 주소를 정적으로 할당하기 위해 아래와 같이 하시죠.

$ vi /etc/network/interfaces

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
    address 192.168.10.10
    netmask 255.255.0.0
    network 192.168.0.0
    broadcast 192.168.255.255
    gateway 192.168.10.1
    dns-nameservers 8.8.8.8

이렇게 하면 우리는 항상 192.168.10.10 이라는 주소로 서버를 구동할 수 있게 되는 것이죠.
그러다가 제가 ARM-Ubuntu 를 이용한 작업을 좀 하다가 맥 주소(MAC)가 충돌나서 부트로더에서 맥을 수정했습니다.

 

Step 2. 맥 어드레스가 수정되었다! 앗! eth0 안잡힌다!!!

 

그러다가 제가 ARM-Ubuntu 를 이용한 작업을 좀 하다가 맥 주소(MAC)가 충돌나서 부트로더에서 맥을 수정했습니다.
앗! 그런데 eth0 가 안잡히는 거에요.
그런데 작업하는 특성상 반드시 eth0를 써야하는데 말이죠!!!
저는 슬퍼졌습니다. ㅠ_ㅠ

 

자! 이렇게 슬퍼하면서 제 방황을 고민하던 중 저희 회사의 장태성 주임님이 제 삽질을 거들기 시작했습니다.
그리고 찾아낸 놀라운 사실 하나!!!

 

우분투왈: 나는 니가 지난 여름에 바꾼 이더넷 하드웨어 정보를 모두 알고있다!
효원님왈: 머시라!!! 이 잡것아!!! ㅜ_ㅜ 엉엉엉~~~

 

아래 파일을 열어 보시죠!

 

$ vi /etc/udev/rules.d/70-persistent-net.rules

# PCI device 0x1969:0x1063 (ax88796b)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="xx:xx:xx:xx:xx:00", ATTR{dev_id}=="0x0", 
ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

# PCI device 0x1969:0x1063 (ax88796b)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="xx:xx:xx:xx:xx:01", ATTR{dev_id}=="0x0", 
ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

# PCI device 0x1969:0x1063 (ax88796b)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="xx:xx:xx:xx:xx:02", ATTR{dev_id}=="0x0", 
ATTR{type}=="1", KERNEL=="eth*", NAME="eth3"

헉! 이게 머야!!!
제가 부트로더에서 맥 주소를 바꿀때마다 이녀석은 그 흔적을 모조리 기억하고 있었습니다.
그래서 그렇게 제 속을 석이면서 eth0 디바이스 등록이 안되는 것이었어요.

 

Step 3. 문제해결! eth0 다시 살아나라!!!

 

기분이 안좋았지만 해결 방법이 보이니 기분은 좋습니다.

자! 문제의 파일을 지워 버립시다.

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

자! 우리가 이 문제의 파일을 지워버리고 부팅을 다시 해 봅시다!!!
성공이에요!!!
다시 eth0 디바이스가 등록되기 시작했습니다.

 

여러분도 이런 문제로 고민하고 계셨다면 제가 알려드린 이 방법으로 문제를 해결해 보세요.
이 문제는 분명 또 누군가의 발목을 잡고 있을 테니까요. ^^