Como configurar domínios específicos são encapsulados em outro servidor


8

Estou trabalhando em uma universidade como assistente de pesquisa. Muitas vezes, eu gostaria de conectar os recursos da casa à universidade através de http ou ssh, mas eles estão impedidos de acesso externo. Portanto, eles têm um servidor ssh front-end onde podemos fazer o ssh para e de lá para outros hosts. Para acesso http, eles aconselham a configurar um túnel ssh como este

ssh -L 1234:proxyserver.university.fi:8080 publicsshserver.university.fi

e coloque as configurações de proxy do seu navegador para apontar para a porta 1234

Tudo bem e funcionando, mas eu não gostaria de deixar todo o meu outro tráfego na Internet passar por esse servidor proxy, e toda vez que quero me conectar à universidade, preciso executar essas etapas novamente.

O que eu gostaria:

  • Configure um túnel ssh sempre que eu fizer login no meu computador. Eu tenho um certificado, portanto, nenhuma senha é necessária
  • É possível redirecionar alguns domínios curinga sempre através do servidor ssh primeiro. Assim, quando digito intra.university.fi no meu navegador, de forma transparente, a solicitação passa pelo túnel. Mesmo quando eu quero ssh em outro recurso dentro da universidade

Isso é possível? Para a parte http, acho que talvez eu deva configurar meu próprio proxy transparente local para fazer isso facilmente. E a parte ssh?

Respostas:


5

Isso é realmente fácil de fazer. Eu o uso o tempo todo para acessar o banco de dados por trás do nosso servidor web de produção.

1) A primeira parte foi uma pergunta que fiz há pouco .

Você pode usar o apelido em ~ / .bashrc.

Adicione essa linha

alias university_ssh="ssh -L 1234:proxyserver.university.fi:8080 publicsshserver.university.fi" 

E recarregue o arquivo bashrc com source ~ / .bashrc

E agora você só precisa digitar university_ssh para ssh no servidor de banco de dados.

2) Em seguida, você precisa editar seu arquivo / etc / hosts para adicionar university.loc (.loc é um TLD falso) e apontar para localhost :: 1234. Por exemplo, meu arquivo hosts fica assim:

127.0.0.1       localhost
127.0.1.1       ubuntu-64-desktop
127.0.0.1       code2design.loc    localhost

e Agora posso digitar code2design.loc para acessar minha versão local do code2design.com no meu PC.

3) Última, altere o proxy do navegador para nada, pois você não precisa mais dele. Desde que você digitou university.loc agora está configurado para usar esse túnel.

Atualizada

Eu tentaria adicionar a porta ao arquivo de hosts ( 127.0.0.1:portou localhost:port) e você também pode alterar o .locTLD para o .fiTLD real se estiver preocupado com a quebra de hosts virtuais.

Então, para você, pode ser assim:

127.0.0.1       localhost
127.0.1.1       ubuntu-64-desktop
127.0.0.1       university.fi    localhost:1234

Onde exatamente você está apontando as coisas para a porta 1234? Não vejo que, no exemplo no passo 2
Peter Smit

Essa resposta ainda não é perfeita, mas ainda assim eu a aceito, pois é a melhor e o prazo é em uma hora. Você ainda pode responder minha pergunta acima aqui?
Peter Smit

11
O que a coisa da porta no arquivo hosts faz?
janmoesen

11
Tu es. Gravemente. De man hosts: IP_address canonical_hostname [aliases...]. IMO, esta não é uma solução adequada.
janmoesen

11
Observe que vários hosts para o mesmo endereço IP podem ser colocados apenas em uma linha; portanto, seu exemplo pode ser reescrito como 127.0.0.1 localhost ubuntu-64-desktop university.fi.
Mathias Bynens

7

Eu uso um arquivo PAC (Proxy Auto-Config) para isso. Gostaria de colar o meu aqui, mas a Wikipedia tem um bom arquivo de exemplo .

No seu navegador, aponte a opção "Usar configuração automática de proxy de" para o arquivo (talvez hospedado em um servidor web compartilhado). Funciona em praticamente todos os navegadores meio decentes.

Observe que você ainda precisa configurar seus túneis SSH. (Ou use um ssh -Dproxy SOCKS apenas para determinados hosts, definidos no seu PAC - mas o SOCKS não funciona no Opera.)

EDIT : Certo, como não parece haver muito interesse do seu lado, vou expandir um pouco minha resposta. :-)

Para configurar automaticamente seu túnel SSH sudo apt-get install autosshe coloque isso no seu crontab:

