A execução de tunelamento SSH pode ficar um pouco confusa com toda a terminologia, mas há um recurso complementar a -L
, que fornece a capacidade de "dinamicamente" atribuir portas alocando um soquete localmente, em vez de uma única porta.
Da página do manual:
-D [bind_address:]port
Specifies a local ''dynamic'' application-level port forwarding. This works by
allocating a socket to listen to port on the local side, optionally bound to the
specified bind_address. Whenever a connection is made to this port, the connection
is forwarded over the secure channel, and the application protocol is then used to
determine where to connect to from the remote machine. Currently the SOCKS4 and
SOCKS5 protocols are supported, and ssh will act as a SOCKS server. Only root
can forward privileged ports. Dynamic port forwardings can also be specified in
the configuration file.
Ao alocar um soquete, todo o tráfego pode ser canalizado para o site remoto, incluindo consultas DNS.
Como usar
Para começar, você precisará abrir uma conexão com sua LAN (por meio de seu endereço IP público na Internet) assim:
$ ssh -D 1234 myserver
OBSERVAÇÃO: Isso pressupõe que você tenha a capacidade de acessar o SSH em um servidor acessível por meio de seu endereço IP público da Internet.
Uma vez configurada, em outro terminal, você vai querer configurar seu navegador para usar este túnel. OBSERVAÇÃO: Esse tipo de túnel está fornecendo um soquete, portanto, para se conectar a ele, é necessário informar ao seu navegador da Web para fazer proxy de todo o tráfego por meio desse soquete. Isso é normalmente mostrado como um tipo de conexão SOCKS ou SOCKS v5 para seu proxy.
Um exemplo
Neste exemplo, mostrarei como você pode fazer isso usando o Chromium, por meio da CLI:
$ ./Chromium --proxy-server="socks5://localhost:1234"
Aqui estou lançando o Chromium e apontando para o túnel SSH que nós configuramos anteriormente na porta 1234 do nosso host local. E, com isso, se eu tentar visitar uma URL para um servidor que está configurado na minha LAN, dirigido a ele:
Proxycomoutrosnavegadores
TodososprincipaisnavegadoresfornecemesserecursoesãobastanteabrangentesemoutrossitesdeSE,comooSuperUser:
- ComopossoalterarasconfiguraçõesdeproxydoGoogle?Chrome?
Como configurar as configurações de proxy no firefox?
Você pode até mesmo fazer uso de extensões para os vários navegadores, o que permite que você faça a seletividade seletiva apenas de determinados tráfegos, permitindo que você direcione todo o resto para sua conexão normal à Internet.
Por exemplo, você pode usar o ProxySwitchy! com o Chrome para fazer exatamente isso: