소프트웨어 관점에서, 특히 운영체제 수준에서 포트(port)는 특정 프로세스나 애플리케이션, 또는 네트워크 서비스의 종류를 식별하는 논리적인 구조입니다. 리눅스 시스템에서 실행되는 각 네트워크 서비스는 통신을 위해 특정 프로토콜(가장 널리 쓰이는 것은 TCP(Transmission Control Protocol)과 UDP(User Datagram Protocol))와 포트 번호를 사용하며, 이를 통해 다른 프로세스나 서비스와 데이터를 주고받습니다.
이 글에서는 리눅스 시스템에서 열려 있는 TCP와 UDP 포트를 소켓 요약 정보와 함께 목록으로 확인하고, 실시간으로 모니터링하는 방법을 소개합니다.
리눅스에서 열린 모든 포트 목록 확인하기
리눅스 시스템에서 열려 있는 포트를 확인하려면 netstat 명령어 또는 ss 유틸리티를 사용할 수 있습니다.
참고로 netstat 명령어는 더 이상 권장되지 않는(deprecated) 도구이며, 최신 배포판에서는 더 상세한 네트워크 통계를 제공하는 ss 명령어가 그 자리를 대체하고 있습니다.
$ sudo netstat -tulpn OR $ sudo ss -tulpn
위 명령어의 출력 결과에서 State(상태) 열은 해당 포트가 대기 상태(LISTEN)에 있는지 여부를 보여줍니다.
명령어에 사용된 각 옵션의 의미는 다음과 같습니다.
-t– TCP 포트 목록을 표시합니다.-u– UDP 포트 목록을 표시합니다.-l– 대기 중인(listening) 소켓만 출력합니다.-n– 포트 번호를 숫자로 표시합니다.-p– 해당 포트를 사용하는 프로세스/프로그램 이름을 표시합니다.
TCP 및 UDP 포트를 실시간으로 감시하기
열린 TCP 및 UDP 포트를 실시간으로 지속적으로 확인하려면 netstat 또는 ss 명령어를 watch 유틸리티와 함께 실행하면 됩니다. watch는 지정한 명령어를 일정한 간격(기본 2초)으로 반복 실행하여 화면을 자동 갱신해 주는 도구입니다.
$ sudo watch netstat -tulpn OR $ sudo watch ss -tulpn
모니터링을 종료하려면 Ctrl+C를 누르면 됩니다. 필요에 따라 watch -n 5 ...처럼 -n 옵션으로 갱신 주기를 초 단위로 조정할 수도 있습니다.
함께 읽으면 좋은 관련 글
- 특정 포트에서 수신 대기 중인 프로세스를 찾는 3가지 방법
- 'nc' 명령어로 원격 포트 연결 가능 여부 확인하기
- 리눅스에서 Systemd로 실행 중인 모든 서비스 목록 확인하기
- 리눅스 시스템/네트워크 관리자를 위한 Nmap 명령어 실전 예제 29가지
마치며
지금까지 리눅스에서 netstat와 ss, 그리고 watch를 활용해 열린 TCP·UDP 포트를 확인하고 실시간으로 모니터링하는 방법을 살펴보았습니다. 이 내용이 서비스 포트 관리와 네트워크 문제 진단에 도움이 되기를 바랍니다. 주제에 대해 궁금한 점이나 의견이 있다면 댓글로 남겨주세요.