Claro, você precisa olhar para o OpenVPN. Você instala um servidor OpenVPN na máquina B (sugiro adicionar DNSMasq na máquina B também, para que todas as solicitações de DNS também sejam enviadas para o DNS usado pela máquina B). O OpenVPN pode enviar rotas para os clientes, com a opção push-route
. No seu caso, seria então o endereço IP (ou intervalo de IP) da máquina C.
Finalmente você configura o cliente na máquina A, então ele se conecta à máquina B. Ele então recebe o roteamento para C e qualquer conexão com C irá passar por B.
Eu admito, seria melhor se eu lhe desse um How-To completo sobre como realmente configurar o OpenVPN, mas é um esforço bastante complexo. Existem muitos bons tutoriais.
Alternativamente, seria o trabalho de tunelamento ssh para você? Isso é muito mais fácil do que configurar uma VPN completa. Seria tão fácil quanto executar isso:
ssh -L 8080:machine-c:80 youruser@machine-B
na Máquina A. O que isto faz é abrir a porta 8080 na Máquina localhost A e encapsulá-la na Máquina B para a Máquina C na porta 80. Assim, se você apontar seu navegador (a porta 80 é http, ) para http://localhost:80
, você obterá o conteúdo (padrão) da Máquina C.
Isso funciona para outros portos também.
Finalmente, você pode executar na Máquina A, o comando ssh -D 8080 youruser@machine-B
. Dessa forma, você cria um proxy SOCKS nos seus locais, que sairá na máquina B. Defina as configurações do SOCKS dos navegadores como localhost:8080
e qualquer conexão será roteada pela máquina B.
Teoricamente, qualquer software com suporte ao SOCKS pode usar esse proxy, mas o seu navegador pode fazer isso, e é por isso que eu dei como exemplo.
Isso realmente depende um pouco do caso de uso real que você tem, sobre qual é realmente a melhor escolha.