다음과 같은 SSH 설정이 있는 경우:
호스트 A -> 호스트 B <- 호스트 C
호스트 C가 NAT/방화벽 뒤에 있는 경우 호스트 B에 대한 역방향 터널을 열고 호스트 A는 호스트 B(ProxyCommand)를 통해 호스트 C에 연결합니다. 모든 것이 IPv4 전용입니다.
많은 루트 액세스나 해당 호스트에 대한 해킹 방법 없이 호스트 A와 호스트 C 간에 IP(v6) 연결을 설정하는 쉬운 방법이 있습니까?
편집 : 기본적으로 다음과 같은 것
hostC$ ssh -R 1234:localhost:22 hostB # establis remote hole for host C on host B
hostA$ ssh -o"ProxyCommand=ssh hostB nc localhost 1234" # Connect via HostB to Host C
hostA$ ping6 <ipv6> # this would validate the connectivity to HostC
아이디어는 IP(v6) 네트워크를 가능한 한 일시적으로 만드는 것입니다. :::1에서 HostC를 수신하는 서비스는 HostA에서 액세스할 수 있어야 합니다.
답변1
SSH 포트 전달과 VPN을 혼동하신 것 같습니다. 이는 기능이 다른 매우 다른 개념입니다.
SSH 포트 전달을 사용하면 한 서버(IP 및 포트)가 다른 서버(IP 및 포트)인 것처럼 가장할 수 있습니다. 다이어그램에서 보면 호스트 A는 호스트 B(포트 1234)와 통신하고 있다고 생각하지만 실제로는 호스트 B가 트래픽을 전달하기 때문에 호스트 C(포트 22)와 통신하고 있습니다. 호스트 A는 호스트 C가 존재한다는 사실을 결코 알지 못합니다.
실제로 원하는 것은 호스트 A가 호스트 C와 통신할 수 있고(호스트 C와 통신하고 있음을 알고) 모든 트래픽이 호스트 B를 통해 전송되는 VPN이라고 생각합니다.
SSH만으로는 이 작업을 수행할 수 없습니다. 일반적으로 모든 호스트(A, B, C)에는 동일한 VPN 소프트웨어(예: OpenVPN)가 설치되어 있어야 합니다. B는 VPN 서버로 설정되고 A와 C는 클라이언트로 설정됩니다.
한 가지 예외가 있습니다.우주선클라이언트에 sshuttle이 있는 한 ssh 서버가 VPN 서버로 작동하도록 허용합니다. 그러나 후속 구성에서는 작동하지 않을 수 있습니다. 호스트 A와 C가 서로 대화하지 못하게 될 수도 있습니다.