현재 시스템에서 사용하고 있는 network port 를 확인하는 것은 서비스 운영시 꼭 알아두어야 할 명령어입니다.
전통적으로 유닉스 계열에서는 netstat 또는 lsof 명령어를 이용하여 사용하고 있는 포트를 확인했습니다.
netstat 를 사용하여 모든 열려 있는 포트 확인하려면 아래 옵션을 주어서 실행하면 됩니다.
netstat -antup
각 옵션의 의미는 아래와 같습니다.
- -a : 모든 소켓 표시
- -t : TCP 만 표시
- -u: UDP 만 표시
- -n: 호스트, 포트 번호 등의 이름 확인을 하지 않고 숫자로 표시
- -p: 소켓을 사용하고 있는 프로세스의 ID 표시
- -r: 라우팅 테이블 표시
- -l : 연결 대기 상태인 소켓만 표시
최근에는 netstat 대신 ss(socket statistics) 라는 별도의 유틸리티 사용을 권장하고 있습니다.
기본적으로 ss명령을 실행하면 모든 연결을 표시합니다.
ss 의 동작은 옵션으로 조절할 수 있으며 아래는 많이 사용하는 옵션입니다.
- -l: 모든 리슨하는 포트를 표시
- -r: IP대신 이름으로 표시
- -t: TCP 소켓만 표시
- -u: UDP 소켓만 표시
- -x: Unix Domain 소켓만 표시
- -n: 호스트 이름으로 변환하지 않고 IP 를 출력. 포트도 서비스명(/etc/services) 대신 포트 번호 출력
- -p: 프로세스 정보 표시
위 명령어는 TCP 소켓중에 Listen 인 프로세스와 포트의 정보를 서비스의 정상 동작 여부 및 의도하지 않은 데몬 서비스가 구동되는지 확인하는데 유용한 명령어이므로 꼭 익혀둘 필요가 있습니다.
Ref
