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

7

Estou trabalhando em uma universidade como assistente de pesquisa. Muitas vezes, gostaria de me conectar de casa a recursos universitários por meio de http ou ssh, mas eles são bloqueados pelo acesso externo. Portanto, eles têm um servidor ssh front-end onde podemos fazer ssh e ir para outros hosts. Para acesso http, eles aconselham 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 tráfego na Internet passar por esse servidor proxy, e toda vez que eu quiser me conectar à universidade eu tenho que fazer isso novamente.

O que eu gostaria:

  • Configure um túnel ssh toda vez que eu fizer login no meu computador. Eu tenho um certificado, portanto, nenhuma senha é necessária
  • Tenha uma maneira de redirecionar alguns domínios-curinga sempre através do ssh-server primeiro. Então, quando eu digito intra.university.fi no meu navegador, transparentemente o pedido está passando pelo túnel. O mesmo quando eu quero ssh em outro recurso dentro da universidade

Isso é possível? Para a parte http, acho que talvez deva configurar meu próprio proxy transparente local para que isso seja feito com facilidade. Como sobre a parte ssh?

    
por Peter Smit 06.03.2010 / 07:34

7 respostas

5

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

1) A primeira parte foi uma pergunta perguntei um pouco atrás .

You can alias it in you ~/.bashrc.

Add that line

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

And reload the bashrc file with source ~/.bashrc

And now you only have to type university_ssh to ssh to your database server.

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

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

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

3) Última alteração do proxy do seu navegador para nada, já que não é mais necessário. Como digitar university.loc agora é a configuração para usar esse túnel.

Atualizado

Eu tentaria adicionar a porta ao arquivo de hosts ( 127.0.0.1:port ou localhost:port ) e você também poderia alterar o .loc TLD para o real .fi TLD se estivesse 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
    
por 14.03.2010 / 18:00
7

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

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

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

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

Para configurar automaticamente seu túnel SSH, sudo apt-get install autossh e 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_profile ou ~ / .bashrc.

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

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() + '.');

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

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

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

    
por 11.03.2010 / 22:11
1

Aviso de isenção : 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 o localhost e tiver o túnel estabelecido, não:

http://privateaccess.tld:1234

Envie um pedido para:

localhost:1234

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

Ou então parece para mim. Mais uma vez, apenas uma ideia.

    
por 09.03.2010 / 15:09
1

FoxyProxy ( link ) resolve o problema de seleção automática de proxy. Ele é projetado exatamente para esse propósito, mas é, é claro, específico para o firefox.

    
por 12.03.2010 / 22:45
0

Tente configurar o SOCKS-proxy 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 deve ou não usar o proxy. Para outros serviços (por exemplo, vnc), você pode usar tsocks para fazer com que ele use o seu túnel.

    
por 06.03.2010 / 13:39
0

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

    
por 12.03.2010 / 18:07
0

A maneira mais fácil seria adicionar o comando ssh que se conecta ao servidor em 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 é executado

firefox -P ProfileName -no-remote

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

Dessa forma, sempre que você quiser um recurso universitário, basta abrir esse perfil alternativo do firefox.

    
por 13.03.2010 / 22:20