해당 명령어들은 네트워크에 서버를 처음 연결할 때 서버의 네트워크 설정을 확인하기 위해 사용하기도 하지만 갑자기 서버가 정상적으로 통신되지 않을 때 유용하게 사용 가능하다.
ping(Packet IntetNet Groper)
ping은 IP 네트워크를 통해 특정 목적지까지 네트워크가 잘 동작하고 있는지 확인하는 명령어이다.
상대방 호스트가 살아 있는지 , 두 호스크 간의 통신을 위한 라우팅 경로가 정상인지 확인하는 것이 목표이며 ICMP(Internet Control Message Protocol)라는 인터넷 프로토콜을 사용한다.
ICMP : 인터넷 프로토콜의 비신뢰적인 특성을 보완하기 위한 프로토콜로 IP 패킷 전송 중 에러 발생 시 에러 발생 원인을 알려주거나 네트워크 상태를 진단해주는 기능을 제공(링크)
사용법은 아래와 같다.
ping [옵션] 목적지_IP 주소
추가로 옵션을 사용해서 ping 을 체크할 수 있는데 이를 확장 ping이라고 한다. 이 옵션들은 윈도우, 리눅스에 존재하며 주요 옵션은 아래와 같다.
주요 옵션 | 리눅스 |
-c count | ping을 보내는 패킷을 몇 번 보내고 종료할 것인지를 지정 기본 설정은 강제 정지할 때까지 |
-i interval | 패킷을 보내는 시간 간격, 기본 설정값은 1초, 슈퍼 유저의 경우 0.2 이하로 가능 |
-l interface | 패킷을 보낼 때, 출발지 주소를 지정. 실제 IP 값을 지정하거나 인터페이스 이름을 지정하면 출발지 주소가 변경됨, 라우팅 테이블에 의해 나가는 인터페이스의 IP 주소가 출발지 주소가 됨 |
-s packetsize | 패킷 크기 지정, 기본 값은 56바이트(8바이트의 ICMP 헤더가 추가로 붙어 64비트로 송신) |
주요 옵션 | 윈도우 |
-n count | ping을 보내는 패킷을 몇 번 보내고 종료할 것인지를 지정 기본 설정은 4회 |
-t | 중지할 때까지 지정한 호스트로 ping을 지속적으로 전송 |
-S srcaddr | 사용할 원본 IP 주소로, 리눅스의 -l 옵션과 동일 |
-l size | 패킷 크기를 지정. 기본 설정값은 32바이트 |
-r count | count 홉의 경로 기록(최대 9홉까지 설정 가능) |
tcping(윈도우)
목적지 단말이 살아 있고 중간 경로에 문제가 없더라도 서비스 포트가 정상인지 ping 만으로는 확인할 수 없다.
방화벽과 같은 보안 장비나 운영체제 방화벽, 서비스 포트 미 오픈과 같은 경우가 있기 때문이다.
naver.com은 ping이 막혀있는데 이는 내부 네트워크의 상태 정보를 외부에 유출할 수 있어 icmp를 차단해서 그렇다.
따라서 목적지의 실제 서비스 포트로 정상적인 통신이 가능한지 확인하는 것이 중요하다.
이 명령어는 tcping이며 사용법은 아래와 같다.
tcping [옵션] 목적지_IP주소
추가 옵션 또한 존재하며 아래와 같다.
주요 옵션 | 윈도우 |
-n count | tcping을 전송하는 횟수(기본 5회) |
-t | 중지될 때까지 지정한 호스트로 ping을 지속적으로 전송 |
-i interval | tcping을 전송하는 시간 간격 |
serverport | tcping으로 확인하려는 서비스 포트 미 설정 때는 80이 기본값 |
<참고>
tcping은 기본 프로그램이 아니므로 아래 링크에 접속해서 설치해줘야 한다.
tcping 다운로드 : https://www.elifulkerson.com/projects/tcping.php
traceroute(리눅스)/tracert(윈도우)
이 명령어는 출발지부터 통신하거나 목적지까지의 네트워크 경로를 확인할 때 사용한다.
ping과 다르게 중간 경로의 상세한 정보를 얻을 수 있다. 또한 출발지에서 목적지까지의 라우팅 경로 확인, 목적지까지의 통신에 문제가 있을 때 어느 구간에서 발생했는지 확인 가능하다.
TTL(Time To Live) 필드를 이용한다. TTL을 1부터 1씩 증가시키면서 목적지에 도달할 때까지 패킷을 반복적으로 전송하면서 경로를 추적한다.
이때 TTL은 인터넷 구간에서 경로를 찾지 못하거나 잘못 전송된 패킷이 무제한적으로 돌아다니지 않도록 한다.
라우터 장비를 하나 지날 때마다 1씩 줄고 0이 되는 순간 해당 라우터에서 패킷을 드롭시키고 icmp 메시지를 통해 출발지 단말에 드롭한 이유를 알려준다.
라우터에서 동작하므로 2 계층 이하에서는 불가능하고 3 계층 장비를 통해 가능하다.
traceroute로 두 호스트 간의 경로가 의도대로 정상적인 경로인지 확인하려면 각 호스트에서 traceroute를 모두 수행해야 한다.
사용법은 아래와 같다.
- 리눅스 : traceroute [옵션] 목적지_IP 주소
- 윈도 : tracert [옵션] 목적지_IP 주소
주요 옵션 | 리눅스 |
-l, --icmp | ICMP 기반으로 traceroute 수행 |
-T, --tcp | TCP SYN으로 traceroute를 수행하면 기본 서비스 포트는 80 |
-n | IP주소를 도메인이 아닌 숫자 형식으로 표시(도메인 리졸브 미 수행) |
-p port,--port=port | 특정 포트를 지정해 traceroute 수행 |
-s src_addr --source=src_addr |
패킷이 나가는 인터페이스가 아닌 별도 IP로 출발지 IP 지정 |
주요 옵션 | 윈도우 |
-d | 도메인이 아닌 숫자 형식으로 IP 주소를 표시(도메인 리졸브 미 수행) |
-h maximum_hops | 대상 검색을 위한 최대 홉 수 |
tcptraceroute
traceroute는 경로 추적만 가능하며 서비스를 위한 서비스 포트가 정상적으로 열리는지 확인할 수 없다. 이때 서비스가 중간 경로에서 차단됐는지, 최종 목적지에서 차단됐는지, 목적지 단말에서 서비스를 제대로 오픈하지 못했는지 확인하기 위해 tcptraceroute 명령어를 사용한다.
tcptraceroute는 출발지와 목적지까지의 서비스 포트가 정상적으로 열리는지 확인할 수 있고 만약 열리지 않는다면 어느 구간부터 서비스가 막히는지 확인할 수 있다.
<참고>
tcproute는 아래의 링크에서 다운로드할 수 있다.
tcproute 홈페이지 : https://www.elifulkerson.com/projects/tcproute.php
사용법은 아래와 같다.
- tcptraceroute [옵션] 목적지_IP 주소 [서비스 포트] : 리눅스
- tcproute [옵션] 목적지_IP 주소 : 윈도우
주요 옵션 | 리눅스 |
-n | ICMP 기반으로 traceroute 확인 |
-s source address | 출발지 IP 주소를 지정 |
destination port | 도메인이 아닌 숫자 형식으로 IP 주소 표시(도메인 리졸브 미 수행) |
주요 옵션 | 윈도우 |
-p PORT | 목적지 서비스 포트 지정 |
-d | 도메인이 아닌 숫자 형식으로 IP 주소 표시(도메인 리졸브 미 수행) |
-i INT# | 특정 인터페이스로 출발지 인터페이스 지정 해당 옵션을 사용하지 않을 때는 명령 실행 시 인터페이스를 선택 |
--http | HTTP Request를 보내 접속 확인 |
netstat(network statistics)
netstat은 서버의 다양한 네트워크 상태를 확인하는 데 사용하는 명령어이다. 네트워크 관련 정보를 알 수 있어 사용 범위가 넓지만 서비스 포트 상태를 확인하는 용도로 많이 사용된다.
현재 서버에서 특정 서비스가 정상적으로 열려 있는지(Listening), 또는 외부 서비스와 TCP 세션이 정상적으로 맺어져 있는지(Established), 서비스가 정상적으로 종료되고 있는지(Time_wait, Fin_wait, Close_wait) 여부 등을 확인할 수 있다.
포트 상태 정보뿐만 아니라 라우팅 테이블이나 인터페이스 패킷 통계정보 확인에도 사용할 수 있다.
사용법은 아래와 같다.
netstat [옵션]
주요 옵션 | 리눅스 |
-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 옵션과 함께 사용 가능 |
-s | 프로토콜별 통계를 표시, -p 옵션을 사용해 기본갑의 일부 집합에 대한 통계만 표시 |
-p proto | proto로 지정한 프로토콜의 연결을 표시 |
nslookup(name sercer lookup)
DNS(Domain Name Server)에 다양한 도메인 관련 내용을 질의해 결괏값을 전송받을 수 있는 네트워크 명령어이다.
자주 사용하는 질의는 특정 도메인에 매핑된 IP 주소를 확인하기 위해 사용한다.
대부분의 인터넷 사용자들이 주요 통신사의 DNS 서버를 참조하고 있으므로 외부 DNS 서버에 변경 정보가 전파되었는지 확인하려면 통신사 DNS 서버에 질의해 확인하는 것이 좋다.
nslookup에는 직접 질의 방법과 대화명 모드 방법을 제공한다. 하나의 도메인에 간단히 질의할 때는 직접 질의, 여러 도메인이나 DNS에서 다수의 질의를 해야 할 때는 대화형 모드로 진행한다.
사용방법은 아래와 같다.
nslookup [옵션] : 기본 네임 서버를 사용한 대화형 모드
nslookup [옵션] - server : 기본 네임 서버를 server로 지정한 대화형 모드
nslookup [옵션] host : 기본 네임 서버를 사용한 host 질의
nslookup [옵션] host server : 기본 네임 서버를 server로 지정한 host 질의
nslookup은 A 레코드에 대한 값을 질의하는데 다른 레코드 정보를 확인할 때는 set type(or set querytype)을 사용해 설정값을 확인할 수 있다.
아래는 set type에 적용할 수 있는 레코드 항목이다.
설정값 | 내용 |
A | 도메인에 대한 IPv4 정보 확인 |
AAAA | 도메인에 대한 IPv6 정보 확인 |
ANY | 도메인에 대한 모든 설정 정보 확인 |
MX | 현재 도메인에 대한 메일 서버 설정 확인 |
NS | 현재 도메인에 대한 네임 서버 설정 확인 |
PTR | 역방향 도메인 정보 확인 |
telnet(tele network)
텔넷은 원격지 호스트에 터미널 연결을 위해 사용되는 매우 오래된 표준 프로토콜이다. 서버에 접근해 관리하거나 특정 서버의 서비스에 대한 접근 가능성을 테스트하는 데에 사용한다.
평문을 사용하므로 네트워크에 접근 가능한 해커에 의해 통신 내용을 감청당할 수 있어 보안에 취약하다.
사용법은 아래와 같다.
telnet 목적지 IP 서비스 포트
ipconfig
ipconfig는 네트워크 설정을 확인하는 윈도우 명령으로 2가지 옵션이 존재한다.
- ipconfig /release : 네트워크 주소 해제
- ipconfig /renew : 네트워크 주소 갱신
IP 주소를 정상적으로 할당받지 못한 경우 release, renew 작업이 필요하다.
DHCP 사용이 설정된 상황에도 IP 할당이 안된다면 단말 자체적으로 169.254.0.0/16 대역의 IP를 할당한다.
다음은 현재 서버에서 도메인에 대한 로컬 캐시 정보를 지우기 위해 사용하는 옵션이다
- ipconfig /flushdns
로컬에 저장된 도메인 캐시와 새로 변경된 DNS 정보가 일치하지 않는다면 통신이 불가하기 때문에 캐시 정보를 삭제해야 한다.
현재 로컬에 저장된 캐시 정보를 확인할 때는 /displaydns 옵션을 사용한다.
'CS > 네트워크' 카테고리의 다른 글
VPN(Virtual Private Network) (0) | 2022.08.14 |
---|---|
DDoS 방어 장비에 대해 (0) | 2022.08.13 |
IPS, IDS 에 대해 (0) | 2022.08.13 |
방화벽이란 (0) | 2022.08.13 |
보안과 보안 솔루션 (0) | 2022.08.12 |