본문 바로가기

서버 등 운영체제(OS)/Linux

[Ubuntu] socat 을 사용한 포트 포워딩 Port forwarding

반응형

회사에서 22포트로 외부로 나가는게 불가능해서, 내 서버의 ssh 는 22002로 변경을 해둔 상태인데, b 서버에 접근할일이 생겼다. 근데 곧장 sftp 를 쓰고자 하는데 ...


그럼 패킷을 포워딩 하면 어떨까 해서 방법을 찾아보니 iptables 로 하는방법이 있긴 하지만 매우 복잡, 비권장이라는 것에 정보를 더 찾아보니 socat 이라는게 존재했다.


사용법은 매우 간단하다.


Redirect TCP port 443 in localhost to checkwebcam.com port 80.

socat TCP-LISTEN:443,fork TCP:checkwebcam.com:80

fork parameter is required so that socat fork a new process for every connection attempt. If fork is not specified, socat will exit once a redirected connection closes, times out, or who knows what kind of error occurs.

Redirect UDP port 13443 in localhost to checkwebcam.com port 80.

socat UDP-LISTEN:13443,fork UDP:checkwebcam.com:80


내 서버에 x번 포트로 TCP/UDP 로 들어왔을때 어디로 전달할껀지만 지정하면 된다.

그리고 커맨드를 입력하면 해당 세션에서만 작동하기 때문에, 뒤에 & > /dev/null 을 붙여 background 에서 실행하도록 해주자. 


처음에 , 하고 fork 사이에 빈칸을 두었더니 '주소는 무조건 2개여야 합니다' 라는 오류가 떴다.

그러니 빈칸은 fork 다음에 한칸만 ..... 콤마 뒤에 무조건 스페이스를 넣는 습관이 있는분은 주의하시길, (;;)



참조 : http://palimpsest.minivi.com/socat/portforwarding/index.html

반응형