2 interfaces de rede conectadas à internet. Escolha o que usar de acordo com o nome de domínio

6

Pergunta inspirada em aqui

Cenário

Eu moro em uma casa perto da minha universidade. Dito isto, estudantes wifi pode chegar a minha casa, então eu costumo usar isso mesmo de casa. O problema é que, sendo um wifi gerenciado por administradores de universidades, não é possível conectar-se a alguns dns (por exemplo, upload de arquivos como rapidshare ou megaupload). A boa notícia é que eu também tenho uma chave de internet USB que eu posso usar, mas, basicamente, isso é uma farsa como todos os planos de internet móvel na Itália, porque depois de 20GB eles vão cortar minha banda.

Finalmente ... a questão

Para otimizar o uso da minha banda, eu quero dizer para o meu Ubuntu: se eu me conectar ao * .domain.com, use essa interface, caso contrário, use a outra. Para o bem desta questão, vamos chamar wi-fi wlan0 e chave de internet usb ppp0 .

P.S .: é uma questão muito específica. Não sugira coisas como "use Tor, cara". Eu não quero abusar do wifi da universidade. Eu realmente não sei se isso é possível com o Tor ... mas ainda assim ...:)

    
por dierre 30.09.2010 / 21:48

2 respostas

5

Se o seu domínio de exemplo "* .domain.com" tiver um bloco de endereço IP estático, você poderá adicionar uma rota estática à sua tabela de roteamento como:

me@thiscomputer:~$ whois domain.com

Isso deve fornecer algumas informações de contato para os proprietários do domínio.com. Você pode contatá-los para descobrir seu endereço de rede. Este endereço provavelmente estará no formato CIDR, em que: 192.168.0.0/24 == "O conjunto de endereços IP de 192.168.0.1 até 192.168.0.254". O número após a barra é o número de bits na parte de rede do endereço. Isso é equivalente a uma máscara de rede de 255.255.255.0.

Você também pode usar dig para procurar alguns endereços de host e tentar deduzir o netblock a partir disso, ou apenas adicionar rotas a hosts distintos, mas eu não recomendaria isso.

Com as informações de endereço em mãos, você pode adicionar uma rota estática assim:

me@thiscomputer:~$ sudo ip route add inet 10.0.0.0/24 dev ppp0

IRL provavelmente não funcionará exatamente assim, consulte a manpage para o comando ip ou o comando route (estes são comandos diferentes que fazem a mesma coisa, rota é mais antiga e parte do coreutils) para ver como fazer isso direito .

Se o endereço do domínio não for estático (por exemplo, configurado pelo DHCP), o que parece improvável para um site com um registro A persistente, você poderia trabalhar o método acima em uma tarefa cron executando em um intervalo menor que a concessão DHCP do site. É provável que você tenha que entrar em contato com o administrador do site para obter essas informações ou apenas experimentar. Se o trabalho for executado uma vez por dia, isso provavelmente será suficientemente frequente.

    
por koanhead 01.10.2010 / 03:39
4

Existe um proxy da web na sua rede universitária? Em caso afirmativo, use-o para navegação normal na Web, mas não para acessar sites bloqueados.

Caso contrário, é possível, mas não é muito fácil. O roteamento (isto é, decidir para onde enviar pacotes) é executado no nível de IP , que só conhece os endereços IP. Por outro lado, seu requisito de roteamento é baseado em um nome de host, mas a camada que conhece os nomes não tem controle sobre o roteamento.

Acho que qualquer solução envolverá um proxy da web. (Suponho que, para outros protocolos, você sempre usará uma rede específica.) O próprio proxy da Web não fará nada além de solicitações de retransmissão, portanto, qualquer um fará: um grande ( squid ), um especializado para armazenar em cache ( wwwoffle ), um simples minúsculo ( tinyproxy ), etc. ( aptitude search web proxy; aptitude search http proxy ).

Agora, para a solução que estou propondo (pode haver outras formas), não configure seu proxy de forma especial (ou seja, faça com que ele retransmita todas as solicitações), mas execute-o como um usuário dedicado: crie um usuário alt-routed sem privilégios especiais e organiza a execução do proxy como este usuário.

Em seguida, torne wlan0 a rota padrão. Em seguida, configure iptables e instale o pacote iproute . As regras que você deseja são direcionar pacotes de saída que vieram de um processo em execução como alt-route-user para a interface ppp0 . Não há uma maneira direta de fazer isso, mas isso pode ser feito por:

  1. marcação especial (com a marca 1) de pacotes de saída do usuário alt-routed ;
  2. usando uma tabela de roteamento diferente (tabela 1) para pacotes marcados com essa marca;
  3. roteando tudo para a interface alternativa nesta tabela.

Se eu entendi a documentação corretamente, isso deve funcionar:

iptables -t mangle -A OUTPUT -m owner --uid-owner alt-routed -o wlan0 -j MARK --set-mark 1
ip rule add fwmark 1 table 1
ip route add 0.0.0.0/0 table 1 dev ppp0

Note que isso está bem além do meu uso comum dessas ferramentas, então eu poderia ter conseguido esses comandos completamente errados. Confirmações ou correções são bem-vindas.

Qualquer programa executado como alt-routed acessará a Internet por meio de ppp0 em vez do padrão wlan0 .

Por fim, configure seus navegadores para percorrer o proxy dos sites que você deseja acessar acima de ppp0 e não passar pelo proxy dos sites que você deseja acessar por meio de wlan0 . Existem várias maneiras de fazer isso, dependendo do (s) navegador (es) que você está segmentando e se você deseja uma GUI ou se deseja editar um arquivo de configuração.

    
por Gilles 01.10.2010 / 00:42