Tools

리눅스 네트워크 관리

Data Engineer 2009. 7. 21. 01:00

네트워크 진단 명령

ifconfig

ifconfig는 interface config의 약자로 네트워크 인터페이스 관련 명령어로 설정하거나 직접 확인하는 명령어이다.

ifconfig명령으로 설정한 것은 시스템을 재부팅하면 그 정보가 사라진다. 따라서 지속적으로 유지하려면 /etc/rc.d/rc.local파일에 위의 설정을 입력해놓거나 /etc/sysconfig/network-scripts/ifcfg-eth0 파일에 설정해 놓아야 한다.

$ ifconfig [interface] [address] [up/down] [옵션]
옵션 설 명
interface NIC(Network Interface Card)를 말하며, 보통 랜(LAN)카드 또는 이더넷(Ethernet) 카드라 한다. 리눅스에서는 랜카드가 하나인 경우 eth0으로 설정되며, 만약 두개를 장착하면 두번째 랜카드는 eth1이 된다.
address 보통 IP가 부여된다.
up/down 네트워크를 활성화/비활성화 시킨다.
option netmask, broadcast등을 설정할 수 있다.

ifconfig의 항목 설명

항 목 설 명
Link encap Ehternet 장치에 사용중인 프로토콜이 Ethernet임을나타낸다.
Hwaddr 이더넷 카드에 있는 고유 하드웨어 주소로, 48비트로 되어 있다. 보통 MAC(Media Address Control)주소라고도 한다.
inet addr IP주소를 나타낸다.
Bcast 브로드 캐스트 주소를 나타낸다.
Mask 넷마스크(Netmask)값을 나타낸다.
UP 인터페이스가 활성화되어 있음을 나타낸다.
BROADCAST 브로드 캐스트를 사용한다.
RUNNING 동작중임을 뜻한다.
MULTICAST 멀티 캐스트를 사용한다.
MTU Maximum Transmission Unit의 약자로 한 번에 전송할 수 있는 최대패킷의 크기를 말한다.
Metric 라우팅할 때 참조되는 거리로 로컬인 경우 값이 1이 된다.
RX/TX 받은 패킷/전송한 패킷의 총 개수(packets), 그 중 에러가 발생한패킷의 수는 errors에, 그냥 버린 패킷의 수는 dropped, 손실된패킷의 개수는 overruns에 표시 된다.
collisions 충돌이 발생한 패킷의 수
Interrupt Ethernet 카드가 현재 사용중인 IRQ
Base address Ethernet 카드가 현재 사용중인 주소

ifconfig를 이용한 IP Alias 사용하기

Ethernet 카드에 IP를 하나만 부여하는 것이 아니라 여러 개의 IP를 부여할 수 있다. 이러한 기능을 IP Alias라고 한다. 이 설정을 할 수 있는 명령어 역시 ifconfig이다. 첫 번째 Ethernet 카드에 추가로 IP를 부여할 경우에는 eth0:0, eth0:1 등으로 표기하여 부여하면 된다.

$ ifconfig eth0:0 192.168.1.210

실제 사용의 예

  1. ethernet 카드에 부여된 IP확인

ifconfig [인터페이스이름] : 현재 네트워크 인터페이스에 설정되어 있는 값을 알 수 있다. 만약 인터페이스 이름을 입력하지 않으면 모든 인터페이스의 값을 출력한다. ifconfig -a 한 것과 같다.

$ ifconfig

설명 : 현재 설정된 모든 이더넷카드의 IP설정을 보여준다.

$ ifconfig eth0

설명 : 첫번째 이더넷카드인 eth0의 IP설정을 보여준다.

  1. ethernet카드의 작동을 중지시키거나 활성화시킨다.
$ ifconfig [인터페이스 이름] [up | down]

설명 : 특정 네트워크 인터페이스를 활성화(up)하거나 비활성화(down)시킨다.

$ ifconfig eth0 down

