Executa o SSH através de um proxy SOCKS?

5

Eu preciso de um comportamento semelhante a VPN localmente, sem usar uma VPN.

Eu criei um proxy SOCKS para um determinado servidor que pode ser acessado pela WAN, e quero todo o meu tráfego encaminhado por esse proxy para que eu possa alcançar hosts dentro dessa rede.

Meu proxy SOCKS tem esta aparência:

ssh -t -D 8088 user@proxy-host 'watch -n 1 date'

Eu configurei meu sistema para proxy usando as configurações do sistema:

Eu verifiquei que minhas variáveis de ambiente estão sendo definidas corretamente:

naftuli@macbook-nkay:~$ env | grep socks_proxy
socks_proxy=socks://127.0.0.1:8088/

No entanto, quando vou ao SSH para um determinado servidor, não consigo alcançá-lo:

$ ssh internal-host
ssh: Could not resolve hostname internal-host: Name or service not known

Acho que o problema é que o DNS não está sendo encaminhado pelo túnel SOCKS. Existe uma maneira de configurar isso? Eu era capaz de configurar o Firefox para usar manualmente o DNS remoto e funcionou muito bem. Existe uma variável de ambiente para isso?

    
por Naftuli Kay 20.11.2015 / 22:41

1 resposta

4

Tópico semelhante foi discutido em SU :

O openssh em si não entende as variáveis de ambiente socks_proxy . Você precisa usar, por exemplo, o netcat para direcionar o tráfego pelo proxy:

 ssh -o ProxyCommand='nc -X 5 --proxy 127.0.0.1:8088 %h %p' user@host

Para encaminhar solicitações de DNS, isso será mais complicado, porque as funções de baixo nível no openssh não respeitam variáveis ambientais. Você provavelmente precisará configurar seu resolvedor de DNS local, que encaminhará as solicitações ao proxy. Há dns-tcp-socks-proxy , que deve manipular.

./dns_proxy --socks_port=8088 --listen_port=53

Quando você tiver esse daemon rodando, você deve configurar o seu /etc/resolv.conf (o Mac espera que respeite este) para usar este DNS.

nameserver 127.0.0.1

Teste simples deve ser possível usando dig novamente, mas quando este resolvedor estiver funcional, você não precisará da parte proxy:

dig example.com

Alternativa como jumpbox:

Como uma alternativa fácil, recomendo usar o host normal como um jumphost, ignorar a parte do proxy e redirecionar o IO usando a opção -W :

ssh -oProxyCommand="ssh -W %h:%p jumpbox" destination_host

Ele deve fazer o dns resoving e rotear no jumpbox. Esta opção pode ser facilmente incorporada ao seu ~/.ssh/config

    
por 20.11.2015 / 22:52

Tags