[TIL] Linux 에서 특정 서비스가 외부에서 호출되고 있는 서비스인지 확인하는 방법
- TIL
- 2021. 2. 5.
1. 상황
A: 저희 172.21.x.x redis 서버를 다른 서비스에서 사용하고 있는 곳이 있나요..? 확인 한번 부탁드립니다. 사용하는곳이 없다면 해당 장비를 제거하려고 합니다.
위의 작업 지시를 받고, 코드 저장소를 확인해보니.. 분명 코드에는 해당 장비의 ip 가 config 에 명시되어 있는 서비스가 있었다.
redis
ip : 172.21.x.x
하지만. 해당 코드가 레거시이며.. 실제로는 해당 장비의 redis를 사용하고 있는 서비스는 없을 것 같다는 의구심이 굉장히.. 많이 든다.
그렇다면 어떻게 해당 장비의 사용 유무를 확실히 할 수 있을까?
2. 진행
특정 장비의 서비스를 외부에서 사용하고 있는 곳이 있는지 (호출하고 있는 서비스가 있는지) 확인 해보기 위해 다음과 같은 절차를 수행할 수 있다.
1) 먼저, 172.21.x.x 장비에 접속해 redis 가 실제로 떠있는지 부터 확인해보자.
ps -ef | grep redis
음.. 일단 잘떠있군?!
2) 그렇담 다음으로 해당 서비스가 떠있는 포트에 대한 네트워크 통계치를 확인해보자. redis의 port인 6379 이므로 다음과 같은 명령어를 입력한다.
netstat -anp | grep 6379
뭐야.. 아무런 결과도 안나오잖아? 그렇담 위의 redis는 현재 외부에서 사용하고 있는 서비스가 없다고 판단할 수 있다.
무슨말이냐고..?
만약. 특정 port로 떠있는 서비스를 외부에서 호출하고 있다면. 다음과 같이 netstat (네트워크 통계치) 명령어 실행시 어떤 ip 에서 해당 port 의 서비스를 호출하고 있는지 확인할 수 있다.
위의 내용을 해석해보자면.
현재 접속해 있는 장비가 172.21.101.107 이며 WAS 장비의 port 인 8080 으로 netstat (네트워트 통계치)를 조회했을 때
172.21.100.xx / 172.21.101.xx 등의 IP 를 사용하고 있는 장비가 172.21.101.107 장비의 8080 port 즉 WAS 와 통신을 하고 있다고 이해 할 수 있다.
netstat의 결과는 왼쪽부터 프로토콜, 로컬 IP, 리모트 IP, 상태 정보를 보여준다.
이때 상태 정보는 다음과 같이 구분 된다 (출처)
1) LISTEN : 서버의 데몬이 떠서 접속 요청을 기다리는 상태
2) SYN-SENT : 로컬의 클라이언트 어플리케이션이 원격 호스트에 연결을 요청한 상태
3) SYN_RECEIVED : 서버가 원격 클라이언트로부터 접속 요구를 받아 클라이언트에게 응답을 하였지만 아직 클라이언트에게 확인 메시지는 받지 않은 상태
4) ESTABLISHED : 3 way-handshaking 이 완료된 후 서로 연결된 상태
5) FIN-WAIT1, CLOSE-WAIT, FIN-WAIT2 : 서버에서 연결을 종료하기 위해 클라이언트에게 종결을 요청하고 회신을 받아 종료하는 과정의 상태
6) CLOSING : 흔하지 않지만 주로 확인 메시지가 전송도중 분실된 상태
7) TIME-WAIT : 연결은 종료되었지만 분실되었을지 모를 느린 세그먼트를 위해 당분간 소켓을 열어두고 있는 상태
8) CLOSED : 완전히 종료
'TIL' 카테고리의 다른 글
[TIL] apache 와 tomcat 이 정상적으로 연결되어 있는지 확인하는 방법 (0) | 2021.03.27 |
---|---|
[TIL] SSL offloading 이란 무엇일까? (0) | 2021.01.05 |
[TIL] mysql 이모티콘 저장 실패 (0) | 2020.09.22 |