본문 바로가기

리눅스

nc 명령어 - 사용 예시

728x90

nc 명령어

nc(netcat)는 네트워크 통신을 다루는 유용한 명령 줄 도구로, TCP와 UDP 연결을 생성하고 관리하는 데 사용할 수 있습니다. 이를 통해 포트 체크, 데이터 전송, 서버 테스트 등 다양한 작업을 수행할 수 있습니다.

1. nc 명령어 설치

nc 명령어는 일부 시스템에서 기본으로 제공될 수도 있고, 필요한 경우 설치해야 할 수도 있습니다. 다음과 같이 설치할 수 있습니다.

  • Ubuntu/Debian
sudo apt update
sudo apt install -y netcat
  • CentOS/RHEL
sudo yum install -y nc
sudo yum install -y nmap-ncat

2. TCP 포트 체크

nc를 사용하여 특정 호스트의 TCP 포트가 열려 있는지 확인할 수 있습니다.

nc -zv your_host_ip your_port

예를 들어, 웹 서버의 80번 포트를 체크하려면

nc -zv google.com 80
  • -z: 연결하지 않고 포트의 열림 여부만 확인합니다.
  • -v: 상세한 출력 모드로 실행합니다.
  • Ubuntu/Debian
$ nc -zv -w 3 google.com 80
Connection to google.com (142.250.76.142) 80 port [tcp/http] succeeded!
  • CentOS/RHEL
$ nc -zv -w 3 google.com 80
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 142.250.76.142:80.
Ncat: 0 bytes sent, 0 bytes received in 0.23 seconds.
728x90

3. UDP 포트 체크

UDP 포트 체크 역시 비슷한 방식으로 진행합니다.

nc -uzv your_host_ip your_port

예를 들어, DNS 서버의 53번 포트를 체크하려면

nc -uzv 8.8.8.8 53
  • Ubuntu/Debian
$ nc -uzv 8.8.8.8 53
Connection to 8.8.8.8 53 port [udp/domain] succeeded!
  • CentOS/RHEL
$ nc -uzv 8.8.8.8 53
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 8.8.8.8:53.
Ncat: UDP packet sent successfully
Ncat: 1 bytes sent, 0 bytes received in 2.07 seconds.

4. nc를 사용한 간단한 서버와 클라이언트 통신

nc를 사용하여 간단한 서버와 클라이언트 통신을 수행할 수도 있습니다. 다음은 예시입니다.

  • 서버
nc -l -p your_port
  • 클라이언트
nc your_host_ip your_port

이를 통해 서버와 클라이언트 간 데이터를 주고받을 수 있습니다.

 

  • 서버(Ubuntu/Debian)
vim ncServer.sh
#!/bin/bash

PORT=8080
SUCCESS_MESSAGE="Connection successful. Welcome to the server!"

# Start listening on the specified port and send the success message
echo "$SUCCESS_MESSAGE" | ncat -l -p "$PORT" --send-only

ncat을 사용하여 포트 8080에서 들어오는 연결을 수신하고, $SUCCESS_MESSAGE 변수의 값을 보냅니다. --send-only 옵션은 데이터를 수신하지 않고 전송만 하도록 합니다.

chmod +x ncServer.sh
bash ncServer.sh
  • 클라이언트(CentOS/RHEL)
nc 172.17.0.3 8080
$ nc 172.17.0.3 8080
Connection successful. Welcome to the server!

5. 데이터 전송

nc를 사용하여 파일을 다른 시스템으로 전송할 수도 있습니다. 예를 들어, 파일을 보내는 서버와 받는 클라이언트를 구성하여 파일을 전송할 수 있습니다.

  • 서버
nc -l -p your_port > received_file
  • 클라이언트
nc your_host_ip your_port < file_to_send

위와 같이 하면 파일이 서버에서 클라이언트로 전송됩니다.

 

nc 명령어는 다양한 용도로 사용할 수 있는 강력한 도구입니다.

 

728x90