설명 : eth0 카드의 작동을 중지시킨다. ifdown eth0과 같다.

$ ifconfig eth0 up

설명 : eth0카드의 작동을 활성화한다. ifup eth0과 같다.

  1. ethernet 카드에 IP주소, 넷마스크값, 브로드캐스트 값을 부여한다.

ifconfig [인터페이스이름] [IP주소] [기타설정] [up|down] : 네트워크의 설정

$ ifconfig eth0 192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255 up

설명 : 첫번째 랜카드인 eth0에 IP주소를 192.168.0.2를 부여하고 Netmask는 255.255.255.0 Broadcast는 192.168.0.255를 부여하고 활성화시킨다.

$ ifconfig eth0 192.168.0.2 up

설명 : 첫 번째 랜카드인 eth0에 192.168.0.2를 부여하고 활성화시킨다. 보통 IP 주소만 부여하면 Netmask 등은 자동 설정된다. 하지만 기본 클래스인 A,B,C 클래스가 아닌 다른 서브넷을 사용할 경우에는 꼭 부여한다.

$ ifconfig eth0 192.168.3.1 netmask 255.255.255.128 up

mii-tool

mii-tool(Media Independent Interface tool)은 네트워크 인터페이스의 연결 상태를 확인하고, 강제적으로 랜카드의 속도와 duplex 모드(100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD)를 변경하는데 사용하는 유틸리티이다.

연결 상태 확인

mii-tool은 옵션없이 실행하면 랜카드의 속도, duplex 모드, 연경 상태를 보여주며 각 옵션을 사용하여 각 상태를 확인할 수 있다

  • -v 옵션을 추가하면 보다 상세한 MII 상태를 볼 수 있다.
  • -w 옵션을 사용하면 실시간으로 연결 상태를 확인할 수 있다.

만약 갑자기 no link라고 나온다면 회선에 문내가 생겼거나 연결된 장비간의 회선속도나 duplex 모드가 맞지 않은 경우이다.

속도 변경

autonegotiation으로 두 장비간의 연결 속도와 duplex 모드를 자동으로 맞추게 되지만 제대로 되지 않아 충돌(Late Collision)이 많이 발생하는 경우나 원하는 속도로 변경을 해야 할 때 mii-tool은 유용하게 쓰일 수 있다.

100MB, Full duplex 모드로 변경하는 예이다.

$ mii-tool -F 100baseTx-FD eth0

원래 autonegotiation로 restart하려면 -r 옵션을 사용하면 된다.

ethtool

thtool 명령은 네트워크 인터페이스의 상황을 조사할 수 있다.

실제 사용의 예

정상적으로 동작하고 있으면, 아래와 같이 표시된다.

설명 : 이더넷(ethernet) 케이블이 빠져 있는 경우에는 Link detected : no라고 표시된다. 1000BASE의 NIC를 사용하고 있는데 스피드가 100Mb/s이었거나, 듀플렉스가 half 되어있는 경우는 허브와의 궁합이나 케이블의 이상 등을 고민하기 바란다. ethtool를 실행해 Speed나 Duplex의 값이 이상할 때는 아래와 같이 강제적으로 수정해 상황이 개선되는지 확인한다.

$ ethtool -s eth0 speed 100 // 속도를 100Mb/s로 설정
$ ethtool -s eth0 duplex full // 듀플렉스를 full로 설정

netstat

netstat는 네트워크의 연결 상태를 확인하는 명령

$ netstat [옵션] [address family options]
옵 션 설 명
-a 연결된 모든 소켓을 출력
-n 기호화된 호스트나 포트이름, 유저이름 대신에 숫자로 표시한다. 예를 들면 www은 80으로 표기
-p 소켓에 대한 PID/프로그램을 출력
-r 라우팅 테이블을 출력
-i 인터페이스 테이블을 출력
-s SNMP(Simple Network Managemanet Protocol)와 같은 네트워크 통계를 출력
-c 계속되는 리스트를 출력
-t tcp를 이용하여 접속한 리스트를 출력
-u udp를 이용하여 접속한 리스트를 출력
address family options 형식 : --protocol (inet, unix, ipx, ax25등) 예제) netstat --inet