@reboot autossh -L 1234:proxyserver.university.fi:8080 publicsshserver.university.fi

Como alternativa, você pode colocar o comando ssh no seu ~/.bash_profileou ~ / .bashrc.

Agora, para determinar quais domínios proxy e quais conectar-se diretamente, crie um PAC como este:

function FindProxyForURL(url, host)
{
    var httpProxy = 'PROXY 127.0.0.1:1234';
    var noProxy = 'DIRECT';
    var default_ = noProxy;

    // Host matches that use the HTTP proxy.
    var httpProxyMatches = [
        'intranet.university.fi',
        'webmail.university.fi',
        '*yourwildcard*'
    ];
    // Check all host patterns and network masks.
    for (var i = 0; i < httpProxyMatches.length; i++) {
    if (shExpMatch(host, httpProxyMatches[i])) {
        alert('HTTP ' + httpProxy + ' match for host: ' + host + '; url: ' + url);
        return httpProxy;
    }
    alert('DEFAULT ' + default_ + ' for host: ' + host + '; url: ' + url);
    return default_;
}
alert('PAC loaded at ' + new Date() + '.');

Em seguida, vá para as configurações avançadas de rede do Firefox e aponte para esse arquivo. Se for bem-sucedido, você verá a mensagem "PAC carregado" no seu console JavaScript (Ctrl + Shift + J). Se você não estiver usando o Firefox, remova as linhas de "alerta".

Este é um PAC bastante básico, mas deve ajudá-lo no seu caminho. A mina também analisa máscaras de rede IP para determinar serviços internos / externos etc.

Deixe-nos saber como você está se saindo.


1

Isenção de responsabilidade : não testei isso, apenas uma ideia.

Talvez você possa forçar os domínios privados a usar o 'proxy' simplesmente editando a configuração do host em seu sistema local. Se você apontar manualmente todos os domínios para localhost e tiver o túnel estabelecido, não:

http://privateaccess.tld:1234

Envie uma solicitação para:

localhost:1234

O que é realmente uma porta para o servidor proxy da rede interna. A solicitação ainda deve ser para o mesmo domínio, portanto, o servidor proxy deve responder corretamente.

Ou é o que me parece. Mais uma vez, apenas uma ideia.


Sim, isso funcionaria, mas não é fácil e bonito. E quanto ao ssh? Isso passaria?
quer

Você está atravessando o túnel do ssh?
precisa

Quanto mais fácil, realmente não parece tão difícil, você lista os domínios internos no arquivo hosts e abre um túnel ssh.
precisa

Sim, eu atravesso um túnel. O host para o qual eu quero ssh não está disponível na Internet, mas está disponível no host "DMZ"
Peter Smit


0

Tente configurar o proxy SOCKS com ssh ( ssh -D <portnumber> publicsshserver.university.fi) e configure seu navegador para usar 127.0.0.1 e <portnumber>como proxy. Você pode adicionar domínios para os quais ele deve ou não usar o proxy. Para outros serviços (por exemplo, vnc), você pode usar tsocks para fazê-lo usar seu túnel.


Como posso "adicionar domínios"? Nas configurações do meu navegador? O Opera suporta apenas padrões de exclusão. E as conexões ssh. Como posso definir lá para usar o proxy sox?
61110 Peter Smit

Eu não usei o Opera, então não sei dizer. Talvez você possa usar o tsock para isso também. Use "tsocks ssh <sitethatneedtheproxy>" para ssh para determinar a necessidade através do proxy socks.
precisa

Opera ainda não suporta proxies SOCKS, receio. Deparamos com esse problema no início desta semana. No entanto, ele suporta o PAC. Veja minha resposta. :-)
janmoesen 11/03/10

0

Você provavelmente deve usar uma VPN em vez de apenas ssh para esse problema. Olhe para o openvpn.


Sinto muito, mas eu não posso instalar nada no servidor da universidade (e eles não querem VPN)
Peter Smit

0

A maneira mais fácil seria adicionar o comando ssh que se conecta ao servidor ao seu ~ / .bash_profile

Em seguida, crie um perfil separado no firefox que use essa configuração de proxy fazendo

$ firefox -profilemanager

Você pode criar um atalho na área de trabalho que seja executado

firefox -P ProfileName -no-remote

O comando no-remote permite executar várias instâncias do firefox simultaneamente. Certifique-se de definir as configurações de proxy neste novo perfil.

Dessa forma, sempre que quiser qualquer recurso da universidade, basta abrir esse perfil alternativo do Firefox.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.