안녕하세요 이번 글에서는 서버간 또는 사용자 컴퓨터에서 원격접속 및 특정 포트로 통신 시도 시 접근이 안될때 첫번째로 의심해봐야하는 부분을 설명 드리겠습니다.
흔히 저희가 아는 ping , nmap , telnet , curl , nc 등을 사용해서 확인해보겠습니다.
우선 ICMP(Internet Control Message Protocol)는 TCP나 UDP와 달리 포트 번호를 사용하지 않습니다. 대신에 타입(type)과 코드(code) 필드를 사용하여 전송되는 특정 메시지를 식별합니다. ICMP는 주로 오류 보고 및 네트워크 진단에 사용됩니다. 네트워크 관리자들은 호스트가 도달 가능한지 여부를 확인하거나 라우팅 문제를 진단하는 등 네트워크 문제를 해결하기 위해 자주 사용합니다.
1.Ping
ubuntu 로 ping 시도
centos로 ping 시도
Windows로 ping 시도
위에서 보시는 바와 같이 내가 사용하지만 어느 아이피가 windows인지 Linux 인지 모르실때는 ping으로 해당아이피 질의하면 ttl 값이 조금 다른것을 볼수있습니다. linux는 50~60 ,Windows는 110~125 사이로 잡힐수 있습니다.
2.nmap
nmap은 Port Scanning툴이라고 보시면됩니다. 네트워크 스캐닝에 아주 유용한 프로그램으로써 관련 서적들만 찾아봐도 아주 방대한 활용법을 가지고 있습니다.
해서 많은 분들이 서버 port check할때 해당 명령어를 쓰게 됩니다.
호스트 탐지:네트워크 대역대 및 특정아이피의 port가 open 되었는지 확인 하는 것이라고 보면됩니다.
서버에 nmap 이 없다면 설치하면 되며 간단한 yum , apt 설치로 가능합니다.
yum install nmap -y 으로 진행 .
명령어는 nmap [type] [option] [ip] 입니다.
https://nmap.org/book/man.html 해당 URL 에서 다양한 옵션 및 기능을 확인할수있습니다 .
해당글에서는 간단하고 자주 사용하는 것들만 테스트 해보겠습니다.
nmap -Pn 115.68.x.x
Pn 명령어는 ping 체크없이 open 된 port를 조회 하여 표시해 줍니다.
nmap -F 115.68.x.x 는 빠른 속도로 스캔
이렇게 시도 하면 STATE OPEN 이 되면 해당 데몬 사용중 이며 방화벽이 열려있다는 점이며
만약 STATE 에 Closed 로 나타날시 방화벽은 열려있으나 데몬이 사용중이지않다 .
만약 STATE 에 filtered 로 나타날시 방화벽 자체가 막혀있다. 로 보시면 됩니다.
따라서 서버간 통신이 안된다고 하실때에는 내서버에서 -> 목적지 서버로 ping , nmap 등을 통해 정상적으로 open 이 되어있는지 부터 확인해야합니다.
3.curl
curl 명령어는 프로토콜을 이용해 URL 로 데이터를 주고 받을때 사용하며 다양한 프로토콜을 지원하기 때문에 매우 다양한 방면에서 사용할수있습니다.
해당글에서는 서버 및 도메인 응답으로 활용해보겠습니다.
curl -v 는 상세 페이지를 확인할수있습니다.
curl -v 115.68.x.x
해당 내용을 보면 페이지가 정상적으로 뜨는지 web 종류, 버전 등을 확인할수있습니다.
4.telnet
telnet은 예전부터 많은 분들이 이용해 오셨는데요. 아직까지는 포트 조회용 또는 메일 발신 테스트로 쓰긴하나 사용 빈도는 거의 없다고 보시면 됩니다.
telnet은 통신 인터페이스를 제공하는 프로토콜입니다. 텍스트 기반의 양방향 통신이나, 보안에 취약하여 port 체크 까지만 사용하실것을 권장 드립니다 .
telnet도 마찬가지로 yum , apt install 로 설치 가능합니다.
telnet [IP] [Port]
telnet 115.68.x.x 22
확인시 22번 포트가 열려있다는것을 확인할수있습니다.
5.bash , nc 사용
이 기능은 사실 자주 이용하지는 않으나 이또한 포트 확인할수 있는 방법이여서 안내드리겠습니다.
bash 명령어 사용
echo > /dev/tcp/115.68.x.x/22
echo $?
0 또는 1
해당명령어 사용시 입력하면 아무런응답이 없으나 echo $? 명령어 입력시 0과 1로 나타내며 0은 open 1 은 closed라고 생각 하시면 됩니다.
nc 명령도 간편한대요
nc -zv [IP] [Port]
nc -zv 115.68.x.x 22입력 시 succeeded!
nc -zv 115.68.x.x 22입력 시 failed 입니다
오늘의 게시글을 정리하자면 보통 가독성이 좋고 편리한 nmap 을 사용하실것을 권장드립니다.