반응형

네트웍에 문제가 발생 했을 때 해결할 수 있는 방법 몇가지

ping, traceroute, nslookup, netstat, top, ifconfig



------------------------------------------------------

1. ping 명령으로 연결 확인

ping 명령은 한마디로 얘기해서 상대 호스트의 up,down 상태를 확인하는 명령어이다. 아주 간단한 명령이지만 어떤 호스트의 다운여부나 네트워크 불능여부를 파악하는 데는 이 보다 좋은 명령어가 없을 것이다. ping은 실질적으로 icmp의 echo request 기능을 이용하는 것이다. 그러나 ping은 단지 네트웍상에서 상대 호스트가 살았는지 죽었는지만을 확인하는 명령어 이기에 이것 만으로는 네트웍의 문제점을 찾아 내기란 어려운게 사실이다. 이런 경우는 dns 혹은 nfs 등의 서비스를 테스트해서 부수적인 정보를 더 얻을 필요가 있다.

[root@slug /root]# ping ccs

ping ccs.sogang.ac.kr (163.239.1.1): 56 data bytes

64 bytes from 163.239.1.1: icmp_seq=0 ttl=255 time=0.9 ms

64 bytes from 163.239.1.1: icmp_seq=1 ttl=255 time=0.9 ms

64 bytes from 163.239.1.1: icmp_seq=2 ttl=255 time=0.9 ms

64 bytes from 163.239.1.1: icmp_seq=3 ttl=255 time=0.9 ms

64 bytes from 163.239.1.1: icmp_seq=4 ttl=255 time=0.9 ms

64 bytes from 163.239.1.1: icmp_seq=5 ttl=255 time=0.9 ms

64 bytes from 163.239.1.1: icmp_seq=6 ttl=255 time=0.9 ms

64 bytes from 163.239.1.1: icmp_seq=7 ttl=255 time=0.9 ms




------------------------------------------------------

2. traceroute 명령의 사용

ping이 상대 호스트의 up,down 상태를 점검하는 것이라면 traceroute는 보다 구체적으로 패킷의 경로를 추적해 주는 똑똑한 녀석이다. 즉, 외부망으로의 접속이 차단되거나 라우터 단에서 문제가 발생했을 때에는 라우팅 경로를 확인하면서 어느 호스트에서 패킷이 차단되는지를 점검해야 할 것이다.바로 이러한 기능을 해주는 도구가 traceroute 인 것이다. 다음의 예는 정상적으로 네트워크가 동작하는 경우의 결과를 보인 것이다. 목적지까지 패킷이 제대로 전달됨을 볼 수 있다. 참고로 도메인 이름이 아닌 ip주소로 나타난 호스트는 dns에 등록이 되지 않았다는 의미이다.

[/slug]# traceroute www.kornet.nm.kr

traceroute to www.kornet.nm.kr (168.126.63.18), 30 hops max, 40 byte packets

1 sogang-fddi-1 (163.239.1.10) 1.044 ms 2.671 ms 1.072 ms

2 168.126.59.77 (168.126.59.77) 8.609 ms 3.248 ms 168.126.47.193 (168.126.47

.193) 3.202 ms

3 168.126.16.121 (168.126.16.121) 5.645 ms 5.053 ms 6.427 ms

4 www.kornet.nm.kr (168.126.63.18) 5.489 ms 12.361 ms 4.291 ms

이제 다음의 예를 보자. 3번째 호스트 혹은 라우터에 ‘!n’이 표시된 것을 볼 수 있을 것이다. 이는 ‘network unreachable’을 의미하는 것으로 pado-inha.kreonet.re.kr 호스트의 라우팅 테이블에 문제가 있어 패킷을 전달시키지 못하는 것을 말한다.

[/slug]# traceroute www.lg.co.kr

traceroute to www.lg.co.kr (165.243.5.37), 30 hops max,

40 byte packets

1 165.246.10.250 (165.246.10.250) 1 ms 1 ms 1 ms

