Linux에서 listening port확인하기(netstat,ss,lsof)

Posted by Geuni's Blog on December 29, 2021

네트웍이나 특정 서비스 통신이슈를 확인할떄 우선 해야할것이 사용중인 port를 확인하는것이다.

아래 netstat,ss,lsof등 명령을 사용하여 어떠한 서비스가 어떠한 포트를 사용중인지 확인하는 방법을 간단히 소개하고자 한다.

netstat명령어

netstat는 통신관련된 다양한 정보를 제공하는 명령이며 사용중인 포트 및 socket상태 확인이 가능하다. 사용법은 아래와 같다.

1
sudo netstat -tunlp

해당 명령에는 아래같은 옵션들이 있다.

  • -t - tcp통신포트

  • -u -udp통신포트

  • -n -host,서비스,유저 등을 숫자(ip,port,UID)로 표시

  • -l -listening port만 노출

  • -p -PID와 서비스명 노출

output:

Linux中查看监听中的(占用)端口(netstat,ss,lsof)

자주 보게될 정보는

  • Proto - 프로토콜 종류
  • Local Address - listening인 로컬 IP와Port
  • PID/Program name - PID와 서비스명

grep을 이용하여 결과값에 대한 필터링이 가능하다. 아래와 같이 TCP프로토콜로 22번 포트를 사용중인 서비스를 보고싶다면 아래와 같이 명령을 이용하면 된다.

1
sudo netstat -tnlp | grep :22

출력결과에서 볼수 있다싶이 22번 포트는 SSH가 사용중이다.

Linux中查看监听中的(占用)端口(netstat,ss,lsof)

출력결과가 없다면 해당포트를 tcp프로토콜로 사용중인 서비스가 없다는 의미다.

요즘은 ss,ip등 명령으로 netstat를 대체하는 추세이기는 하나 대부분 OS버전에서 여전히 사용가능하며 자주 이용하게되는 명령이다.

ss명령어

ss는 socket정보조회가 가능한 또 다른 툴이며 netstat 대체목적으로 나온 명령어이다. netstat보다 빠르며 상대적으로 깔끔한 포맷으로 socket정보를 제공한다. 명령어 옵션도 netstat랑 비슷하다.

1
sudo ss -tunlp

output은 netstat와 비슷하시지만 포맷차이를 확인할수 있음.

Linux中查看监听中的(占用)端口(netstat,ss,lsof)

lsof명령어

lsof를 프로세스가 열고있는 파일의 상세한 정보를 제공하는 유용한 툴이다.

“Everything is a file” Unix계열 운영체제의 특징이며 socket도 일종의 파일이므로 관련 조회가 가능하다.

lsof명령어로 listening port확인

1
sudo lsof -nP -iTCP -sTCP:LISTEN

사용된 옵션은 아래와 같다

  • -n -host명 대신 ip로 표현。
  • -p -서비스명 대신 port번호로 표시
  • -iTCP -sTCP:LISTEN - TCP프로토콜로 LISTEN중인 socket파일들만 조회

Linux中查看监听中的(占用)端口(netstat,ss,lsof)

특정 port만 보고싶다면

1
sudo lsof -nP -iTCP:3306 -sTCP:LISTEN

아래는 mysql서비스가 3306을 사용중인 case이다.

Linux中查看监听中的(占用)端口(netstat,ss,lsof)

이상 netstatsslsof 명령어를 이용하여 listening port 확인하는 방법과 특정 port를 사용중인 프로세스(서비스)를 확인하는 방법을 소개했다.