LINUX

ifconfig

0hee 2007. 6. 1. 09:36
ifconfig
 유닉스 환경에서 네트워크 인터페이스 카드의 설정 상태를 알아보거나 IP 주소, 서브넷 마스크 등의 설정 내용을 변경하는데 사용된다.
 현재 자신의 호스트에서 이용 가능한 모든 네트워크 인터페이스에 대한 정보를 알아보려면 다음과 같이 "-a" 옵션을 사용한다. 자세한 옵션은 man 페이지를 참고하자.

proneer@proneer:~$ ifconfig -a
eth0    Link encap:Ethernet  HWaddr 00:50:FC:56:A9:A6
          inet addr:210.115.48.114  Bcast:210.115.48.255  Mask:255.255.255.0
          inet6 addr: fe80::250:fcff:fe56:a9a6/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:29563659 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4142529 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:3674762661 (3.4 GiB)  TX bytes:989270229 (943.4 MiB)
          Interrupt:185 Base address:0x8000
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:658 errors:0 dropped:0 overruns:0 frame:0
          TX packets:658 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:57952 (56.5 KiB)  TX bytes:57952 (56.5 KiB)
sit0      Link encap:IPv6-in-IPv4
          NOARP  MTU:1480  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

  이 호스트에는 eth0 lo, sit0 이라는 3개의 인터페이스가 있는 것을 알 수 있다. eth0은 이더넷 카드 인터페이스이고 lo는 루프백(loop back) 인터페이스, sit0은 IPv6와 IPv4의 통신을 위한 터널링 프로토콜을 의미한다. IPv6는 주소 표현법의 차이로 IPv4와 직접적으로 통신이 불가능 함으로 sit0이라는 특수 목적의 가상장치를 이용해야 한다.



  아래 문장으로부터 eth0 인터페이스가 이더넷에 연결되어 잇다는 사실과 이더넷 카드의 하드웨어 주소를 알 수 있다.
Link encap:Ethernet  HWaddr 00:50:FC:56:A9:A6



  아래 문장으로부터 이 호스트의 Address Family가 inet임을 알 수 있고 이 호스트의 IP 주소와 브로드캐스트 주소 그리고 넷마스크 값을 알 수 있다.
inet addr:210.115.48.114  Bcast:210.115.48.255  Mask:255.255.255.0



 아래 문장은 IPv6의 주소를 나타낸다. Scope:Link 는 접근이 가능하다는 것을 의미한다.
inet6 addr: fe80::250:fcff:fe56:a9a6/64 Scope:Link



  아래 문장에서 UP은 이 인터페이스가 현재 유효하다는 것을 의미한다. BROADCAST는 브로드캐스트를 지원하고 있음을 의미하고 RUNNING은 현재 이 인터페이스는 이용 상태에 있음을 나타낸다. MULTICAST는 인터페이스가 멀티캐스트를 지원하는 것을 뜻한다.
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

  이 모드외에 PROMISC 라는 모드가 설정되어 있는 경우가 있다. promiscuous 모드로 동작함을 의미한다. promiscuous는 사전적 의미로 "상대를 가리지 않는, 무차별 한"의 의미를 가진다. 인터페이스카드는 일반적으로 도착한 트래픽 중에 자신에게 보내온 트래픽만을 받아 들이고 나머지는 거부해 버린다. 하지만 PROMISC 모드는 자신의 인터페이스에 도착한 모든 트래픽을 받아 들이게 된다. 따라서 이 모드를 임의로 설정하지 않았다면 스니핑을 의심해볼 필요가 있다.

 그리고 이더넷의 MTU가 1500 바이트 임을 나타낸다. Metric : 1 은 인터페이스의 라우팅 메트릭 값을 의미한다. 라우팅 메트릭 값이 클수록 비용(cost)이 많은 것을 나타내는데 일반적으로 노드를 지나가는 횟수인 홉(hop) 카운트를 나타낸다.



  RX packets는 이 인터페이스를 통해서 수신된 이더넷 프레임의 총 수를 TX packets는 송신된 프레임의 총 수를 나타낸다.
RX packets:29563659 errors:0 dropped:0 overruns:0 frame:0
TX packets:4142529 errors:0 dropped:0 overruns:0 carrier:0

 

 다음에서는 CSMA/CD 프로토콜에서 충돌(collision)이 발생한 횟수 까지 알려준다.
txqueuelen은 인터페이스 카드의 송신 큐의 길이를 나타낸다.
collisions:0 txqueuelen:1000



 RX bytes는 수신된 패킷의 총 바이트 량을, TX bytes는 송신한 총 바이트 량을 나타낸다.
RX bytes:3674762661 (3.4 GiB)  TX bytes:989270229 (943.4 MiB)



 Interrupt는 이 인터페이스로 패킷이 수신되었을 때 발생하는 인터럽트 번호이며 아래의 경우에 이 인터럽트에 대한 핸들러 주소가 0x9000 을 나타내고 있다.
Interrupt:185 Base address:0x8000



 lo 인터페이스에 대한 출력도 eth0의 경우와 거의 같다 .다만 lo 인터페이스는 LOOPBACK 을 포함하는데 이것이 루프백 인터페이스, 즉, 외부로 나가지 않고 호스트 내부에서 되돌아 오는 터널을 의미한다.
 
 sit0 인터페이스도 마찬가지고 eth0과 별 차이가 없다. 다만 sit0 은 물리적인 인터페이스 카드가 아니고 IPv4와 통신하기 위한 가상장치라는 사실을 기억하자.


 ifconfig 명령을 이용하여 인터페이스를 활성화 또는 비활성화를 할 수 있다. 현재 활성화된 인터페이스는 UP으로 표현되는데 이 인터페이스를 비활성화 시키려면 아래와 같이 down 옵션을 주면 된다. (이 명령은 root 권한이 필요하다. )
# ifconfgi eth0 down


 다시 인터페이스 상태를 확인해 보면 "UP"이 보이지 않는 것을 알 수 있다. 만일 인터페이스를 다시 활성화 시키려면 "ifconfig eth0 up" 명령을 사용하면 된다.

 eth0 인터페이스의 IP 주소를 바꾸고 싶을 때에는 아래와 같이 새로운 IP 주소, 브로드캐스트 주소, 멀티캐스트 주소, 넷마스크 값을 지정하여 ifconfig 명령을 사용하면 된다.
# ifconfig  eth0  inet 210.115.48.99  broadcast 210.115.48.255  netmask 255.255.255.0  up

 주의할 것은 새로운 IP 주소를 지정하기 전에 eth0 인터페이스를 먼저 비활성화 시켜야 한다.


Reference : Computer Network Programming(김화종 저, 홍릉과학출판사)
                 http://freejoon.blogspot.com/2006_04_01_freejoon_archive.html
                 http://www.gentoo.org/news/ko/gwn/20060313-newsletter.xml