2 165.246.15.1 (165.246.15.1) 2 ms 1 ms 1 ms

3 pado-inha.kreonet.re.kr (134.75.181.1) !n !n !n

다음의 예는 그리 흔한 예는 아니지만 멀티플렉싱 라우터의 예이다. 즉 아래의 호스트중에 5번의 taejon-seoul-t3.kreonet.re.kr 호스트는 kfddi3.kreonet.re.kr과 mix-serial4-1.sanfrancisco.mci.net 두군데로 패킷을 동시에 전송하는 것이다.

일반적인 경우.

[root@slug /root]# traceroute www.oracle.com

traceroute to v-www.us.oracle.com (205.227.44.16), 30 hops max, 40 byte packets

1 sogang-fddi-1 (163.239.1.10) 2.202 ms 1.554 ms 0.930 ms

2 168.126.47.193 (168.126.47.193) 4.945 ms 168.126.59.77 (168.126.59.77) 3.4

64 ms 168.126.47.193 (168.126.47.193) 21.727 ms

3 apgateway3-noc.kornet21.net (168.126.16.75) 16.272 ms 13.969 ms 3.701 ms

4 210.183.28.65 (210.183.28.65) 4.045 ms 3.569 ms 10.228 ms

5 203.234.255.210 (203.234.255.210) 198.941 ms 193.242 ms 199.559 ms

6 main3-249-192.sjc.above.net (209.249.192.4) 197.496 ms 200.980 ms 195.862

ms

7 core1-main3.sjc.above.net (209.249.0.53) 202.879 ms 192.557 ms 193.170 ms

8 mae-west-core1-oc12.sjc.above.net (207.126.96.246) 192.456 ms 194.697 ms

195.558 ms

9 mae-west-core1-oc3-2.maew.above.net (209.133.31.182) 195.194 ms 200.176 ms

194.591 ms

10 s2-1-0.sanjose1-cr2.bbnplanet.net (4.0.85.6) 270.570 ms 266.020 ms 240.87

8 ms

11 p2-1.sanjose1-nbr2.bbnplanet.net (4.0.3.197) 228.333 ms 235.643 ms 237.29

7 ms

12 p1-0.sanjose1-nbr1.bbnplanet.net (4.0.5.85) 242.226 ms 262.068 ms 243.828

ms

13 p4-0.paloalto-nbr2.bbnplanet.net (4.0.1.1) 239.771 ms 231.898 ms 242.323

ms

14 p9-0-0.paloalto-br1.bbnplanet.net (4.0.1.221) 233.567 ms 242.865 ms 236.5

04 ms

15 f0-0.paloalto-cr11.bbnplanet.net (131.119.0.211) 271.271 ms 231.349 ms 23

2.981 ms

16 h2-0.oracle2.bbnplanet.net (4.0.43.218) 232.256 ms 237.982 ms 232.040 ms

17 v-www.us.oracle.com (205.227.44.16) 242.197 ms 233.464 ms 234.834 ms

특이한 경우

[/slug]# traceroute www.oracle.com

traceroute to inet07-1.us.oracle.com (192.86.154.111), 30 hops max,

40 byte pacs

1 165.246.10.250 (165.246.10.250) 2 ms 2 ms 2 ms

2 165.246.15.1 (165.246.15.1) 2 ms 2 ms 1 ms

3 hongneung-nca-t3.kreonet.re.kr (134.75.27.1) 16 ms 8 ms 17 ms

4 gurum.kreonet.re.kr(134.75.28.1) 9 ms 14 ms 6 ms

5 taejon-seoul-t3.kreonet.re.kr(134.75.3.1) 10 ms 9 ms 31 ms

6 kfddi3.kreonet.re.kr (134.75.20.3) 68 ms 23 ms 16 ms

mix-serial4-1.sanfrancisco.mci.net (204.189.216.181) 298 ms

520 ms 545 ms

