본문 바로가기

OS

[Linux] 외부 서버 접근 확인 명령어

 

접속해야하는 대상 서버의 포트가 열려있는지 확인이 필요하여 처음에는 ping 명령을 사용했다.

ping [OPTIONS] DESTINATION

 

OPTION을 별도로 지정하지 않으면 계속해서 1초마다 56byte의 ICMP 패키지를 전송한다.

  • -c : 전송하는 패킷의 수를 지정 (ex. ping -c 3 8.8.8.8 이란 8.8.8.8 서버로 3회 전송 후 종료) 
  • -i : 전송하는 시간 간격을 지정 (ex. ping -i 5 8.8.8.8 이란 8.8.8.8 서버로 5초마다 전송)
  • -s : 전송하는 패킷의 사이즈를 지정 (ex. ping -s 100 8.8.8.8 이란 8.8.8.8 서버로 100byte의 패킷을 전송) 

 

그런데 특정 포트가 열려있는지 확인하기 위해서는 다른 방법을 사용해야 했다.

두번째는 echo > /dev/tcp/IP/PORT 명령이다.

$ echo > /dev/tcp/IP/PORT
$ echo $?

 

정상적으로 접속이 되었다면 아무런 반응이 없을 것이고 echo $? 를 입력하면 0이 뜬다.

그렇지 않을 경우 에러메시지가 뜨고 echo $? 를 입력하면 1이 뜬다고 하는데 나는 아무 반응이 없는데  echo $? 를 입력하니 23이 떴다...

 

그래서 또 다른 방법을 사용해보았다.

세번째는 curl -v telnet://IP:PORT 명령이다.

curl -v telnet://IP:PORT

 

telnet 명령어도 특정 서버에 접속할 수 있는 명령어이지만 설치가 되어있지 않은 경우가 많다고 한다.

그럴 때 http, ftp, telnet 프로토콜이 허용된 curl 명령어를 사용하는 것이다. curl은 서버간 데이터를 전송할 수 있는 명령인데 웬만하면 사용이 가능하다.

-v 옵션은 요청/응답에 대한 상세 정보를 출력해주는 것이고 접속하면 아래와 같이 메시지가 출력된다.

$ curl -v telnet://8.8.8.8:5432
* About to connect() to 8.8.8.8 port 5432
*  Trying 8.8.8.8...
* Connected to 8.8.8.8 (8.8.8.8) port 5432 (#0)

 

접속이 안되면 에러메시지 출력 혹은 connected 메시지가 출력되지 않는다.