실제 사용의 예

$ netstat -r

설명 : 라우팅 테이블에 대한 정보를 출력한다. route 명령의 결과와 유사하다.

$ netstat -t

설명 : tcp로 접속한 리스트를 출력한다.

$ netstat --inet -p

설명 : 인터넷으로 접속한 상태를 보여주고 프로그램과 PID를 출력한다.

netstat 명령의 결과에서 state 부분에 나타나는 연결 상태

상태 항목 설 명
LISTEN 서버의 데몬이 떠서 접속 요청을 기다리는 상태
SYS-SENT 로컬의 클라이언트 어플리케이션이 원격 호스트에 연결을 요청한 상태
SYN_RECEIVED 서버의 원격 클라이언트로부터 접속 요구를 받아 클라이언트에게 응답을 하였지만, 아직 클라이언트에게 확인 메시지는 받지 않는 상태
ESTABLISHED 3Way-Handshaking이 완료된 후 서로 연결된 상태
FIN-WAIT1, CLOSE-WAIT, FIN-WAIT2 서버에서 연결을 종료하기 위해 클라이언트에게 종결을 요청하고 회신을 받아 종료하는 과정의 상태
CLOSING 흔하지 않지만 주로 확인 메시지가 전송도중 분실된 상태
TIME-WAIT 연결은 종료되었지만 분실되었을지 모를 느린 세그먼트를 위해 당분간 소켓을 열어놓은 상태
CLOSED 완전히 종료된 상태

traceroute

특정 호스트 또는 연결된 노드를 알아보는 명령어로 특히 라우팅에 어떤 장애가 있을 경우 그 위치를 파악할 수 있다. 윈도우 계열의 tracert 명령과 유사하다. 루트 권한자만 사용가능한 명령이다.

traceroute [Host_name or IP_Address]

설명 : www.naver.com은 멀티 IP 주소를 사용한다는 메시지로 먼저 알려준다. 7번째까지는 잘 찾아갔지만 8번째부터는 방화벽에 의해 차단된 정보라고 ‘*’표시로 나타나고 있다.

nslookup

nslookup 도메인의 정보를 조회하는 명령이다.

nslookup [옵션] [hostname 또는 도메인]

실제 사용법

$ nslookup www.naver.com

설명 : 현재 서버의 DNS 이름과 IP 출력과 함께 사이트의 정보도 함께 출력한다.

$ nslookup -type=mx naver.com

설명 : mx(메일설정관련)에 대한 정보도 출력한다.

$ nslookup

설명 : 현재 서버의 DNS 이름과 IP를 출력하고, 대화형 모드로 실행한다.

nslookup의 대화형모드

nslookup 명령만 내리면 '>'와 함께 대화형 모드로 접속한다. 조회 후 exit를 치면 빠져나온다.

설명 : 대화형 모드에서는 일반 nslookup 도메인값으로 검색하는 것과 동일하다. 하지만 환경설정을 변화하면 변화시zu 환경 설정값에 의존하여 그 결과값을 뿌fu준다. 위의 예처럼 set type=mx 설정으로 특정 도메인의 메일 서버를 확인할 수 있다. exit 명령어로 nslookup 대화형모드를 중단한다.

dig

도메인명(FQDN:Fully Qualified Domain Name)으로 정보를 알아볼 수 있는 명령이다. nslookup보다 좀 더 정확한 결과를 확인할 수 있다.

$ dig 도메인명 [type]

설명 : [type] 에는 MX, A, ANY 등 DNS설정에 사용하는 값을 지정할 수 있다.

실제 사용의 예

설명 : 메일서버 세팅인 MX 설정관련 부분만 보여준다.