English

socat — 소켓 릴레이·변환

Linux / 네트워크 및 방화벽 / socat.html

네트워크 및 방화벽원문등록 2026-10-20T09:00:00+09:00

두 개의 데이터 채널을 연결해 파일·파이프·소켓·시리얼을 서로 중계하는 도구.

기본 정보

명령어 이름socat
한 줄 소개두 개의 데이터 채널을 연결해 파일·파이프·소켓·시리얼을 서로 중계하는 도구.
제공socat 프로젝트 (배포판 패키지로 제공)
공식 문서https://man7.org/linux/man-pages/man1/socat.1.html
지원 운영체제Linux, macOS, BSD
설치 여부패키지 설치 필요 (apt install socat)
분류리눅스 네트워크 (태그: 주소·포트·라우팅·방화벽 (태그: 소켓, 중계, 프록시, 변환))

이 명령어는 무엇인가?

socat은 두 개의 주소를 인자로 받아 그 사이에서 바이트를 양방향으로 전달합니다.

TCP, UDP, UNIX 소켓, 파일, 실행 프로그램을 자유롭게 조합할 수 있어 간단한 프록시나 시험 도구로 쓰입니다.

어떤 문제를 해결하는가?

  • 로컬 포트를 원격 서비스로 전달합니다.
  • 유닉스 소켓을 TCP로 노출합니다.
  • 시리얼 장치를 네트워크로 중계합니다.
  • 테스트용 가짜 서버를 만듭니다.

주요 기능

포트 전달

한 주소로 들어온 연결을 다른 주소로 넘깁니다.

  • 활용 상황: 방화벽 뒤 서비스에 임시로 접근할 때.
  • 얻는 결과: 양방향 데이터가 그대로 전달됩니다.
  • 제한 사항: 프로세스가 살아 있는 동안만 유지됩니다.

소켓 노출

유닉스 소켓을 TCP 주소로 연결합니다.

  • 활용 상황: 컨테이너 소켓을 밖에서 시험할 때.
  • 얻는 결과: 다른 호스트에서 소켓 서비스에 접근할 수 있습니다.
  • 제한 사항: 인증이 없으므로 노출 범위를 좁혀야 합니다.

파일·프로그램 연결

파일이나 실행 프로그램을 주소로 지정합니다.

  • 활용 상황: 가짜 응답을 돌려주는 시험이 필요할 때.
  • 얻는 결과: 정해진 데이터를 주고받습니다.
  • 제한 사항: 프로그램 오류가 그대로 연결에 영향을 줍니다.

설치 및 실행

설치 여부 확인

socat -V

sudo apt install socat

실제 사용 예제

포트 전달

로컬 8080을 원격 80으로 넘깁니다.

socat TCP-LISTEN:8080,fork TCP:example.com:80

소켓 노출

유닉스 소켓을 TCP로 연결합니다.

socat TCP-LISTEN:9000,fork UNIX-CONNECT:/run/app.sock

가짜 서버

고정 문자열을 돌려주는 서버를 띄웁니다.

socat TCP-LISTEN:9999,reuseaddr,fork EXEC:'/bin/echo hello'