Linux Ubuntu OS 관련 포스팅 목록
2020/04/28 - [Linux/OS] - [Ubuntu] 우분투 게이트웨이 주소 수정(Ubuntu Gateway Address Setting)
2020/04/26 - [Linux/OS] - [Ubuntu] 우분투 아이피 설정하기(Ubuntu IP Address Setting)
2019/08/02 - [Linux/OS] - [Ubuntu] 리눅스 커널 버전 확인 - 우분투(Linux Kernel Version Checking)
Linux Ubuntu NC
안녕하세요. 오늘은 리눅스 우분투 환경에서 NC 유틸리티를 사용하여 간단한 TCP 서버, 클라이언트를 구현해보겠습니다. 소켓 프로그래밍 개발을 하다보면 몇가지 어려움이 있습니다. 서버 측을 먼저 개발완료 하였을 경우나 테스트가 필요할 때 우리는 간단하게라도 TCP 클라이언트 소켓 프로그램을 개발해야합니다. 하지만 오히려 테스트를 위해 클라이언트를 개발하는게 시간다 많이 걸리고 빠르지 않으며 많은 오류로 디버깅이 필요할 수 있습니다.
NC는 한줄의 명령어로 TCP 서버, TCP 클라이언트 요청이 가능합니다. APT 레포지토리에서 간단히 다운로드 받아 사용할 수 있다는 점에서 높은 접근성을 갖고 있습니다. 따라서 단위 테스트를 진행할 때는 이 NC를 사용하여 디버깅을 하거나 테스트를 진행하는것이 좋습니다.
자 그러면 몇가지 테스트를 진행해보겠습니다.
시험환경
Linux Ubuntu 16.04 LTS x64
아이피: 172.16.3.58
Linux aav-cn-vmm 4.15.0-106-generic #107~16.04.1 Ubuntu SMP Thu Jun 4 15:40:05 U TC 2020 x86_64 x86_64 x86_64 GNU/Linux |
NC 설치
테스트에 앞서 NC를 설치하겠습니다. 아래의 명령을 수행하여 리눅스 우분투 환경에 NC를 설치합니다. 이 NC는 윈도우 플랫폼도 지원하기때문에 만약 다른 플랫폼에서 실행해야할 경우 아래의 NC 페이지에서 다운로드 받아 설치합니다. 이 포스팅은 리눅스 우분투 환경을 기준으로 하였습니다.
$ sudo apt-get install netcat |
만약 위와 같이 설치가 정상적으로 됐다면 아래 명령을 통해 정상작동 하는지 확인합니다.
$ nc -help |
이제 NC를 통해 TCP 서버를 구성하는 방법에 대하여 알아보겠습니다.
NC 서버 구성
NC TCP 서버를 구성하기 위해서는 다음과 같은 내용이 필요합니다. TCP 포트, 아이피주소 2개 입니다. 당연히 클라이언트가 서버에 접속할때 TCP 포트를 명시하여 접속하겠죠? 그래서 서버 구성을 위한 일반적으로 아래와 같은 옵션을 사용합니다.
일반적인 서버 옵션
-l | 수신(Listen) 행위를 하겠다는 옵션, 서버인 것을 의미 |
-p | TCP 포트 번호, 테스트에선 5050번의 포트를 사용 |
현재 시험 환경은 아이피 주소가 172.16.3.58 이기때문에 이 아이피주소를 사용하겠습니다. 각 테스트 환경에 맞게 아이피 주소를 사용합니다.
위와 같이 클라이언트의 응답을 기다리는 상태라면 정상적으로 NC 서버가 실행된 것입니다. 이제 NC 클라이언트를 이용하여 서버에 접근해보겠습니다.
NC 클라이언트를 통한 서버 접속
NC 서버와 마찬가지로 NC를 우선 설치합니다. 만약 NC 클라이언트를 구동할 PC가 서버와 동일하다면 설치 없이 진행해도되겠죠? 서버로 접속하는 방법은 간단합니다. 아래의 명령을 실행해봅시다.
$ nc 172.16.3.58 5050 |
클라이언트가 NC 서버에 연결이 성공한 것을 확인하였습니다. 또한 특정 문자열을 입력하였을 때 서버에서 그 내용을 출력하고 있는 것을 알 수 있었습니다. 이처럼 NC로 간단한 TCP 서버 및 클라이언트 구성이 가능합니다.
결론
이번 포스팅에서는 간단한 NC 서버 및 클라이언트 구성방법에 대하여 알아봤지만 다음 포스팅에선 NC를 활용해 백도어쉘 실행방법, NC를 통한 파일 전송에 대하여 알아보겠습니다.