traceroute 명령의 결과에 ‘*’ 표시가 나타나는 경우가 있다. 이는 게이트웨이가 제대로 동작하지 않음을 의미하는 것이다. 즉 패킷을 제대로 처리하지 못함을 의미한다. 이러한 ‘*’ 표시가 계속적으로 보이면 그 라우터에 문제가 있거나 회선상의 단절이 발생한 것일 것이다.

그리고 산발적으로 보이는 경우는 네트워크의 패킷 흐름양이 너무 많아져 게이트웨이가 늦어져서 그러는 경우와 라우팅 테이블이 꼬였을 경우에 생기는 결과이다.

다음이 그 예이다.

[root@slug /root]# traceroute -q 4 www.yahoo.com

traceroute: warning: www.yahoo.com has multiple addresses; using 204.71.200.67

traceroute to www.yahoo.com (204.71.200.67), 30 hops max, 40 byte packets

1 sogang-fddi-1 (163.239.1.10) 1.032 ms 0.895 ms 1.321 ms 0.889 ms

2 168.126.47.193 (168.126.47.193) 6.737 ms 168.126.59.77 (168.126.59.77) 3.7

37 ms 10.318 ms 168.126.47.193 (168.126.47.193) 40.684 ms

3 apgateway3-noc.kornet21.net (168.126.16.75) 4.758 ms 9.192 ms 6.471 ms

14.804 ms

4 210.183.28.65 (210.183.28.65) 5.724 ms 3.737 ms 3.924 ms 3.843 ms

5 203.234.255.210 (203.234.255.210) 198.024 ms 207.542 ms 192.772 ms 198.9

27 ms

6 main3-249-192.sjc.above.net (209.249.192.4) 193.939 ms 216.425 ms 192.676

ms 205.461 ms

7 core1-main3.sjc.above.net (209.249.0.53) 202.330 ms 234.493 ms 198.564 ms

194.141 ms

8 pao-sjc-oc12.pao.above.net (209.133.31.150) 198.832 ms 229.429 ms 195.057

ms 193.342 ms

9 fe1-0-0.br1.pao.globalcenter.net (206.251.8.122) 212.004 ms 195.591 ms 26

7.010 ms 214.233 ms

10 pos4-1-155m.cr2.pao.globalcenter.net (206.132.254.153) 164.988 ms 201.973

ms * 192.052 ms

11 pos5-3-155m.cr2.snv.globalcenter.net (206.132.254.213) 242.607 ms 212.896

ms 180.360 ms 202.198 ms

12 pos1-0-2488m.hr8.snv.globalcenter.net (206.132.254.41) 190.198 ms 176.827

ms 180.186 ms 223.997 ms

13 bas1r-ge3-0-hr8.snv.yahoo.com (208.178.103.62) 201.429 ms 174.161 ms 185.

353 ms 169.829 ms

14 * www2.yahoo.com (204.71.200.67) 191.594 ms 194.505 ms *

위의 예에서 옵션 ‘-q’에 이어지는 4는 각 호스트마다 4개의 패킷을 보내어 확인하라는 의미이다. 이 경우

pos4-1-155m.cr2.pao.globalcenter.net (206.132.254.153) 164.988 ms 201.973 ms * 192.052

14 * www2.yahoo.com (204.71.200.67) 191.594 ms 194.505 ms *

사이의 네트워크 전송 부하가 크며 호스트는 문제가 있다고 보면 무난하다. 하지만 당부하고 싶은 것은 여러 이유로 인해 위의 리스트를 보고 예측한 것이 틀릴 수도 있다는 점이다. 그러므로 최종적인 확인은 각각의 호스트로의 ping 명령을 통해 확인해야 한다.




------------------------------------------------------

3. netstat 네트웍의 문제를 파악하자!!!

* netstat 명령어

일반적으로 netstat 명령어는 네트워크와 관련된 상태정보를 보여준다. 다음은 보여줄 수 있는 상태의 종류이다.

