1. PC나 서버가 동작중인지 확인하는 기본적인 툴 ping, fping
fping 구할 곳 http://www.fping.com/
ICMP 프로토콜의 echo request, reply type을 사용하여 지정한 시스템의
응답을 확인한다.
요즘은 방화벽이나 서버에서 필터링하는 경우가 상당하므로 ping이 안된다고
해당 서버가 죽었다고 생각해서는 안됨
fping은 ping과 같으나 한번의 명령으로 여러 서버의 응답을 확인할 수 있다.
ping < 확인할 서버 주소 >
fping < 확인할 서버 목록 나열 >
fping 192.168.1.1 192.168.1.5
fping -g 192.168.123.0/24
fping < 파일명 : 지정한 파일명에 나열된 IP에 모두 ping을 함
# fping 192.168.1.1 192.168.1.5 192.168.1.10 192.168.1.30
192.168.1.1 is alive
192.168.1.5 is alive
192.168.1.10 is alive
192.168.1.30 is unreachable
2. 라우팅 경로를 찾는 traceroute, tracepath
traceroute 를 위해서는 ICMP type 11(time-execeeded) 가 필터링되어서는 안됨
1) ICMP 대신 UDP를 사용하려면
traceroute -I < trace할 서버 주소 > 또는
tracepath < trace할 서버 주소 >
2) TCP를 사용하는 traceroute 툴, lft와 tcptraceroute
lft : http://www.mainnerve.com/lft/
tcptraceroute : http://michael.toren.net/code/tcptraceroute/
lft < trace할 서버 주소 >
# lft -d 80 lug.or.kr (해당 사이트가 80포트가 열린 경우 이용)
Tracing ___________________________.
TTL LFT trace to 211.214.161.175:80/tcp
1 192.168.123.254 1.4ms
... 중략 ...
9 211.58.252.150 23.2ms
10 211.108.63.222 21.2ms
11 218.38.58.22 20.6ms
12 [target] 211.214.161.175:80 75.9ms
lft에서 네트워크명, AS번호까지 표시하도록 하려면 -N옵션을 사용하면 된다.
# lft -N -d 80 lug.or.kr
Tracing ____________________________________________________________________
LFT can't seem to round-trip. Local packet filter in the way?
TTL LFT trace to 211.214.161.175:80/tcp
1 [IANA-CBLK1] 192.168.123.254 13.2ms
... 중략 ...
9 [APNIC-CIDR-BLK2/HANANET-DONGJAK-KR] 211.58.252.150 24.2ms
10 [APNIC-CIDR-BLK2/WULSANSO-KR] 211.108.63.222 25.0ms
11 [APNIC4/HANANET-IDC-NGENE-KR] 218.38.58.22 39.4ms
** [80/tcp failed] Try alternate options or use -V to see packets.
3. 네트워크 상태확인하는 netstat
자주 사용하는 옵션 (워낙 옵션을 조합해서 자주 사용하므로 정리할 필요 있음)
-n : 호스트명, 포트명을 lookup하지 않고 그대로 IP, Port번호로 보여준다.
-a : 모든 네트웍 상태(listening, non-listening)를 보여준다.
-t : TCP 프로토콜만
-u : UDP 프로토콜만
-p : 해당 포트를 사용하는 프로그램과 프로세스ID(PID)를 보여줌
(솔라리스에서는 ARP 테이블을 보여줌)
-s : 프로토콜별(IP, ICMP, TCP, UDP 등)로 통계를 보여줌
-c : 1초 단위로 continuous하게 보여줌 (지속적인 접속 변화를 확인해야할 때 유용)
-r : 라우팅 테이블을 보여줌. route 명령처럼
netstat -nlp Listening(l)중인 포트/소켓을 해당 PID와 프로세스명과 함께
netstat -tn TCP 접속 상태
netstat -un UDP 접속 상태
netstat -rn routing 테이블
netstat -ntp TCP 접속 상태를 해당 PID와 프로세스명과 함께
netstat -atnp 모든 TCP 접속상태를 해당 PID와 프로세스명과 함께
netstat -s 통계
netstat -c -t TCP 접속을 continuous 하게 보여줌
# netstat -atnp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:515 0.0.0.0:* LISTEN 671/lpd Waiting
tcp 0 0 127.0.0.1:3333 0.0.0.0:* LISTEN 738/avmilter
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 720/mysqld
... 생략 ...
4. fuser : 파일이나 소켓을 사용하는 프로세스 ID를 보여줌
1) TCP 25(mail)포트를 사용하는 PID를 보여줌
# fuser -n tcp 25
mail/tcp: 757
2) http 포트를 사용하는 PID, USER, 명령어를 보여줌
(-vn을 -nv 처럼 사용해서는 안됨
# fuser -vn tcp http
USER PID ACCESS COMMAND
http/tcp root 1652 f.... httpd
root 1659 f.... httpd
... 생략 ...
3) /dev/hdb1 을 사용하는 사용자와 PID, 명령어
(umount해야할 때 사용중이라 나올 때 유용하게 쓰임)
# fuser -vm /dev/hdb1
USER PID ACCESS COMMAND
/dev/hdb1 truefeel 1669 f.... xmms
truefeel 1670 f.... xmms
5. 패킷 모니터링을 위한 트래픽 덤프 툴 tcpdump
1) eth0 인터페이스로 오고가는 트래픽 정보를 보여줌(-i eth0 옵션없으면 eth0임)
tcpdump
2) 192.128.1.1 host로 오고가는 또는 제외한 트래픽
tcpdump host 192.128.1.1
tcpdump src host 192.128.1.1
tcpdump dst host 192.128.1.1
tcpdump not host 192.128.1.1
3) 192.128.1.1과 192.128.1.2 사이를 오고가는 트래픽만
tcpdump host 192.128.1.1 and 192.128.1.2
4) ICMP, ARP, UDP 프로토콜만, ICMP 프로토콜 20개만
tcpdump icmp -i eth0
tcpdump arp
tcpdump udp
tcpdump icmp -c 20
5) 웹 포트로 오고가는 패킷만
tcpdump port 80
6) dhcp 패킷 확인할 때
# tcpdump -v -s 1500 port 67 or port 68
tcpdump: listening on eth0
01:17:16.803166 0.0.0.0.bootpc > 255.255.255.255.bootps: [udp sum ok]
xid:0x29b28363 vend-rfc1048 DHCP:REQUEST RQ:truefeel
PR:SM+BR+TZ+DG+DN+NS+HN+YD+YS+NTP [tos 0x10] (ttl 16, id 0, len 328)
01:17:16.806441 192.168.1.254.bootps > 255.255.255.255.bootpc:
... 생략 ...
6. 도메인 네임 찾기 dig, nslookup
워낙 다양한 사용법이 있으므로 기본적인 사용과 유용한 것 몇 개만
1) linux.or.kr 의 IP 확인
dig linux.or.k
nslookup linux.or.kr
2) SOA, MX 등의 레코드 확인
dig linux.or.kr soa
dig linux.or.kr mx
3) bind 네임서버 버전 확인
dig @네임서버 txt chaos version.bind
nslookup -q=txt -class=CHAOS version.bind. 네임서버
4) 존파일 transfer
(존파일 전송을 허용한 경우 해당 도메인의 모든 목록을 얻을 수 있다.)
dig @네임서버 도메인명 axfr
# dig @ns.daum.net daum.net axfr
; <<>> DiG 9.2.1 <<>> @ns.daum.net daum.net axfr
;; global options: printcmd
daum.net. 86400 IN SOA ns.daum.net.
hostmaster.daum.net. 2003082602 2700 900 604800 86400
daum.net. 86400 IN NS ns.daum.net.
daum.net. 86400 IN NS ns2.daum.net.
daum.net. 86400 IN MX 10 mx1.hanmail.net.
daum.net. 86400 IN MX 10 mx2.hanmail.net.
daum.net. 86400 IN MX 10 mx3.hanmail.net.
... 생략 ...
7. 웹서버 benchmark 할 때 유용한 lynx, ab
1) time lynx -source localhost > /dev/null
2) ab -n 10 localhost/ 10회 반복해서 요청
ab -n 10 -c 10 loclahost/ 10회 반복, 10건이 동시 접속일 때
8. 도메인 whois 검색하는 fwhois, whois -h
whois.krnic.net 서버에 linux.or.kr 에 대해 whois 검색 요청
fwhois linux.or.kr@whois.krnic.net
whois linux.or.kr -h whois.krnic.net
9. 웹서버 종류 확인
1) telnet 이용
# telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
HEAD / HTTP/1.0
HTTP/1.1 200 OK
Date: Tue, 20 May 2003 12:48:08 GMT
Server: Apache/2.0.44 (Unix) DAV/2 PHP/4.3.1
... 생략 ...
2) HEAD, GET 이용 (perl libwww 모듈에 포함된 툴임)
# HEAD localhost
200 OK
Date: Tue, 20 May 2003 12:51:13 GMT
Accept-Ranges: bytes
Server: Apache/2.0.44 (Unix) DAV/2 PHP/4.3.1
... 생략 ...
3) apachebench 툴 ab 이용
# /usr/local/apache/bin/ab localhost/
... 생략 ...
Server Software: Apache/2.0.44
Server Hostname: localhost
... 생략 ...
4) netcat(nc)를 이용 (레드햇 8.x에서 기본 설치됨)
nc : http://www.atstake.com/research/tools/network_utilities/
# echo "HEAD / HTTP/1.0"|nc localhost 80
HTTP/1.1 200 OK
Date: Sun, 21 Sep 2003 20:00:57 GMT
Server: Apache/2.0.44 (Unix) DAV/2 PHP/4.3.2
... 생략 ...
10. 솔라리스에서 패킷 모니터링
snoop
snoop port 53
11. 솔라리스에서 회선이 연결됐는지 확인하는 방법
while 1
? ndd -get /dev/hme link_status
? sleep 1
? end
fping 구할 곳 http://www.fping.com/
ICMP 프로토콜의 echo request, reply type을 사용하여 지정한 시스템의
응답을 확인한다.
요즘은 방화벽이나 서버에서 필터링하는 경우가 상당하므로 ping이 안된다고
해당 서버가 죽었다고 생각해서는 안됨
fping은 ping과 같으나 한번의 명령으로 여러 서버의 응답을 확인할 수 있다.
ping < 확인할 서버 주소 >
fping < 확인할 서버 목록 나열 >
fping 192.168.1.1 192.168.1.5
fping -g 192.168.123.0/24
fping < 파일명 : 지정한 파일명에 나열된 IP에 모두 ping을 함
# fping 192.168.1.1 192.168.1.5 192.168.1.10 192.168.1.30
192.168.1.1 is alive
192.168.1.5 is alive
192.168.1.10 is alive
192.168.1.30 is unreachable
2. 라우팅 경로를 찾는 traceroute, tracepath
traceroute 를 위해서는 ICMP type 11(time-execeeded) 가 필터링되어서는 안됨
1) ICMP 대신 UDP를 사용하려면
traceroute -I < trace할 서버 주소 > 또는
tracepath < trace할 서버 주소 >
2) TCP를 사용하는 traceroute 툴, lft와 tcptraceroute
lft : http://www.mainnerve.com/lft/
tcptraceroute : http://michael.toren.net/code/tcptraceroute/
lft < trace할 서버 주소 >
# lft -d 80 lug.or.kr (해당 사이트가 80포트가 열린 경우 이용)
Tracing ___________________________.
TTL LFT trace to 211.214.161.175:80/tcp
1 192.168.123.254 1.4ms
... 중략 ...
9 211.58.252.150 23.2ms
10 211.108.63.222 21.2ms
11 218.38.58.22 20.6ms
12 [target] 211.214.161.175:80 75.9ms
lft에서 네트워크명, AS번호까지 표시하도록 하려면 -N옵션을 사용하면 된다.
# lft -N -d 80 lug.or.kr
Tracing ____________________________________________________________________
LFT can't seem to round-trip. Local packet filter in the way?
TTL LFT trace to 211.214.161.175:80/tcp
1 [IANA-CBLK1] 192.168.123.254 13.2ms
... 중략 ...
9 [APNIC-CIDR-BLK2/HANANET-DONGJAK-KR] 211.58.252.150 24.2ms
10 [APNIC-CIDR-BLK2/WULSANSO-KR] 211.108.63.222 25.0ms
11 [APNIC4/HANANET-IDC-NGENE-KR] 218.38.58.22 39.4ms
** [80/tcp failed] Try alternate options or use -V to see packets.
3. 네트워크 상태확인하는 netstat
자주 사용하는 옵션 (워낙 옵션을 조합해서 자주 사용하므로 정리할 필요 있음)
-n : 호스트명, 포트명을 lookup하지 않고 그대로 IP, Port번호로 보여준다.
-a : 모든 네트웍 상태(listening, non-listening)를 보여준다.
-t : TCP 프로토콜만
-u : UDP 프로토콜만
-p : 해당 포트를 사용하는 프로그램과 프로세스ID(PID)를 보여줌
(솔라리스에서는 ARP 테이블을 보여줌)
-s : 프로토콜별(IP, ICMP, TCP, UDP 등)로 통계를 보여줌
-c : 1초 단위로 continuous하게 보여줌 (지속적인 접속 변화를 확인해야할 때 유용)
-r : 라우팅 테이블을 보여줌. route 명령처럼
netstat -nlp Listening(l)중인 포트/소켓을 해당 PID와 프로세스명과 함께
netstat -tn TCP 접속 상태
netstat -un UDP 접속 상태
netstat -rn routing 테이블
netstat -ntp TCP 접속 상태를 해당 PID와 프로세스명과 함께
netstat -atnp 모든 TCP 접속상태를 해당 PID와 프로세스명과 함께
netstat -s 통계
netstat -c -t TCP 접속을 continuous 하게 보여줌
# netstat -atnp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:515 0.0.0.0:* LISTEN 671/lpd Waiting
tcp 0 0 127.0.0.1:3333 0.0.0.0:* LISTEN 738/avmilter
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 720/mysqld
... 생략 ...
4. fuser : 파일이나 소켓을 사용하는 프로세스 ID를 보여줌
1) TCP 25(mail)포트를 사용하는 PID를 보여줌
# fuser -n tcp 25
mail/tcp: 757
2) http 포트를 사용하는 PID, USER, 명령어를 보여줌
(-vn을 -nv 처럼 사용해서는 안됨
# fuser -vn tcp http
USER PID ACCESS COMMAND
http/tcp root 1652 f.... httpd
root 1659 f.... httpd
... 생략 ...
3) /dev/hdb1 을 사용하는 사용자와 PID, 명령어
(umount해야할 때 사용중이라 나올 때 유용하게 쓰임)
# fuser -vm /dev/hdb1
USER PID ACCESS COMMAND
/dev/hdb1 truefeel 1669 f.... xmms
truefeel 1670 f.... xmms
5. 패킷 모니터링을 위한 트래픽 덤프 툴 tcpdump
1) eth0 인터페이스로 오고가는 트래픽 정보를 보여줌(-i eth0 옵션없으면 eth0임)
tcpdump
2) 192.128.1.1 host로 오고가는 또는 제외한 트래픽
tcpdump host 192.128.1.1
tcpdump src host 192.128.1.1
tcpdump dst host 192.128.1.1
tcpdump not host 192.128.1.1
3) 192.128.1.1과 192.128.1.2 사이를 오고가는 트래픽만
tcpdump host 192.128.1.1 and 192.128.1.2
4) ICMP, ARP, UDP 프로토콜만, ICMP 프로토콜 20개만
tcpdump icmp -i eth0
tcpdump arp
tcpdump udp
tcpdump icmp -c 20
5) 웹 포트로 오고가는 패킷만
tcpdump port 80
6) dhcp 패킷 확인할 때
# tcpdump -v -s 1500 port 67 or port 68
tcpdump: listening on eth0
01:17:16.803166 0.0.0.0.bootpc > 255.255.255.255.bootps: [udp sum ok]
xid:0x29b28363 vend-rfc1048 DHCP:REQUEST RQ:truefeel
PR:SM+BR+TZ+DG+DN+NS+HN+YD+YS+NTP [tos 0x10] (ttl 16, id 0, len 328)
01:17:16.806441 192.168.1.254.bootps > 255.255.255.255.bootpc:
... 생략 ...
6. 도메인 네임 찾기 dig, nslookup
워낙 다양한 사용법이 있으므로 기본적인 사용과 유용한 것 몇 개만
1) linux.or.kr 의 IP 확인
dig linux.or.k
nslookup linux.or.kr
2) SOA, MX 등의 레코드 확인
dig linux.or.kr soa
dig linux.or.kr mx
3) bind 네임서버 버전 확인
dig @네임서버 txt chaos version.bind
nslookup -q=txt -class=CHAOS version.bind. 네임서버
4) 존파일 transfer
(존파일 전송을 허용한 경우 해당 도메인의 모든 목록을 얻을 수 있다.)
dig @네임서버 도메인명 axfr
# dig @ns.daum.net daum.net axfr
; <<>> DiG 9.2.1 <<>> @ns.daum.net daum.net axfr
;; global options: printcmd
daum.net. 86400 IN SOA ns.daum.net.
hostmaster.daum.net. 2003082602 2700 900 604800 86400
daum.net. 86400 IN NS ns.daum.net.
daum.net. 86400 IN NS ns2.daum.net.
daum.net. 86400 IN MX 10 mx1.hanmail.net.
daum.net. 86400 IN MX 10 mx2.hanmail.net.
daum.net. 86400 IN MX 10 mx3.hanmail.net.
... 생략 ...
7. 웹서버 benchmark 할 때 유용한 lynx, ab
1) time lynx -source localhost > /dev/null
2) ab -n 10 localhost/ 10회 반복해서 요청
ab -n 10 -c 10 loclahost/ 10회 반복, 10건이 동시 접속일 때
8. 도메인 whois 검색하는 fwhois, whois -h
whois.krnic.net 서버에 linux.or.kr 에 대해 whois 검색 요청
fwhois linux.or.kr@whois.krnic.net
whois linux.or.kr -h whois.krnic.net
9. 웹서버 종류 확인
1) telnet 이용
# telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
HEAD / HTTP/1.0
HTTP/1.1 200 OK
Date: Tue, 20 May 2003 12:48:08 GMT
Server: Apache/2.0.44 (Unix) DAV/2 PHP/4.3.1
... 생략 ...
2) HEAD, GET 이용 (perl libwww 모듈에 포함된 툴임)
# HEAD localhost
200 OK
Date: Tue, 20 May 2003 12:51:13 GMT
Accept-Ranges: bytes
Server: Apache/2.0.44 (Unix) DAV/2 PHP/4.3.1
... 생략 ...
3) apachebench 툴 ab 이용
# /usr/local/apache/bin/ab localhost/
... 생략 ...
Server Software: Apache/2.0.44
Server Hostname: localhost
... 생략 ...
4) netcat(nc)를 이용 (레드햇 8.x에서 기본 설치됨)
nc : http://www.atstake.com/research/tools/network_utilities/
# echo "HEAD / HTTP/1.0"|nc localhost 80
HTTP/1.1 200 OK
Date: Sun, 21 Sep 2003 20:00:57 GMT
Server: Apache/2.0.44 (Unix) DAV/2 PHP/4.3.2
... 생략 ...
10. 솔라리스에서 패킷 모니터링
snoop
snoop port 53
11. 솔라리스에서 회선이 연결됐는지 확인하는 방법
while 1
? ndd -get /dev/hme link_status
? sleep 1
? end