Server/Linux

리눅스 네트워크 포트 상태 확인

범데이 2021. 11. 30. 00:25

만일 웹 서버를 생성하고, 데몬(Daemon)프로세스로 실행하여 웹 서비스를 개시하려고 할때, 현재 시스템의 네트워크 포트 상태를 확인할 필요가 있다.

(만약 서버의 포트로 지정된 번호가 이미 사용중인 포트라면, 지정한 포트를 변경하거나, 현재 해당 포트를 사용하는 프로세스를 종료시켜야 한다.)

 

현재 사용하고 있는 TCP포트(Port)를 조회하는 리눅스 명령어는 netstat이다. netstat 명령어로 TCP 통신을 진행중인 서비스의 연결 상태를 확인할 수 있다. (netstat은 Network Statistics의 약자로, 네트워크의 문제를 찾아내고 성능 측정으로서 네트워크상의 트래픽(Traffic)양을 결정하기 위해 사용한다. )

 

 

netstat 옵션:

a
모든 소켓을 출력
-l
listen 상태인 소켓 만 출력
-n
서비스 이름 확인 생략(호스트 이름과 포트가 숫자 형식으로 표시)
-p
PID 와 프로세스 명을 출력
-t
TCP 소켓만 출력
-u
UDP 소켓만 출력

 

netstat -nltp

 

​위 명령어의 실행 결과는 아래와 같다.

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:5432            0.0.0.0:*               LISTEN      -
tcp6       0      0 :::22                   :::*                    LISTEN      -
tcp6       0      0 :::5432                 :::*                    LISTEN      -

 

시스템 콘솔에 표시되는 네트워크 정보의 항목은 아래와 같다.

Proto(Protocol)
프로토콜의 종류, TCP 또는 UDP
Local Address
자기 자신의 IP 주소와 포트(Port) 번호, 0.0.0.0은 특정 IP와 연결되어 있지 않다는 뜻
Foreign Address
상대방 측의 IP 주소와 포트(Port) 번호, 0.0.0.0은 아직 통신이 시작되지 않았다는 뜻
State
현재 서비스의 연결 상태(State)
PID/Program name 현재 포트를 사용하고있는 프로세스 정보

 

또한, 위의 "State" 항목에 표시되는 상태는 아래와 같다.

ESTABLISHED
연결 성립 상태
SYN_SENT
Server 에서 Client 로 연결 요청을 시도한 후 기다리는 상태
SYN_RECV
Client 에서 연결 요청을 받은 상태
FIN_WAIT1
소켓이 닫치고, 연결은 차단되고 있는 상태
FIN_WAIT2
연결이 닫치고, 소켓은 Client 에서 차단되는 걸 기다리는 상태
TIME_WAIT
네트워크가 패킷을 처리하기 위해 소켓이 닫힌 후에도 대기중인 상태
CLOSE
소켓이 사용되지 않는 상태
CLOSE_WAIT
Client 에서 종료되고 소켓이 닫힐 때까지 대기하는 상태
LAST_ACK
Client 가 종료되고 소켓도 닫친 후 확인을 기다리는 상태
LISTEN
소켓에 들어오는 연결 요청을 대기 중인 상태
CLOSING
Client 에서 연결 종료 요청 확인을 기다리는 상태
UNKNOWN
상태 확인 불가

 

 

사용하고자 하는 포트 번호를 이미 사용하고 있는 경우,  해당 포트 번호를 사용중인 프로세스를 아래와 같이 조회하고

ps -ef | grep {프로세스 이름}

 

프로세스를 종료할 수 있다.

kill -9 {프로세스 ID}

kill 옵션

    -9: 강제 종료

    -15: 정상 종료

 

 

 


#References

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=anysecure3&logNo=221594360583 

 

[리눅스/CentOS] 네트워크 관리 명령어(2)

안녕하세요. 닷홈 입니다. 지난 글에 이어 네트워크 관리하는 데에 주로 사용되는 명령어에 대해 알아보도...

blog.naver.com

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=pxkey&logNo=221276188823 

 

리눅스 「netstat」 네트워크 포트(Port) 상태 확인

안녕하세요. 창작자 픽케입니다. 만약 Node.js 기반의 웹 서버를 생성하고, 데몬(Daemon) 프로세스로 실...

blog.naver.com

 

반응형