알아두면 좋은 IT 지식/Network

실무에서 telnet 명령어를 사용하여 간단하게 방화벽 확인하는 방법

uutopia 2020. 9. 8. 14:10

실무에서 서버간 연동작업을 수행할 때 네트워크 방화벽을 서로 오픈하게 된다.

송신서버는 OUTBOUND, 수신서버는 INBOUND를 오픈하여 통신을 하게 되는데 통신오류가 발생하면 원인을 찾기가 쉽지 않다.

이럴 때 간단한 cmd 명령어를 통해서 통신상태를 확인해 볼 수 있는 방법을 소개하고자 한다.


telnet

 

telnet 명령어는 본래 원격지의 호스트에 접속하여 컨트롤 하는 것이 목적이나 패킷을 암호화 하지 않고 보악에 취약하므로 원격 컨트롤 보다는 단순히 통신 가능 여부를 확인하는 목적으로 많이 쓰인다.

 

telnet IP PORT

-서버에 원격 접속 시도

-ex. telnet 210.89.189.110 443


netstat

 

netstat 명령어는 네트워크 인터페이스의 통신  상태를 보여준다.

 

netstat

-네트워크 연결 상태 확인

-ex. netstat -an|find "IP:PORT"

 


telnet + netstat

 

telnet과 netstat을 동시에 사용하여 특정 원격서버와의 네트워크 통신 상태를 간단하게 확인할 수 있다.

(방화벽 확인)

 

1. cmd창을 두개 실행한다.

2. 1번창에 telnet IP PORT 를 입력

3. 2번창에 netstat -an|find "IP:PORT" 를 입력

4. 순서대로 실행(Enter)

5. netstat(2번창)을 통해서 telnet(1번창)의 결과를 확인

telnet 명령어를 실행하는 1번 창
netstat 명령어를 실행하는 2번 창

- SYN_SENT : 신호 보냄 (상태가 지속되다가 연결이 끊길 경우 송신은 성공했으나 수신서버의 INBOUND 방화벽이 막혀있을 확률이 높음)

- ESTABLISHED : 연결 성공

- telnet(1번창)이 바로 연결 실패하여 결과를 확인할 수 없다면 송신서버의 OUTBOUND 방화벽이 막혀있을 확률이 높다.

 

 

 

예를들어 우리서버에서 거래처서버로 접속을 위해서 방화벽 오픈이 필요하고 할때, 우리서버는 분명 OUTBOUND방화벽을 오픈했는데 접속이 안되고 있고 거래처는 INBOUND방화벽을 오픈했다고 우기고 있는 상황이 자주 발생한다. 보통 위 결과만 보여줘도 대부분의 서버 관리자는 수긍하고 내부 방화벽을 다시 확인해 준다.

이런경우 99%는 거래처에서 사용하는 네트워크 분석툴로 패킷을 분석해보면 내부 어느 장비에서 방화벽이 막혔있고  방화벽을 열어주면 정상적으로 통신이 된다.

요청을 할 때는 작은 근거라도 있어야 하는데 그럴때 간단하게 사용할 수 있는 명령어이다.

단, 간~혹 고객사서버에서 예외적으로 telnet만 차단해놓은 경우가 있을 수는 있다. 또는 telnet대신 ping을 쓰는 사람도 많은데 ping은 네트워크공격의 위험성 때문에 더더욱 차단해놓는 경우가 많으므로 추천하지 않는다.

 

그리고 telnet을 사용하기 위해서는 윈도우 기능이 추가되어 있어야 한다.