리눅스 서버에서 어떤 서비스가 동작하고 있고, 해당하는 서비스의 포트가 listen 상태일 때 다른 서버에서 통신을 확인하는 가장 보편적이고 간단한 통신 테스트 방법 3가지를 소개하고자 한다.
1. telnet
telnet IP PORT
연결 실패 시
$ telnet 10.0.2.16 9936
Trying 10.0.2.16...
telnet: connect to address 10.0.2.16: Connection refused
연결 성공 시
$ telnet 10.0.2.16 9936
Trying 10.0.2.16...
Connected to 10.0.2.16.
Escape character is '^]'.
간혹 telnet이 설치되어 있지 않거나 보안상 telnet 명령어의 사용이 불가능한 경우 curl을 사용한다.
2. curl
curl -v telnet://IP:PORT/
연결 실패 시
$ curl -v telnet://10.0.2.16:9936
* About to connect() to 10.0.2.16 port 9936 (#0)
* Trying 10.0.2.16...
* 연결이 거부됨
* Failed connect to 10.0.2.16:9936; 연결이 거부됨
* Closing connection 0
curl: (7) Failed connect to 10.0.2.16:9936; 연결이 거부됨
연결 성공 시
$ curl -v telnet://10.0.2.16:9936
* About to connect() to 10.0.2.16 port 9936 (#0)
* Trying 10.0.2.16...
* Connected to 10.0.2.16 (10.0.2.16) port 9936 (#0)
혹시 둘 다 사용이 힘들다면? 쉘에서 제공하는 /dev/tcp 기능을 사용한다.
3. /dev/tcp
/dev/tcp/IP/PORT
연결 실패 시
$ echo > /dev/tcp/10.0.2.16/9936
-bash: connect: 연결이 거부됨
-bash: /dev/tcp/10.0.2.16/9936: 연결이 거부됨
$ echo $?
1
연결 성공 시
$ echo > /dev/tcp/10.0.2.16/9936
$ echo $?
0
$? 는 바로 직전 명령어의 실행 결과를 받아온다 (성공 : 0, 실패 : 1)
여기까지 가장 많이 쓰이는 TCP 통신 테스트 방법에 대해서 알아 봤다.
그럼 Client가 아닌 Server에서는 어떻게 통신 여부를 확인할 수 있을까?
가장 많이 쓰이는 방법은 netstat 명령어이다.
netstat
$ netstat -an | grep PORT
연결을 기다리는 중
$ netstat -an | grep 9936
tcp 0 0 10.0.2.16:9936 0.0.0.0:* LISTEN
연결 중
$ netstat -an | grep 9936
tcp 0 0 10.0.2.16:9936 10.0.2.15:54937 ESTABLISHED
연결이 끊어짐
$ netstat -an | grep 9936
tcp 0 0 10.0.2.16:9936 10.0.2.15:54937 TIME_WAIT
'알아두면 좋은 IT 지식 > Network' 카테고리의 다른 글
[IT] Telnet의 전송키는 Enter키가 아니다? (Not Enter But Ctrl+D?) (0) | 2022.08.05 |
---|---|
[리눅스] TCP 소켓 통신 테스트 명령어 nc(ncat) 사용법 (0) | 2022.07.18 |
curl post json http telnet sftp 명령어 사용법 옵션 예제 (1) | 2022.02.07 |
윈도우 서버 원격 데스크톱 연결 사용법 / 클립보드 설정 (0) | 2020.09.09 |
실무에서 telnet 명령어를 사용하여 간단하게 방화벽 확인하는 방법 (0) | 2020.09.08 |