홈 네트워크의 일부 클라이언트 장치를 인터넷에 연결하도록 허용하고 싶지만 연결은 원격 서버에 대한 SSH 터널이 있는 iMac을 통해 이루어져야 합니다. 결국 원격 서버의 인터넷 연결을 사용하여 클라이언트 장치를 대신하여 요청하고 싶습니다.
iMac으로 터널링을 사용하기 시작했습니다
ssh -D 8127 -f -g -N -C -vvv myuser@remote_server
프록시 localhost:8127을 사용하여 iMac에서 브라우저를 구성했는데 모든 것이 잘 작동합니다. 내가 연결된 웹 서버는 Remote_server에서 들어오는 연결을 확인합니다. 여태까지는 그런대로 잘됐다.
그러나 클라이언트에서 동일한 프록시 설정을 구성하면 아무 것도 얻지 못합니다. 내 Windows 노트북의 브라우저에 "연결 재설정"이 반환됩니다. Android 기기와 iPad를 사용해 보았습니다. 그들 중 누구도 작동하지 않습니다.
터널의 자세한 기록은 많은 것을 드러내지 않습니다.
debug1: Connection to port 8127 forwarding to socks port 0 requested.
debug2: fd 12 setting TCP_NODELAY
debug3: fd 12 is O_NONBLOCK
debug3: fd 12 is O_NONBLOCK
debug1: channel 5: new [dynamic-tcpip]
debug2: channel 5: pre_dynamic: have 0
debug2: channel 5: pre_dynamic: have 411
debug2: channel 5: zombie
debug2: channel 5: garbage collecting
debug1: channel 5: free: dynamic-tcpip, nchannels 7
debug3: channel 5: status: The following connections are open:
#2 direct-tcpip: listening port 8127 for 188.65.124.58 port 443, connect from 127.0.0.1 port 61067 to 127.0.0.1 port 8127 (t4 r0 i0/0 o0/0 fd 9/9 cc -1)
#3 direct-tcpip: listening port 8127 for 172.217.22.206 port 443, connect from 127.0.0.1 port 61091 to 127.0.0.1 port 8127 (t4 r1 i0/0 o0/0 fd 10/10 cc -1)
#4 direct-tcpip: listening port 8127 for 66.102.1.189 port 443, connect from 127.0.0.1 port 60990 to 127.0.0.1 port 8127 (t4 r2 i0/0 o0/0 fd 11/11 cc -1)
#6 direct-tcpip: listening port 8127 for 172.217.22.206 port 443, connect from 127.0.0.1 port 61092 to 127.0.0.1 port 8127 (t4 r4 i0/0 o0/0 fd 13/13 cc -1)
왜 이것이 작동하지 않는지 아는 사람이 있습니까?
답변1
localhost 포트에만 바인딩합니다. man ssh
문서의 이 부분(참고자료 참조)은 특별히 명확하지 않습니다.
기본적으로 로컬 포트는 설정에 따라 바인딩됩니다
GatewayPorts
. 그러나 명시적인 바인딩_주소를 사용하여 특정 주소에 연결을 바인딩하는 것이 가능합니다. Bind_address는localhost
수신 대기 포트가 로컬 전용임을 나타내는 반면, 빈 주소는*
포트가 모든 인터페이스에서 사용 가능해야 함을 나타냅니다.
그리고 다음에서 ssh_config
:
게이트웨이 포트원격 호스트가 로컬 전달 포트에 연결할 수 있는지 여부를 지정합니다. 기본적으로
ssh
(1)은 로컬 포트 전달을 루프백 주소에 바인딩합니다.이는 다른 원격 호스트가 전달된 포트에 연결하는 것을 방지합니다. 로컬 포트 전달을 와일드카드 주소에 바인딩하여 원격 호스트가 전달된 포트에 연결할 수 있도록GatewayPorts
지정하는 데 사용할 수 있습니다 .ssh
인수는 "예" 또는 "아니오"여야 합니다. 기본값은 "아니요"입니다.
이는 을 사용할 때 ssh -D 8127
바인딩을 기반으로 하는 포트를 사용하고 있음 을 의미하며 GatewayPorts
, 기본값은 localhost
원격 호스트가 연결할 수 없다는 것입니다.
지정하면 ssh -D :8127
주소에 대한 참조를 포함하고, 주소가 비어 있으므로 기본값은 *
원격 호스트가 연결할 수 있다는 것입니다.
명령을 다음으로 변경하면 원하는 대로 작동합니다.
ssh -D :8127 -f -g -N -C -vvv myuser@remote_server