새소식

Operation System/General

포트 오픈 확인하기 (telent, curl, python)

  • -
728x90
반응형

서버 대 서버 또는 클라이언트 대 서버 포트 연결이 정상적으로 이루어져있는지 확인하는 방법


telnet
  • telnet을 통해 확인할 수 있는 포트 오픈 상태
telnet <IP> <PORT>

 

서버와 통신이 되며 포트 오픈이 되었을 때

# telnet 192.168.152.31 8629 Trying 192.168.152.31... Connected to 192.168.152.31. Escape character is '^]'.

 

서버와 통신이 되며 포트 오픈이 되어 있지 않을 때

# telnet 192.168.151.32 18629 Trying 192.168.151.32... telnet: connect to address 192.168.151.32: Connection refused

 

  • 서버와 통신이 되며 포트 오픈이 되어 있고 네트워크 상태가 정상이라면 즉시 telnet에 연결 됩니다.
  • 서버와 통신이 되며 포트 오픈이 되어 있지 않으면 telnet 명령 수행 시 15초(timeout) 동안 통신 되지 않으면 telnet이 종료 됩니다.
    • 15초 내에 통신이 재개 되거나 즉시 연결이 되지 않고 간헐적으로 연결이 늦어진다면 네트워크 상태가 불안할 수 있습니다.
  • 간혹 서버와 통신 되며 포트 오픈이 되어 있다고 하지만 통신이 안된다고 하면 !
    • 프로세스가 다운 되어 있을 수 있습니다. 프로세스가 다운되면 포트도 함께 내려 갑니다.
    • 방화벽에서 차단되고 있을 수 있습니다.
      • OS 방화벽 (iptables, firewalld, Windows Defender 방화벽)
      • 방화벽 장비

 

 

curl
  • curl -v 옵션을 사용하여 Connected를 확인할 수 있습니다.
  • 생각보다 유용하며 docker container 환경에서도 telnet은 설치되어 있지 않지만 curl은 설치 되어 있으니 활용 가능 합니다.

연결 성공

# curl -v telnet://x.x.x.x:22 * About to connect() to x.x.x.x port 22 (#0) * Trying x.x.x.x... * Connected to x.x.x.x (x.x.x.x) port 22 (#0)

연결 실패

# curl -v telnet://x.x.x.x:1521 * About to connect() to x.x.x.x port 1521 (#0) * Trying x.x.x.x... * Connection refused * Failed connect to x.x.x.x:1521; Connection refused * Closing connection 0 curl: (7) Failed connect to x.x.x.x:1521; Connection refused

 

python
  • Linux/Unix는 기본적으로 python2가 설치되어 있습니다. (최신버전에서는 python3으로 변경 됨)
    • python2나 python3는 테스트에는 영향 없음
# cat portscan.py import socket sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(2) result = sock.connect_ex(('<IP>',<Port>)) if result == 0: print('open') else: print('false')

연결 성공

# python portscan.py open

연결 실패

# python portscan.py false

 


  • 대부분의 환경에서는 telnet이 사용 가능 합니다.
  • 최근 MSA(MicroService Architecture) 때문에 Container 환경이 주를 이루는 경우 telnet 패키지가 설치가 되어 있지 않는 경우가 있습니다.
  • Container 환경에 curl은 image에 기본으로 탑재되어 있어 활용 가능 합니다.
  • curl도 되지 않는 환경이라면 활용 가능한 언어에서 socket라이브러리를 활용하여 직접 구현하여 사용하셔도 됩니다. (python, 기타 언어들)

 

telnet 설치

telnet 명령어를 사용하려고 할 때 설치가 되어 있지 않는 경우 아래 방법으로 설치하여 사용 합니다. telnet 설치 Debian / Ubuntu # apt-get install telnet Fedora / Redhat / CentOS # yum install telnet OS..

junsuyoun.tistory.com


 

728x90
반응형

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.