(1) 네트워크의 연결 상황을 보여준다( 옵션 없이 사용 ).

(2) 인터페이스 설정 정보를 검사한다( -i 옵션 ).

(3) 라우팅 테이블을 조사한다(-n, -r 옵션, 여기서 -n 옵션은

호스트의 주소를 숫자로 표시하라는 옵션).

(4) 여러 네트워크 프로토콜에 대한 운용 상태 정보를 보여준다 (-s 옵션).

[root@slug /root]# netstat

active internet connections (w/o servers)

proto recv-q send-q local address foreign address state

tcp 0 0 slug.sogang.ac.kr:www slug2.sogang.ac.kr:1307 time_wait

tcp 0 0 slug.sogang.ac.kr:www slug2.sogang.ac.kr:1306 time_wait

tcp 0 0 slug.sogang.ac.kr:www slug2.sogang.ac.kr:1305 time_wait

tcp 0 0 slug.sogang.ac.kr:www slug2.sogang.ac.kr:1304 time_wait

tcp 0 0 slug.sogang.ac.kr:www slug2.sogang.ac.kr:1303 time_wait

tcp 0 0 slug.sogang.ac.kr:www slug2.sogang.ac.kr:1302 time_wait

tcp 0 0 slug.sogang.ac.kr:www slug2.sogang.ac.kr:1301 time_wait

tcp 0 0 slug.sogang.ac.kr:www slug2.sogang.ac.kr:1300 time_wait

tcp 0 0 slug.sogang.ac.kr:www slug2.sogang.ac.kr:1299 time_wait

tcp 0 0 slug.sogang.ac.kr:www slug2.sogang.ac.kr:1298 time_wait

tcp 0 0 slug.sogang.ac.kr:www slug2.sogang.ac.kr:1297 time_wait

tcp 0 0 slug.sogang.ac.kr:www slug2.sogang.ac.kr:1296 time_wait

tcp 0 0 slug.sogang.ac.kr:www slug2.sogang.ac.kr:1295 time_wait

tcp 0 0 slug.sogang.ac.kr:www slug2.sogang.ac.kr:1294 time_wait

tcp 0 0 slug.sogang.ac.kr:www slug2.sogang.ac.kr:1293 time_wait

tcp 0 0 slug.sogang.ac.kr:www slug2.sogang.ac.kr:1292 time_wait

tcp 0 0 slug.sogang.ac.kr:www slug2.sogang.ac.kr:1291 time_wait

tcp 0 0 slug.sogang.ac.kr:www slug2.sogang.ac.kr:1290 time_wait

tcp 0 0 slug.sogang.ac.kr:www slug2.sogang.ac.kr:1289 time_wait

tcp 0 0 slug.sogang.ac.kr:www slug2.sogang.ac.kr:1288 time_wait

tcp 0 0 slug.sogang.ac.kr:www slug2.sogang.ac.kr:1287 time_wait

tcp 0 1066 slug.sogang.ac.k:telnet ccsadm25.sogang.ac:1182 established

tcp 0 0 slug.sogang.ac.k:telnet cspclab40.sogang.a:1088 established

active unix domain sockets (w/o servers)

proto refcnt flags type state i-node path

unix 1 [ ] stream connected 307684 @00016c05

unix 1 [ ] stream connected 443 @0000001d

unix 1 [ ] stream connected 306986 @00016bc9

unix 1 [ ] stream connected 307047 @00016bd2

unix 1 [ ] stream connected 736 @00000032

unix 1 [ ] stream connected 513 @00000024

unix 1 [ ] stream connected 531 @00000025

unix 0 [ ] stream connected 131 @00000014

unix 1 [ ] stream connected 307685 /dev/log

unix 1 [ ] stream connected 307048 /dev/log

unix 1 [ ] stream connected 306987 /dev/log

unix 1 [ ] stream connected 737 /dev/log

unix 1 [ ] stream connected 555 /dev/log

