내 클라이언트 컴퓨터는 인터넷 어딘가에 있고 내부에 있는 대상 컴퓨터의 사용자 지정 포트에 액세스해야 합니다(또는 처음에는 액세스 가능한 컴퓨터의 모든 포트이지만 결국에는 12345와 같은 대상 컴퓨터의 특정 포트). 네트워크 내부 컴퓨터의 연결만 허용하는 네트워크입니다.
|
Client --X--> | Target:12345
|
(the Internet) (private network)
VPN 없음
사설망에는 VPN 서버가 있지만 클라이언트에 대한 루트 액세스 권한이 없고 그곳에서 (개방형) VPN을 사용할 수 없기 때문에 사설망에 쉽게 접근할 수 없습니다.
뿌리 없는 "문"
아마도 클라이언트가 대상에 도달하는 데 도움이 될 수 있는 첫 번째 것은 외부 세계에서 액세스할 수 있는 개인 네트워크의 Gate 시스템이고 대상은 Gate로부터의 TCP 연결을 허용합니다.
|
Client --?--> Gate --ok--> Target:12345
|
문제는 Gate[:some_port]에 연결하는 클라이언트가 실제로 Target:12345와 통신할 수 있도록 Gate에서 투명한 TCP 트래픽 전달을 설정하는 것입니다.
Gate에서 루트 액세스 권한이 있는 경우 iptables를 사용하여 Gate[:chosen_port]에 도착하는 TCP 트래픽을 Target:12345로 투명하게 전달합니다. 그러나 나는 Gate에 대한 루트 액세스 권한이 없습니다(그러나 거기에는 사용자 수준 액세스 권한이 있으며 SSH를 통해 액세스할 수 있습니다).
SSH를 통해 Target에 액세스할 수 있다면 클라이언트가 해당 터널을 통해 Target에 액세스할 수 있도록 Target과 Gate 사이에 SSH 터널을 설정합니다. 그러나 Target에 대한 SSH 액세스 권한은 없습니다. 개인 네트워크 내에서 포트 12345에 대한 TCP 연결을 설정하는 것뿐입니다.
클라이언트와 게이트웨이 모두에서 루트 없이 그리고 대상에 대한 SSH 액세스 없이 위의 TCP 전달을 설정할 수 있습니까? 대답이 '아니요'인 경우 후속 질문이 있습니다.
루트 "문" + 루트 "내부자" 없음
Gate 외에도 개인 네트워크에는 루트 액세스 권한이 있는 Insider 머신도 있습니다.
|
Client -ssh-> Gate -ssh-> Insider --?--> Target:12345
|
역방향 SSH 터널이 Insider에서 Gate로 설정되므로 클라이언트는 Insider에 SSH로 연결할 수 있으며 이론적으로 Insider는 Target의 포트 12345에 대한 TCP 연결을 ("수동으로") 설정할 수 있습니다. 그러나 이것은 내가 찾고 있는 투명한 TCP 트래픽 전달 솔루션이 아닙니다.
후자의 경우 클라이언트에서 Target:12345로 트래픽을 투명하게 전달할 수 있도록 Insider에서 루트 액세스 권한을 가질 수 있습니까?
어떤 조언이라도 대단히 감사하겠습니다!
답변1
SSH 포트 포워딩을 사용할 수 있습니다
ssh [email protected] -L 10000:172.16.10.10:10000
localhost:10000에 연결할 수 있으면 실제로는 172.16.10.10:10000의 서비스에 연결됩니다.
ssh -D 매개변수를 사용하여 "프록시"를 생성할 수도 있습니다.