일상 메모장

Netcat nc 사용법 (IPv4, IPv6) 본문

Linux & Windows

Netcat nc 사용법 (IPv4, IPv6)

핸드오버 2019. 12. 30. 23:30

안녕하세요.

 

오늘은 Netcat(nc) 명령어 사용법에 대해서 알아보겠습니다.

기본적으로 Ubuntu 나 CentOS 모두 netcat은 기본 패키지에 설치되어있는데 만약 설치되어 있지 않은 경우에는

아래 명령어로 설치하시면 됩니다.

 

  • Ubuntu 의 경우
# sudo apt-get install nc
  • CentOS 의 경우
# sudo yum install nc

 

nc (netcat) 명령어는 TCP, UDP, UNIX-domain socket등을 사용하여 통신하는 유틸리티 입니다. TCP connection을 할수 있고, UCP packet을 보낼수도 있으며, TCP, UDP port로 listen 할수 있습니다.

이 외에도 port 검색을 할수있고, IPv4 와 IPv6 도 사용할수 있습니다. 이런 간단한 기능으로 socket을 testing 하거나 debugging 하는데 널리 사용됩니다.

사용법

# usage

nc [options] [목적지 주소] [포트]



# options (대표 옵션들)



-4          : IPv4 address만 사용하도록 함
-6          : IPv6 address만 사용하도록 함
-b          : 브로드 캐스트 허용
-c          : CRLF 보냄
-D          : socket debugging 옵션 켬
-n           : 호스트 네임과 포트를 숫자로만 입력 받음.
-v           : verbosity 를 증가 시킨다. 더 많은 정보를 얻을수 있음.
-o [filename]  : 보내거나 받은 데이터를 헥스덤프하여 파일에 저장함.
-u           : TCP connection 대신에 UDP connection 이 이루어 짐.
-p [port number or name] : source-port 를 지정한다. 주로 -l 과 같이 사용하게 됨. (생략가능)
-s [ip address or DNS] : local ip address 를 지정한다. 모든 플렛폼에서 지원되지는 않음.
-l            : listen 모드로 nc을 띠우게 된다. 당연히 target host는 입력하지 않음.
                -p와 같이 사용하게 된다. nc를 server 로서 쓸때 사용.
-e [filename] : -DGAPING_SECURITY_HOLE 옵션으로 Make 되었을 때 사용가능함.
-i [interval time] : Standard input의 한 라인씩 interval time 마다 보내게 됨.
-k            : mutil connection을 위해 listen 소켓을 유지함.
-z            : connection을 이루기위한 최소한의 데이터 외에는 보내지 않도록 하는 옵션.

Server / Client model

nc 를 서버모드로 19999 포트로 listen 하기

19999 번 포트로 TCP listen 하기

# nc -l 19999

nc 클라이언트 모드로 19999번 포트 접속하기

19999 번 포트로 TCP connection 하기

# nc 127.0.0.1 19999

Server / Client model (IPv6)

nc 를 서버모드로 19999 포트로 listen 하기

19999 번 포트로 TCP listen 하기

# nc -l -6 19999

nc 클라이언트 모드로 19999번 포트 접속하기

# nc ::1 19999

/* 만약 IPv6 localhost 가 아닌 다른 아이피로 접속 할 경우에는 IP address 뒤에 '%' 문자와 함께 인터페이스를 명시적으로 넣어줘야함 */

# nc fe80::b346:2a33:ed23:21d6%enp0s3 19999

파일 전송 (File transfer)

19999번 포트로 listen 하여 파일전송 대기

저장할 파일 이름

# nc -l 19999 > filename.out

19999번 포트로 접속하여 파일 전송

파일 전송

# nc 127.0.0.1 19999 < filename.in

 

오늘은 포스팅은 여기까지 하겠습니다.

읽어주셔서 감사합니다~!