Page tree

Contents


현재 시스템에서 사용하고 있는 network port 를 확인하는 것은 서비스 운영시 꼭 알아두어야 할 명령어입니다.


전통적으로 유닉스 계열에서는 netstat 또는 lsof 명령어를 이용하여 사용하고 있는 포트를 확인했습니다.


netstat 를 사용하여 모든 열려 있는 포트 확인하려면 아래 옵션을 주어서 실행하면 됩니다.

netstat -antup

각 옵션의 의미는 아래와 같습니다.

  • -a : 모든 소켓 표시
  • -t : TCP 만 표시
  • -u: UDP 만 표시
  • -n: 호스트, 포트 번호 등의 이름 확인을 하지 않고 숫자로 표시
  • -p: 소켓을 사용하고 있는 프로세스의 ID 표시
  • -r: 라우팅 테이블 표시
  • -l : 연결 대기 상태인 소켓만 표시


최근에는 netstat 대신 ss(socket statistics) 라는 별도의 유틸리티 사용을 권장하고 있습니다.

기본적으로 ss 명령을 실행하면 모든 연결을 표시합니다.

$ sudo ss

Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port 
u_str ESTAB 0 0 * 20645 * 20644 
u_str ESTAB 0 0 /run/systemd/journal/stdout 20290 * 20559 
u_str ESTAB 0 0 * 20559 * 20290 
u_str ESTAB 0 0 * 17259 * 18699 
u_str ESTAB 0 0 * 20644 * 20645
모든 연결된 소켓 출력

ss 의 동작은 옵션으로 조절할 수 있으며 아래는 많이 사용하는 옵션입니다.

  • -l: 모든 리슨하는 포트를 표시
  • -r: IP대신 이름으로 표시
  • -t: TCP 소켓만 표시
  • -u: UDP 소켓만 표시
  • -x: Unix Domain 소켓만 표시
  • -n: 호스트 이름으로 변환하지 않고 IP 를 출력. 포트도 서비스명(/etc/services) 대신 포트 번호 출력
  • -p: 프로세스 정보 표시


$ sudo ss -ltp


State Recv-Q Send-Q Local Address:Port Peer Address:Port 
LISTEN 0 128 *:ssh *:* 
LISTEN 0 128 *:ssh *:* 
LISTEN 0 80 :::mysql :::* 
LISTEN 0 128 :::http :::* 
LISTEN 0 128 :::ssh :::*
listen 상태인 TCP 프로세스 정보 출력

위 명령어는 TCP 소켓중에 Listen 인 프로세스와 포트의 정보를 서비스의 정상 동작 여부 및 의도하지 않은 데몬 서비스가 구동되는지 확인하는데 유용한 명령어이므로 꼭 익혀둘 필요가 있습니다.


Ref


  • No labels

This page has no comments.