포트를 여는 방법?

포트를 여는 방법?

ping을 하면 응답이 옵니다.

$ ping 10.26.14.16
64 bytes from 10.26.140.160: icmp_seq=1 ttl=63 time=0.525 ms

포트에 ping을 해도 응답이 없습니다.

$ nmap -p 5016 10.26.14.16
5016/tcp closed unknown

Q: 포트 5016을 여는 방법은 무엇입니까?

답변1

@ucarus가 이 게시물에서 말했듯이논평:

서비스가 포트를 수신하도록 하여 포트를 "열" 수 있습니다.

E,g: 머신 nc에서 포트 리스너 5016을 시작하는 데 사용됩니다 10.26.14.16.

nc -l 5016 &

그 다음에:

nmap -p 5016 10.26.14.16

답변2

이러한 이유로 netcat은 포트를 열어두는 데 적합한 도구가 아닙니다. 그 이유는 netcat 수신기가 원시 소켓 도구이고 추가 명령을 실행해야 하기 때문입니다. 예를 들어 서버 측에서 TCP 5016을 열어 둡니다. 그런 다음 서버에서 nmap 스캔을 실행합니다. 스캔 중에 클라이언트는 TCP SYN 패킷을 보냅니다. 응답 방법을 알려주지 않았기 때문에 서버는 응답 방법을 모릅니다. 즉, 응답 방법을 프로그래밍해야 합니다(TCP 프로토콜에서와 마찬가지로). 결과적으로 서버는 SYN에 대한 응답으로 RST를 클라이언트에 보내고 연결이 끊어집니다. 이는 포트에서 실행 중인 서비스가 없고 클라이언트 관점에서 보면 포트가 닫힌 것처럼 보일 때 발생합니다.

귀하의 요구 사항을 쉽게 충족하려면 대부분의 Unix 계열 운영 체제에 사전 설치되어 제공되는 Python을 사용하는 것이 좋습니다. HTTP 모듈을 사용할 수 있습니다(추가 설치가 필요하지 않음). 이 경우 클라이언트에서 nmap 스캔이 수행되면 서버(이제 간단한 HTTP 서버 역할을 함)는 TCP SYN 패킷에 응답하는 방법을 알게 됩니다. 첫째, Python v2 또는 v3에 따라 다음과 같습니다.

Python 2(서버측):

$ python -V
$ cd /tmp
$ python -m SimpleHTTPServer 5016

Python 3(서버측):

$ python -V
$ cd /tmp
$ python3 -m http.server 5016

Nmap(클라이언트):

$ nmap -p 5016 10.26.14.16

이 명령은 $ cd /tmp필수는 아니지만 웹 서버가 현재 디렉터리를 색인화하므로 주의하세요. 그러나 /tmp이곳은 테스트를 실행하기에 안전한 장소입니다.

관련 정보