실무에서 종종 서버간 방화벽 포트를 열어야 될 때가 있다. 방화벽 작업 이후 정상적으로 열렸는지 확인하는 방법을 정리해두자. 회사 서버 보안 정책으로 telnet은 차단해놓는 경우가 있어서 추가로 몇가지 명령어를 알고 있으면 좋을 것 같아 정리해두었다.
telnet
설명
`텔넷(TELNET)`은 인터넷이나 로컬 영역 네트워크 연결에 쓰이는 네트워크 프로토콜이다. telnet이라는 용어는 프로토콜의 클라이언트 일부 기능이 추가된 소프트웨어를 일컫는다. TCP/IP 스택을 갖춘 대부분의 네트워크 장비와 운영 체제들은 원격 구성(윈도우 NT 기반)을 위해 몇 가지 종류의 텔넷 서비스 서버를 지원한다. 텔넷의 보안 문제 때문에 사용률이 감소하여 원격 제어를 위해 SSH로 대체됐다.
아래 간단한 방화벽 확인 커맨드를 확인해보자.
방화벽 확인방법 : telnet
# command
$ telnet ip port
# 연결 성공(5444포트 서비스가 떠있다면)
$ telnet 10.10.2.123 4567
Trying 10.10.2.123...
Connected to 10.10.2.123.
Escape character is '^]'.
# 바로 "Connection refused"가 뜬다면, 방화벽은 열려있지만 서비스 포트가 안올라와 있을 경우가 큼
# 연결 성공했으나, 서비스 포트가 안올라옴
$ telnet 10.10.2.123 80
Trying 10.10.2.123...
telnet: connect to address 10.10.2.123: Connection refused
# 연결 실패, 방화벽 상태 확인 필요 (trying에서 행이 걸림)
$ telnet 10.10.2.123 8080
Trying 10.10.2.123...
curl
설명
`cURL(/kɝl/ 또는 /kə:l/)`은 다양한 통신 프로토콜을 이용하여 데이터를 전송하기 위한 라이브러리와 명령 줄 도구를 제공하는 컴퓨터 소프트웨어 프로젝트이다. 이 이름은 "client URL"을 줄인 것이다.
방화벽 확인방법 : curl
# command
$ curl -v ip:port
# 연결성공 했으나, 해당 서버에 80포트 서비스가 없음
$ curl -v 10.10.2.123:80
* Trying 10.10.2.123:80...
* connect to 10.10.2.123 port 80 failed: Connection refused
* Failed to connect to 10.10.2.123 port 80: Connection refused
* Closing connection 0
curl: (7) Failed to connect to 10.10.2.123 port 80: Connection refused
# 연결성공 후, 4567 포트 상태 확인 성공
$ curl -v 10.10.2.123:4567
* Trying 10.10.2.123:4567...
* Connected to 10.10.2.123 (10.10.2.123) port 4567 (#0)
> GET / HTTP/1.1
> Host: 10.10.2.123:4567
> User-Agent: curl/7.76.1
> Accept: */*
>
* Recv failure: Connection reset by peer
* Closing connection 0
curl: (56) Recv failure: Connection reset by peer
# 연결 실패, 방화벽 상태 확인 필요
$ curl -v 10.10.2.123:8080
* Trying 10.10.2.123:8080...
nc
설명
`netcat`, 또는 줄여서 nc는 TCP 또는 UDP를 사용하여 네트워크 연결을 읽거나 기록하는 컴퓨터 네트워킹 유틸리티이다. 이 명령어는 의존 가능한 백엔드로 설계되어 있으며 다른 프로그램이나 스크립트에 의해 직접 사용되거나 쉽게 구동할 수 있다. 동시에 기능이 풍부한 네트워크 디버깅 및 탐색 도구이다.
방화벽 확인방법 : nc
# command (-z: , -v: verbose)
$ nc -zv ip port
# 범위 포트스캐닝도 가능하다
$ nc -zv 1.1.1.1 5400-5500
# 연결 성공
$ nc -zv 10.10.2.123 4567
Connection to 10.10.2.123 4567 port [tcp/tram] succeeded!
# 연결 성공 했으나, 서비스 포트가 안올라와 있음
$ nc -zv 10.10.2.123 80
nc: connect to 10.10.2.123 port 80 (tcp) failed: Connection refused
# 연결 실패(trying 행)
$ nc -zv 10.10.2.123 8080
Trying 10.10.2.123...
참고로
ping은 TCP 통신이 아닌 ICMP 통신으로 port를 사용하지 않는다. ping은 인터넷 연결만 확인하고 특정 포트의 서비스 확인은 불가능하다.
https://ko.wikipedia.org/wiki/%ED%85%94%EB%84%B7
https://ko.wikipedia.org/wiki/CURL
'CS' 카테고리의 다른 글
[리눅스] tar 명령어 알아보기, tar 압축하기, 압축해제 (0) | 2024.07.05 |
---|---|
PostgreSQL oracle_fdw 설치 (오라클 테이블 읽어오기) (0) | 2024.07.04 |
[PostgreSQL] log파일 스위칭 방법 pg_ctl logrotate (0) | 2024.05.31 |
[PostgreSQL] Tibero to PostgreSQL 개별 테이블 이관하기 (pandas 사용) (0) | 2024.05.18 |
PostgreSQL Temp file 관련 정리 (Temp tablespace) (0) | 2024.05.17 |
댓글