Ping
Ping (Packet InterNet Groper)
ping IP
- 상대방 호스트가 살아 있는지 확인
- 두 호스트 간의 통신이 정상적으로 구성되어 있는지 확인 (라우팅)
- ICMP (Internet Control Message Protocol)을 사용 (ICMP 메시지가 내부 네트워크 상태 정보를 외부에 유출할 수 있어서 ping을 차단해놓는 경우도 있다)
- 실제 서비스의 서비스 포트가 정상 상태인지는 확인할 수 없다
- ping 종류
- 기본 ping : 옵션을 사용하지 않는 ping 명령어
- 확장 ping : 특정 옵션 (-c, -i, -I, -s 등)을 사용하는 ping 명령어
- 소스 ping : 다른 인터페이스의 IP를 출발지로 지정하는 ping 명령어
TTL (Time To Live)
- IP 패킷이 네트워크 상에서 얼마나 존재할 수 있는지 생존 시간
- 기본 TTL
- Windows : 128
- Linux : 64
- Sisco : 256
- 홉을 하나 지날 때마다 TTL이 1씩 줄어든다.
- tracert <IP> : 홉 지나는 것 확인
tcping
tcping
tcping IP
- 실제 서비스 포트로 정상적인 통신이 가능한지 확인할 수 있다.
- OS에 포함된 기본 명령어가 아니기 때문에 설치해서 사용해야 한다.
- 윈도우 용이다.
- 인터넷에서 tcping.exe 받은 후 C:\windows\system32에 tcping.exe 파일 넣어놓기
Traceroute / Tracert
Traceroute / Tracert
- 리눅스 용 : Traceroute / 윈도우 용 : Tracert
- 리눅스/유닉스 : UDP 프로토콜 기반 / 윈도우 : ICMP 프로토콜 기반
- 출발지부터 통신하거나 목적지까지의 네트워크 경로를 확인할 때 사용
- ping보다 중간 경로의 정보를 더 상세하게 얻을 수 있다
- 출발지에서 목적지까지의 라우팅 경로를 확인해, 통신에 문제가 있을 때 어느 구간부터 문제가 발생했는지 찾을 수 있다.
- IP 헤더인 3계층 정보에 의한 경로 추적. 2계층 이하의 장비 (L2 스위치 등)은 추적할 수 없다.
작동 방식
- IP 헤더의 TTL(Time To Live) 필드를 이용해, TTL을 1부터 1씩 증가시키며 목적지에 도달할 때까지 패킷을 반복 전송
- 라우터 장비를 하나 지날 때마다 TTL이 하나씩 감소하고, TTL이 0이 되면 해당 라우터 장비는 ICMP time exceed 메시지를 출발지로 전송
- traceroute가 ICMP time exceed를 보낸 장비의 IP를 출력하며 경로를 추적
Tcptraceroute
Tcptraceroute (tcptrace)
ping과 tcping처럼, 서비스 포트까지 확인할 수 있는 traceroute
리눅스는 traceroute 명령어에 서비스 포트를 지정해서 써도 되고, tcptraceroute를 설치해서 써도 된다
윈도우는 tracert 명령어에 서비스 포트를 지정할 수 없기 때문에, tcptraceroute를 설치해서 사용해야 한다.
netstat
#TCP에 대한 모든 연결과 수신 대기 정보를 숫자로 출력
netstat -ant4
#TCP 프로토콜에 대한 통계 값 확인
netstat -s -p TCP
netstat (Network Statistics)
- 서버의 네트워크 상태를 확인하는 명령어
- 서비스 포트 상태를 확인하는 용도로 많이 쓴다
- 확인 가능한 정보
- LISTENING : 현재 서버에서 특정 서비스가 정상적으로 열려 있는지
- ESTABLISHED : 외부 서비스와 TCP 세션이 정상적으로 맺어져 있는지
- TIME_WAIT, FIN_WAIT, CLOSE_WAIT : 서비스가 정상적으로 종료되고 있는지
리눅스 옵션
-a : all. 모든 연결과 수신 대기 포트 표시
-n : numeric. 주소와 포트 번호를 숫자 형식으로 표시
-r : route. 라우팅 테이블 표시
-i : interfaces. 인터페이스별 입출력 패킷 통계
-s : statistics. 네트워크에 통계 데이터 출력
-p : programs. PID와 프로그램 이름 출력
-t : tcp. TCP만 출력 (TCP, TCPv6)
-4/-6 : IPv4나 IPv6에 대해 출력
윈도우 옵션
-a : 모든 연결과 수신 대기 포트 표시
-n : 주소와 포트 번호를 숫자 형식으로 표시
-r : 라우팅 테이블 표시
-e : 이더넷 통계를 표시
-s : 프로토콜별 통계를 표시
-p : proto로 지정한 프로토콜의 연결을 표시
ss
ss [옵션] [필터]
ss -lp | grep http
#LISTENING 상태이면서 현재 소켓에서 사용 중인 목록 중 http 서비스에만 출력
ss(Socket Statistics)
- 소켓 정보를 확인할 수 있는 네트워크 명령어
- 화면에 표기할 정보를 커닐 스페이스를 통해 직접 가져오기 때문에 netstat보다 더 빨리 결과를 확인할 수 있다
옵션
-a : 화면 전체에 소켓을 표시
-l : 화면에 LISTENING 상태의 소켓만 표시
-i : 소켓에 대한 자세한 정보
-p : 현재 소켓에서 사용 중인 프로세스 표시
-n : 서비스 명이 아닌 실제 포트 번호로 서비스 포트를 표기
-4 / -6 : IPv4, IPv6에 대한 소켓만 화면에 표시
-s : 프로토콜별 통계 표시
-t : TCP에 대한 소켓만 화면에 표시
-u : UDP에 대한 소켓만 화면에 표시
nslookup
nslookup(name server lookup)
#대화형 nslookup
>nslookup
>google.com
- DNS에 다양한 도메인 관련 내용을 질의해 결괏값을 전송 받을 수 있는 네트워크 명령어
- 자주 사용 : 특정 도메인에 매핑된 IP 주소 확인
- 옵션으로 질의하려는 DNS 서버를 변경할 수 있다
- 방법 2가지
- 직접 질의해 결괏값을 확인 : 하나의 도메인에 대해 간단히 질의할 때 사용
- 대화명 모드를 실행해 확인 : 여러 도메인이나 여러 질의를 해야할 때 사용
telnet
telnet (tele network)
telnet 목적지아이피 서비스포트
telnet naver.com 80
- 원격지 호스트에 터미널 연결을 위해 사용하는 오래된 표준 프로토콜
- 네트워크 문제 해결을 위해 특정 서버의 서비스에 대한 접근 가능성을 테스트할 때에도 사용한다.
- 보안에 취약하기 때문에 요즘엔 SSH(Secure sHell)를 사용할 것을 권고하는 중
tcpdump
#웹 서비스에 대한 패킷만 캡처
tcpdump -i dth0 tcp port 80
#ssh를 제외한 전체 패킷 캡처
tcpdump -i eth0 not tcp port 22
tcpdump
- 네트워크 인터페이스로 오가는 패킷을 캡처해보는 기능의 명령어
- 패킷 분석이 필요할 때 사용
옵션
-i 인터페이스 : 패킷을 캡처할 인터페이스
src IP주소 : 출발지 IP주소를 지정해 필터링
dst IP주소 : 목적지 IP주소를 지정해 필터링
host IP주소 : 출발지/목적지와 상관 없이 IP 주소를 지정해 필터링
-n : 이름으로 표기되는 호스트 네임을 실제 IP주소로 표시 (Localhost -> 127.0.0.1)
-nn : 이름으로 표기되는 서비스 포트를 실제 포트 번호로 표기 (http -> 80)
src port 포트번호 : 출발지 포트를 지정해 필터링
dst port 포트번호 : 목적지 포트를 지정해 필터링
port 포트번호 : 출발지/ 목적지 상관 없이 tcp 포트를 지정해 피터링
tcp : tcp만 필터링
udp : udp만 필터링
-c 출력수 : tcpdump로 출력할 결과의 개수
-w 파일명 : tcpdump의 결과를 화면에 출력하지 않고 파일명으로 저장
-r 파일명 : 파일로 저장한 tcpdump 파일을 화면에 출력
Wireshark (와이어샤크)
tcpdump와 같은 역할을 하는 애플리케이션
패킷 캡쳐를 더 쉽게 할 수 있다.
패킷이 필드별로 구분되고, 패킷별로 flow도 볼 수 있다.