그러면 서버2와 서버1 사이에 터널이 생겨서 2222 포트가 서버1의 1111 포트로 매핑됩니다.
-R 1111:localhost:2222 서버2
위 옵션의 의미는 서버2의 1111포트로 접속하면 서버1의 2222로 포워딩하는 것입니다. (-R을 사용한다고 해도 포트를 반대로 적는게 아닙니다)
client ----> 서버2(127.0.0.1):1111 =========> 서버1(localhost):1111 -R 2222:localhost:1111 서버2
이렇게 해야 서버2의 2222로 접속하면 서버1의 1111포트로 들어오게 됩니다.
게다가 -g 옵션의 경우 서버2에서 sshd_config에서 GatewayPorts Yes
를 명시하여 서버2의 sshd가
Remote Port(1111)를 0.0.0.0 에 바인딩 시키도록 하지않으면 의미가 없습니다.(외부에서 접속 불가) 서버2의 sshd 설정변경이 불가피하죠.(디폴트로 No입니다)
ssh로 포트포워딩을 하시면 될 듯.. 로컬호스트 뿐 아니라 리모트에서
ssh로 포트포워딩을 하시면 될 듯.. 로컬호스트 뿐 아니라 리모트에서 접속했을 때도 포워딩이 적용되게 하려면 putty같은 윈도 클라이언트는 옵션이 필요한데 ssh 콘솔 프로그램은 그 옵션이 뭔지 잘 모르겠습니다.
서버2의 2222 포트를 서버1의 1111 포트로 연결하고 싶으면 (서버2:2222를 접속했을 때 서버1:1111로 접속되게 하려면)
서버1에서
ssh -l ${username} -R 1111:localhost:2222 서버2_IP -N
하시고 접속해두면 됩니다.
그러면 서버2와 서버1 사이에 터널이 생겨서 2222 포트가 서버1의 1111 포트로 매핑됩니다.
또는 서버2에서
ssh -l ${username} -L 2222:localhost:1111 서버1_IP -N
하셔도 됩니다.
로컬에서 테스트할 땐 분명히 될 것인데 이걸 다른 호스트들에서도 접속할 수 있게 하는 옵션은 잘 모르겟네요. ssh tunneling 이나 ssh port forwarding 으로 검색해보시기 바랍니다. 아니면 서버2의 OS가 윈도우면 putty로 하셔도 되고요.
rommance.net
죄송한데..
이건 only ssh 아닌가요?
로컬에서 다른 서버로만 터널링이 되어버리네요.
원하는것은
인터넷 --> {서버} --> {인터넷의 다른 서버}
{서버}1111 포트로 들어오면 {인터넷의 다른 서버}2222 포트로 바로 갈 수 있게 하는건데요.. tcp/ip 규칙을 무시하는 행위인지 iptables도 없고 ssh 터널링도 없네요..
아무쪼록 감사드립니다.
iptables에서 가능한걸로 알고 있습니다.정확한 커맨드는 기억
iptables에서 가능한걸로 알고 있습니다.
정확한 커맨드는 기억나지않지만
redirect를 이용하시면됩니다.
transparent proxy, iptables 설정을 찾아보시면
도움이 되실겁니다.
redirect 는 사설망으로 갈때 사용하는것 같습니다.
마스커레이딩할때 말입니다.
Re: 로컬에서 다른 서버로만 터널링이 되어버리네요.
분명히 ssh를 이용해서 터널링이 될텐데요.
putty에는 옵션이 분명 보입니다.(참고로 실제로 윈도우즈에서는 저 putty로 포트포워딩 사용해본 적 있음) 누구 ssh 터널링 옵션을 잘 아시는 분 있나요?
rommance.net
찾았네요.-g 옵션을 사용하면 됩니다.-g Allows
찾았네요.
-g 옵션을 사용하면 됩니다.
-g Allows remote hosts to connect to local forwarded ports.
서버1에서
ssh -g -l ${username} -R 1111:localhost:2222 서버2_IP -N
하시고 접속해두면 됩니다.
그러면 서버2와 서버1 사이에 터널이 생겨서 2222 포트가 서버1의 1111 포트로 매핑됩니다.
또는 서버2에서
ssh -g -l ${username} -L 2222:localhost:1111 서버1_IP -N
하셔도 됩니다.
rommance.net
좀 수정을 하겠습니다..
-R 1111:localhost:2222 서버2
위 옵션의 의미는 서버2의 1111포트로 접속하면 서버1의 2222로 포워딩하는 것입니다. (-R을 사용한다고 해도 포트를 반대로 적는게 아닙니다)
client ----> 서버2(127.0.0.1):1111 =========> 서버1(localhost):1111
-R 2222:localhost:1111 서버2
이렇게 해야 서버2의 2222로 접속하면 서버1의 1111포트로 들어오게 됩니다.
게다가 -g 옵션의 경우 서버2에서 sshd_config에서
GatewayPorts Yes
를 명시하여 서버2의 sshd가
Remote Port(1111)를 0.0.0.0 에 바인딩 시키도록 하지않으면 의미가 없습니다.(외부에서 접속 불가) 서버2의 sshd 설정변경이 불가피하죠.(디폴트로 No입니다)
위의 경우는 -g 를 쓰는 경우 서버2의 0.0.0.0에 2222번 포트가 바인딩되는 것이니 외부에서 접속이 가능합니다.
-------------------------------
== warning 대부분 틀린 얘기입니다 warning ===
네 무한포옹님의 말대로 하면 되겠습니다. (그런 분의 답변이 필요했어요)
네 무한포옹님의 말대로 하면 되겠습니다. (그런 분의 답변이 필요했어요)
rommance.net
질문이 답변 도중 외곡 되어 버렸네요...
받는쪽에서 ssh서버가 없다면요?
이것도 문제네요..
없거든요...ㅎㅎ
받는 쪽에는 ssh가 필요 없습니다. 중계 서버(포워딩 해주는 서버)에만
받는 쪽에는 ssh가 필요 없습니다. 중계 서버(포워딩 해주는 서버)에만 있으면 됩니다.
위쪽에 -L 옵션을 사용한 것을 중계서버에서 실행하기만 하면 됩니다.
정확한 컴맨드 스트링을 부탁합니다.
정확한 컴맨드 스트링을 부탁합니다.
socket2socket 이란걸 쓰면 됩니다.
desproxy 라는 프로그램의
http://desproxy.sourceforge.net/
socket2socket 이란 프로그램을 쓰면 됩니다.
nepipe라는 것도 있고요
http://www.net-security.org/software.php?id=167
windows라면
http://rootkit.host.sk/download/sredir.zip
를 쓰시면 됩니다.
댓글 달기