unix 1 [ ] stream connected 554 /dev/log

unix 1 [ ] stream connected 444 /dev/log

인자없이 쓰는 경우 활성화된 tcp 와 udp 포트의 상황을 볼 수 있다. 또한 -a 옵션을 쓰면 연결을 기다리는 비활성화 된 서버도 볼 수 있다.

* 게이트웨이 혹은 라우터에 이상이 없는데 특이하게도 특정 컴퓨터나 혹은 몇개의 컴퓨터만이 네트워크가 매우 느리거나 하는 경우가 있다. 이 경우netstat 명령을 통해 확인한다.

우선, 다음의 예를 보자. ‘-i’ 옵션은 네트워크 인터페이스(카드)의 상태를 보여주는 것이다.

[root@slug /root]# netstat -i

kernel interface table

iface mtu met rx-ok rx-err rx-drp rx-ovr tx-ok tx-err tx-drp tx-ovr flg

eth0 1500 0 20989404 614 0 630 870886 0 0 0 bru

lo 3924 0 48462 0 0 0 48462 0 0 0 lru

앞에서 보면 ‘eth0’이 받은 패킷 수는 20989404 이며 입력 에러 수는 614개, 출력 패킷 수는 870886개이며 출력에러가 없다는 것을 알 수 있다.

여기서 입출력 에러의 비가 지나치면 어떠한 문제가 있다는 얘기이다. 만약 특정 컴퓨터 하나에서만 이런 결과가 나온다면 그 컴퓨터의 네트워크 카드에 문제가 있다는 것이므로 네트워크 카드의 교체를 검토해야 할 것이다. 주위의 다른 컴퓨터들에서도 같은 결과가 나온다면 이는 이들 컴퓨터 사이에 연결된 선로에 문제가 있다는 것을 의미한다. 이런 경우 선로를 교체해야 할 것이다. 아래는 다양한 netstat 의 명령 옵션이다. 참조해서 활용하기 바란다.

[root@slug /root]# man netstat

usage: netstat [-veennccf] [<af>] -r netstat {-v|--version|-h|--help}

netstat [-vnncaeol] [<socket> ...]

netstat { [-veennac] -i | [-cnne] -m | -s }

-r, --route display routing table

-i, --interfaces display interface table

-g, --groups display multicast group memberships

-s, --statistics display networking statistics (like snmp)

-m, --masquerade display masqueraded connections

-v, --verbose be verbose

-n, --numeric dont resolve names

-n, --symbolic resolve hardware names

-e, --extend display other/more information

-p, --programs display pid/program name for sockets

-c, --continuous continuous listing

-l, --listening display listening server sockets

-a, --all, --listening display all sockets (default: connected)

-o, --timers display timers

-f, --fib display forwarding information base (default)

-c, --cache display routing cache instead of fib

<socket>={-t|--tcp} {-u|--udp} {-w|--raw} {-x|--unix} --ax25 --ipx --netrom

<af>=use '-a <af>' or '--<af>' default: inet

list of possible address families (which support routing):

inet (darpa internet) ax25 (ampr ax.25) netrom (ampr net/rom)

ipx (novell ipx) ddp (appletalk ddp)




------------------------------------------------------

* nslookup

이 명령어는 자신이 ip를 알고 있는데 도메인을 모를 경우나 반대로 도메인은 알고 있는데 ip를 모를 경우에 사용하는 명령어이다.

[root@slug /root]# nslookup

default server: ccs.sogang.ac.kr

address: 163.239.1.1

nslookup을 실행시키면 위와같은 꺽새 프롬프트가 떨어진다. 여기에다 자신이 궁금해 하는-자신이 알고 있는 것이 도메인명이고 알고자 하는 것이 ip address라면 도메인명을 친다. 아래와 같이.

[root@slug /root]# yahoo.com

server: ccs.sogang.ac.kr

address: 163.239.1.1

non-authoritative answer:

name: yahoo.com

