Quando estou fora do firewall da empresa, uso um script para fazer um túnel via SSH e expor nosso wiki interno à minha máquina OSX. Existe um comando para informar temporariamente ao OSX para resolver minha porta local quando o túnel estiver configurado?
A sequência que espero usar é:
- abra o túnel
ssh -f external-proxy.example -L 8001:internal-wiki.example:8000 -N
[FAÇA ALGO AQUI]
digitar a URL internal-wiki.example:8000 no meu navegador faz com que ele visualize de forma transparente localhost:8001
Outros detalhes:
- Eu poderia editar /etc/hosts, mas isso seria uma mudança persistente. Eu quero usar isso apenas quando estiver fora
- Não estamos usando SSL ou certificados.
Eu tenho uma solução para você, envolva seu comando ssh em um script bash:
Explicando:
/etc/hosts
/etc/hosts
com a entrada transienteMinhas desculpas se isso não for suficiente para uma resposta , não tenho representante suficiente para comentar aqui.
Eu acho que /etc/hosts é possivelmente a melhor opção. Não sei qual é o seu processo de desmontagem, mas você pode adicionar a remoção da
/etc/hosts
entrada como parte dele.Também acho que a mudança de porta não funcionará com uma
/etc/hosts
solução. Você pode mapearlocalhost:8000
parainternal-wiki.example:8000
?Então você pode adicionar algo como e remover
127.0.1.1 internal-wiki.example
a/etc/hosts
linha quando parar o túnel assim:sed -i '' '/127.0.1.1 internal-wiki.example/d'
(certifique-se de testar isso antes de executar ao vivo, é claro).Isso deve permitir que você use
http(s)://internal-wiki.example:8000
em seu navegador.Não é uma solução perfeita, mas algo melhor (como mapeamento de portas) acho que exigiria um proxy http em execução localmente.
Para o que vale a pena, adicionar e remover entradas de host é como o Parallels torna as VMs endereçáveis por nome de host. Isso é adicionado ao meu
/etc/hosts
enquanto minhaxu17
VM está em execução:172.20.10.112 xu17.shared xu17 #prl_hostonly shared
É claro que executar um proxy nginx lidaria bem com isso, mas pode ser um pouco mais de configuração do que você está procurando?
Uma opção mais simples com netcat pode funcionar dependendo do aplicativo da web.
Então, quando você fechar o túnel, poderá matar o
nc
processo e excluir/tmp/proxy.pipe
Criar entrada de hosts temporários:
Remova a entrada de hosts temporários (e retorne o arquivo de hosts persistentes):
ou reinicialize ou desligue.
Execute um servidor web de balanceamento de carga em seu Mac balanceando entre o encaminhamento localhost e o endereço real do wiki configurado para preferir o endereço de encaminhamento localhost.
Quando a conexão ssh estiver inativa, o balanceador de carga notará e direcionará suas conexões para o endereço wiki regular.
Configure seu navegador da Web para conexões de proxy para o wiki por meio do balanceador de carga.
Um pouco de uma marreta para quebrar uma noz embora.
Os serviços de nomes (DNS, ldap, /etc/hosts) não "resolvem portas" eles resolvem nomes de host. Esta afirmação não é inteiramente verdadeira, mas uma explicação adequada neste momento é irrelevante e demorada.
Como o OSX usa um kernel BSD, acho que também pode "pegar emprestado" muitos outros códigos de lá. Os arquivos ns resolvedores são padronizados para leitura de /etc/hosts, mas isso pode ser substituído no Linux e no BSD definindo a variável de ambiente HOSTALIASES (no shell de onde você inicia o navegador), mas isso só funciona se não houver '.' no nome. Se você pode usar urls sem um . no nome isso resolverá seu problema.
Como alternativa, você pode executar um script para configurar o redirecionamento de porta para redirecionar os pacotes endereçados a xxx.xxx.xxx.xxx:8000 para 127.0.0.1:8001 e vice-versa nos pacotes recebidos. Mas esta é uma solução bastante desajeitada.
Alternativamente, você pode instalar o squid e usar um redirecionador de URL personalizado para reescrever as solicitações (também possível se você começar a usar https - mas complicado).
Uma opção muito mais limpa seria executar uma conexão encapsulada adequada no ssh. Acredito que isso não seja suportado pelo osx pronto para uso, mas existem complementos compatíveis com openvpn para osx
Se fosse eu, eu apenas configuraria scripts para trocar o arquivo hosts, mantendo todo o tráfego em uma porta e certificando-se de que a configuração padrão seja trocada no momento da inicialização e quando a conexão ssh terminar.