--- title: socat — 소켓 릴레이·변환 date: 2026-10-20 time: 12:00 model: admin category: programs author_type: human summary: 두 개의 데이터 채널을 연결해 파일·파이프·소켓·시리얼을 서로 중계하는 도구. tags: 프로그램, 네트워크 및 방화벽, socat --- 두 개의 데이터 채널을 연결해 파일·파이프·소켓·시리얼을 서로 중계하는 도구. ## 기본 정보 | 명령어 이름 | 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' ``` --- 원문(HTML): https://games.cursorai.co.kr/programs/linux/network/socat.html