개발하는 재규어
article thumbnail

리눅스 서비스 포트 오픈 확인
리눅스 서비스 포트 오픈 확인

Intro ⭐

 다른 시스템과 API 연동 시, 타 시스템 → 우리 시스템이 정상적인 호출이 되지 않는다고 할 경우 리눅스의 net-tools을 사용하여 해당 서비스가 연동할 포트에서 정상적으로 동작 중인지 확인할 수 있습니다.

 대부분의 운영환경에서는 해당 Tool이 설치가 되어있을 테지만, 서버를 새로 구축한 경우 설치부터 진행하셔야 합니다.

#CentOS
yum install net-tools

#Ubuntu
apt-get install net-tools

 


 

서비스 포트 확인

 우선적으로, 서비스를 제공할 프로그램이 연동 협의 시 고지한 포트에 정상적으로 작동 중 인지를 확인합니다.

netstat -anltp

 

090포트에서 서비스 중(LISTEN)인 java 프로그램 확인
9090포트에서 서비스 중(LISTEN)인 java 프로그램 확인

 


 

방화벽 확인

 서비스는 정상적으로 구동 중이나, 타 시스템에서 접근이 되지 않을 경우 방화벽을 확인해 볼 필요가 있습니다.

# 방화벽 구동 확인
systemctl status firewalld

systemctl status firewalld 결과
systemctl status firewalld 결과

 

# 기본 방화벽 정책 확인
firewall-cmd --get-default-zone

firewall-cmd --get-default-zone 결과
firewall-cmd --get-default-zone 결과

# 기본 정책 방화벽의 등록된 포트 확인
firewall-cmd --zone=public --list-all

firewall-cmd --zone=public --list-all 결과
firewall-cmd --zone=public --list-all 결과


 만일 위의 예시와 같이 외부에 서비스 하고자 할 9090포트가 방화벽에 등록되어있지 않다면, 해당 포트를 방화벽에 등록 및 접근을 허용할 IP에 대하여 설정 후 방화벽 재구동을 진행합니다.

# 기본 정책 방화벽에 9090포트 추가
firewall-cmd --permanent --zone=public --add-port=9090/tcp

# 특정 IP 주소에 대한 접근 허용
firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="접근할IP주소" port protocol="tcp" port="9090" accept' --permanent

# 방화벽 재구동
firewall-cmd --reload

# 기본 정책 방화벽의 등록된 포트 확인
firewall-cmd --zone=public --list-all

9090포트 등록 및 재구동 후 firewall-cmd --zone=public --list-all 결과
9090포트 등록 및 재구동 후 firewall-cmd --zone=public --list-all 결과

 


 

Access log 확인

 서비스 포트 및 방화벽을 모두 확인하였지만, 원인을 파악하기 힘들다면 Access log를 확인하여 접속 시도가 이루어졌는지 확인할 수 있습니다.

웹 서비스 툴 별 Access log의 기본 위치 및 파일명

서비스 명 기본 위치 파일명
Apache /var/log/httpd/ 또는 /var/log/apache2/ access.log
Nginx /var/log/nginx/ access.log
Tomcat /$CATALINA_HOME/logs/ localhost_access_log.txt
Apache TomEE $CATALINA_HOME/logs/ access.log
Jetty $JETTY_HOME/logs/ yyyy_mm_dd.request.log
WildFly $WILDFLY_HOME/standalone/log/ access.log
GlassFish $GLASSFISH_HOME/glassfish/domains/domain1/logs/ server.log

Access log 파일 내 특정 클라이언트 IP 접속 이력 확인
Access log 파일 내 특정 클라이언트 IP 접속 이력 확인


 

Honey Tip 🍯

 만일 우리가 클라이언트인 상황에 연동하기로 한 API에 접속이 되지 않는 반대의 경우에는 아래와 같이 확인이 가능합니다.
다만, ping test 및 telnet은 경우에 따라 서버 측에서 차단을 할 수 있으므로 아래의 결과는 100% 신뢰하여서는 안 되며 참고용으로만 사용하여야 합니다.

네트워크 연결 확인

# Ping test
ping 123.123.123.123

 

연결 불가 ping test 결과
연결 불가 ping test 결과

 

정상적인 ping test 결과
정상적인 ping test 결과



 네트워크 연결이 정상적으로 확인될 경우 telnet을 통해 서비스 동작 여부를 간단하게 확인할 수 있습니다.
보통 telnet 명령어 입력 후 접속이 곧바로 이루어지기 때문에, 5초 이상 접속 결과가 나타나지 않는다면 접속이 불가능하다 보셔도 무방합니다.

# telnet
telnet 123.123.123.123 9090

 

접속 불가 telnet 결과
접속 불가 telnet 결과

 

정상적인 telnet 결과
정상적인 telnet 결과

 


 

References

https://net-tools.sourceforge.io/man/netstat.8.html

 

Manpage of NETSTAT

NETSTAT Section: Linux System Administrator's Manual (8) Updated: 2012-09-15 Index Return to Main Contents NAME netstat - Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships SYNOPSIS netstat [a

net-tools.sourceforge.io

 


 

해당 게시글은 독학을 통해 얻은 지식들을 취합하여 작성한 글입니다.
잘못된 내용이 있을 경우 댓글을 통해 지적을 해주신다면 저와, 이 글을 참조하게 될 모든 분들께 큰 힘이 됩니다.
반응형
profile

개발하는 재규어

@Dev.Jaguar

방문해 주셔서 감사합니다! 오늘도 좋은 하루 되세요 :)

profile on loading

Loading...