- 전체
- C/C++ 일반
- C/C++ 수학
- C/C++ 그래픽
- C/C++ 자료구조
- C/C++ 인공지능
- C/C++ 인터넷
- wxWidget
- GTK+
- UNIX or LINUX programming
- 리눅스 마스터 - 국가공인자격
- VC++/ MFC
- C#/CLI/.NET
- QT/기타UI
- Boost lib
- 오픈소스 C 분석자료
- MSA (마이크로서비스), Docker, kubernetes
- WSL(windows subsystem linux)
리눅스 마스터 - 국가공인자격 [linux master][리눅스 마스터][국가기술자격] [리눅스] socat 명령어(proxy)
2024.02.28 13:59
[linux master][리눅스 마스터][국가기술자격] [리눅스] socat 명령어(proxy)
socat 명령어(proxy)
socat 명령어
- 양방향 데이터 전송을 위한 다목적 릴레이
socat 패키지 설치
- CentOS
sudo yum install -y socat
- Ubuntu
sudo apt-get update
sudo apt-get install -y socat
socat version 정보
socat -V | grep "socat version"
$ socat -V | grep "socat version"
socat version 1.7.4.1 on Mar 25 2022 09:51:32
socat 명령어의 기본 구문
- <address>는 소스와 대상 각각에 해당하는 주소 및 포트
socat [options] <address> <address>
TCP 서버에서 들어오는 연결을 다른 TCP 서버로 전달하는 경우
socat TCP-LISTEN:<source-port>,reuseaddr,fork TCP:<destination-host>:<destination-port>
- TCP-LISTEN:<source-port>:<source-port> 포트에서 들어오는 TCP 연결을 수신합니다.
- reuseaddr: 포트 재사용을 허용합니다.
- fork: 각 연결을 새로운 프로세스로 분기하여 병렬 처리를 지원합니다.
- TCP:<destination-host>:<destination-port>: <destination-host>:<destination-port>로 데이터를 전달합니다.
socat의 주요 옵션은 다음과 같습니다.
- -h, --help: 도움말 표시
- -V, --version: 버전 정보 표시
- -d, --debug: 디버그 모드 활성화
- -t, --timeout: 타임아웃 설정
- -T, --time: 각 연결의 지속 시간 제한 설정
- -b, --backlog: 대기열 크기 설정
- -x, --hexdump: 16진수 형식으로 데이터 출력
- -v, --verbose: 상세한 출력 모드 활성화
- -q, --quiet: 출력을 최소화
- -t, --tcp: TCP를 사용하여 데이터 전송
- -u, --udp: UDP를 사용하여 데이터 전송
- -s, --syslog: syslog를 통해 메시지 출력
- -n, --nodelete: 중간 소켓 삭제 비활성화
사용 예시
TCP 서버에서 들어오는 연결을 로그 파일에 기록하는 방법
socat TCP-LISTEN:8080,reuseaddr,fork OPEN:/var/log/tcp.log,creat,append
로컬 포트에서 들어오는 TCP 연결을 원격 서버로 포워딩하는 방법
socat TCP-LISTEN:8080,fork TCP:remotehost:80
로컬 포트에서 들어오는 연결을 다른 포트로 리다이렉트하는 방법
socat TCP-LISTEN:8080,fork TCP:localhost:8888
socat을 이용한 릴레이
구성 : (gateway -----------> relay -----------> db)
- relay(socat)
socat tcp-listen:3306,reuseaddr,fork tcp:10.10.20.76:3306 &
root@relay:~$ socat tcp-listen:3306,reuseaddr,fork tcp:10.10.20.76:3306 &
[1] 2881
netstat -tnlp | grep socat
root@relay:~$ netstat -tnlp | grep socat
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2881/socat
- geteway(client)
telnet xxx.xxx.xxx.180 3306
root@gateway:~$ telnet xxx.xxx.xxx.180 3306
Trying xxx.xxx.xxx.180...
Connected to ec2-xxx-xxx-xxx-180.ap-northeast-1.compute.amazonaws.com.
Escape character is '^]'.
N
5.7.23-log'
S%%q{71 !]z]Rte\@mysql_native_password^]
telnet> quit
Connection closed.
socat의 기능은 다양하며 여러 가지 용도로 사용될 수 있습니다.
[출처] https://scbyun.com/entry/linux-socat-%EB%AA%85%EB%A0%B9%EC%96%B4proxy
본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
댓글 0
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
|---|---|---|---|---|
| 13 |
[WSL2] 외부에서 WSL2 접속하기 (feat. 포트포워딩)
| 졸리운_곰 | 2024.12.01 | 306 |
| 12 |
[WSL2] Windows 11 WSL2 이용한 SSH & RStudio Server 설치 및 내·외부에서 접속
| 졸리운_곰 | 2023.11.06 | 336 |
| 11 |
[WSL2] Windows 11 WSL2 이용한 Python Jupyter 설치 및 내·외부에서 접속
| 졸리운_곰 | 2023.11.06 | 320 |
| 10 |
[WSL2] WSL2 외부 접속 설정
| 졸리운_곰 | 2023.06.26 | 368 |
| 9 |
[WSL2] Mysql 자동실행 설정하기
| 졸리운_곰 | 2023.06.25 | 275 |
| 8 |
[WSL2] 윈도우에서 linux 사용 (WSL 2), xwindows GUI 설정
| 졸리운_곰 | 2023.01.28 | 374 |
| 7 |
[WSL2] Windows 11의 WSL2에서 리눅스 X Window 응용프로그램 실행하기
| 졸리운_곰 | 2023.01.28 | 285 |
| 6 |
[WSL2] WSL에서의 Jupyter notebook 사용하기.
| 졸리운_곰 | 2022.11.27 | 476 |
| 5 | [WSL] WSL 배포판 복사하기 | 졸리운_곰 | 2022.10.30 | 312 |
| 4 | [WSL] 백업방법, WSL 내보내기, 가져오기 [WSL2] 내보내기 및 가져오기 | 졸리운_곰 | 2022.10.30 | 274 |
| 3 |
[WSL] WSL2[4] - SSH 접속하기
| 졸리운_곰 | 2022.09.25 | 369 |
| 2 |
[WSL] WSL2 딥러닝 환경 구축하기 (CUDA, CuDNN, Anaconda)
| 졸리운_곰 | 2022.09.04 | 385 |
| 1 |
[WSL] WSL에서의 Jupyter notebook 사용하기.
| 졸리운_곰 | 2022.09.04 | 339 |

