리눅스 환경에서 netstat 명령어를 사용하여 네트워크 정보를 확인하는 방법에 대해 알아보겠습니다.
netstat 란
netstat는 전송 제어 프로토콜, 라우팅 테이블, 수많은 네트워크 인터페이스, 네트워크 프로토콜 통계를 위한 네트워크 연결을 보여주는 명령 줄 도구이다. 위키백과
netstat는 네트워크 관련한 정보를 보는 유틸리티로 오래전부터 Unix 계열의 운영체제에서 사용되어 왔으며 현재 LISTEN 중인 포트, 모든 내외부/연결 정보 등을 확인할 수 있습니다.
자주 사용하는 netstat 옵션
- -a : 모든 소켓보기, 이 옵션이 없으면 상태가 ESTABLISHED 인 것만 나옵니다. --all 옵션과 동일합니다.
- -n : 도메인 주소를 읽어들이지 않고 숫자로 출력합니다.
- -p : PID(프로세스 ID) 와 사용 중인 프로그램명이 출력됩니다.
netstat 옵션
- -c : 현재 실행 명령을 매 초마다 실행
- -l : listen 하고 있는 포트만 보여줌
- -i : 내트워크 트래픽정보 모니터링
- -t : tcp 로 연결된 내용 출력
- -u : udp 로 연결된 내용 출력
- -r : 라우팅 테이블을 출력
- -s : 프로토콜별 통계 정보
netstat State
- LISTEN : 서버에 프로세스가 실행되어 있으며 클라이언트의 접속 요청을 기다리는 상태
- ESTABLISED : 서버와 클라이언트간에 세션 연결이 성립되어 통신이 이루어지는 상태
- CLOSE_WAIT : TCP 연결이 상위 레벨로부터 연결 종료를 기다리는 상태
- TIME_WAIT : 연결은 종료 되었지만 특정시간 동안 소켓을 열어놓은 상태
- CLOSE : 연결이 종료된 상태
모든 소켓 확인
1 | netstat -a |
TCP 포트 목록
특정 문자열이 포함된 포트를 확인할 수 있습니다. 다음의 예시는 0 0.0.0.0
또는 0 :::
문자열이 포함된 TCP 포트 목록을 출력하는 명령어입니다.
1 | netstat -nlpt | egrep "0 (0.0.0.0|:::)" |
포트 & 프로세스 목록
LISTEN 중인 포트 및 프로세스명만 확인하려면 다음과 같은 명령을 사용합니다.
1 | netstat -anp | grep "LISTEN " | grep -v 127.0.0.1 | sed 's/:::/0 /g' | sed 's/[:\/]/ /g' | awk '{print $5"\t"$10}' | sort -ug |