addresses: 204.71.200.245, 204.71.200.243

반대로 자신이 알고자 하는 것이 도메인명이라면 아래와 같이 ip address를 입력하면 자신이 원하는 정보를 얻을수 있다.

[root@slug /root]# 210.120.129.180

server: ccs.sogang.ac.kr

address: 163.239.1.1

name: chollian.net

address: 210.120.129.180

간혹가다 이런 경우도 있을 것이다. ip나 도메인명을 올바로 입력했는데 찾아주지 못하는 경우가 있을 것이다. 이는 네임서버나 호스트 화일에 등록이 되어 있지 않거나 올바른 주소가 아니기 때문에 발생하는 에러일 것이다.

[root@slug /root]# 166.145.10.4

server: ccs.sogang.ac.kr

address: 163.239.1.1

*** ccs.sogang.ac.kr can't find 166.145.10.4: non-existent host/domain

nslookup은 외부로부터 들어오는 다양한 형태의 접속 시도를 확인할 수 있는 좋은 프로그램이다. 이것은 /etc/resolv.conf 의 네임서버에서 시작한다.



------------------------------------------------------
top

네트웍의 관리란 시스템의 자원을 어떻게 잘 활용하는가와 맥락이 같을 수 있어서 중요한 프로그램 하나를 소개하고자 한다. 아래는 top을 실행시킨 후의 결과치이다.

[root@slug /root]# top

10:17am up 11:43, 2 users, load average: 1.01, 1.02, 1.00

65 processes: 61 sleeping, 4 running, 0 zombie, 0 stopped

cpu states: 23.3% user, 76.6% system, 0.0% nice, 0.0% idle

mem: 63200k av, 61584k used, 1616k free, 31316k shrd, 21836k buff

swap: 68508k av, 8528k used, 59980k free 17848k cached

pid user pri ni size rss share stat lib %cpu %mem time command

4872 root 15 0 12236 7756 3828 r 0 99.0 12.2 573:41 netscape-com

15451 root 2 0 1028 1028 828 r 0 0.9 1.6 0:05 top

1 root 0 0 164 116 92 s 0 0.0 0.1 0:04 init

2 root 0 0 0 0 0 sw 0 0.0 0.0 0:00 kflushd

3 root 0 0 0 0 0 sw 0 0.0 0.0 0:00 kpiod

4 root 0 0 0 0 0 sw 0 0.0 0.0 0:00 kswapd

5 root -20 -20 0 0 0 sw< 0 0.0 0.0 0:00 mdrecoveryd

111 root 0 0 68 0 0 sw 0 0.0 0.0 0:00 apmd

260 bin 0 0 244 216 160 s 0 0.0 0.3 0:03 portmap

307 root 0 0 240 172 128 s 0 0.0 0.2 0:00 syslogd

318 root 0 0 448 164 136 s 0 0.0 0.2 0:00 klogd

332 daemon 0 0 152 112 68 s 0 0.0 0.1 0:00 atd

346 root 0 0 176 120 76 s 0 0.0 0.1 0:00 crond

364 root 0 0 140 72 44 s 0 0.0 0.1 0:00 inetd

378 root 0 0 1044 464 300 s 0 0.0 0.7 0:00 named

392 root 0 0 100 0 0 sw 0 0.0 0.0 0:00 lpd

409 root 0 0 92 0 0 sw 0 0.0 0.0 0:00 rpc.statd

각 프로세스들의 cpu,메모리 점유율등이 일목 요연하게 나타나는 편리한 프로그램이다.

반응형

'블라베 IT world > Linux Document' 카테고리의 다른 글

리눅스 보안에 대하여  (0) 2013.02.13
레드햇 리눅스 6.0 설치와 활용  (0) 2013.02.13
Centos day 02 - commands  (0) 2013.02.13
Centos day 01 - install  (0) 2013.02.13
6.DNS 세팅을 변경  (0) 2013.01.03

+ Recent posts