Como posso forçar o Squid Proxy a usar um gateway específico para acesso à Internet?

3

Finalmente consegui definir o meu servidor Ubuntu 10.04 como proxy transparente usando o squid. Funciona exatamente como eu queria, mas tenho um problema sério ...

Em ambas as placas ethernet eu tenho a chance de entrar na internet (dois ISPs diferentes), mas eu gostaria que este servidor usasse apenas eth1 para atender todas as requisições de internet.

Assim, o esquema final seria usar eth0 para coletar todas as solicitações de proxy recebidas e deixar o squid coletar informações da Internet usando a conexão ultrarrápida na eth1.

O problema é que eu tenho um firewall conectado a eth0: este firewall permite que uma filial chegue ao proxy usando uma ponte wifi.

Para garantir a comunicação entre a filial e o proxy, sou forçado a configurar como gateway padrão na eth0 meu firewall, que - infelizmente - também oferece conexão à internet (mas lenta). O Squid usa inteiramente eth0 para coletar pedidos e obter dados da internet.

Não consigo configurar um gateway padrão correto exclusivo porque, nesse caso, eu não enviaria pacotes de volta à nossa filial usando a ponte wifi.

Espero ter sido um pouco mais claro. Sinto muito pela minha pobre exposição.

Minha rota atual mostra:

Kernel IP routing table'
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
193.206.x.x   *               255.255.255.0   U     0      0        0 eth1
128.0.x.x       *               255.255.0.0     U     0      0        0 eth0
default         128.0.x.x    0.0.0.0         UG    100    0        0 eth0
default         193.206.x.x 0.0.0.0         UG    100    0        0 eth1

Alguma dica?

Se você precisar de algum tipo de detalhes, eu os postarei.

    
por Pitto 26.05.2011 / 19:49

2 respostas

2

Original

Em um prompt de comando:

sudo route add default gw i.p.add.ress eth1

Em seguida, em /etc/network/interfaces , adicione esta linha:

up route add default gw i.p.add.ress eth1

Claro, substituindo i.p.add.ress pelo IP do gateway em ambas as linhas.

Editar para nova pergunta

Se você precisar excluir uma rota, basta alterar "adicionar" a "del". Exemplo:

(command) sudo route del default gw 128.0.x.x eth0
(/etc/network/interfaces) up route del default gw 128.0.x.x eth0

Você também pode definir uma rota estática para a filial através do comando route

route add -net (network_id/prefix) GW (gateway) (interface)
    
por 26.05.2011 / 20:01
0

Você tem dois problemas: Primeiro, você precisa fazer o squid usar o endereço IP de origem correto. Em segundo lugar, você precisa garantir que os pacotes com esse endereço IP de origem sejam direcionados para o gateway correto (roteamento de origem).

O primeiro problema é um problema do Squid. Você pode usar o tcp_outgoing_address do Squid para definir o endereço IP de origem para o correto.

tcp_outgoing_address 128.0.x.x

A segunda questão é um problema de configuração do sistema. Você não deseja enviar pacotes com seu endereço de origem 128.0.x.x para o gateway 193.206.x.x e vice-versa. Isso é chamado source routing e é feito com iptables .

A maneira mais sofisticada de fazer isso é ter duas tabelas de roteamento. Um seria usado para pacotes com endereços de origem 128.0.x.x e teria uma rota padrão para o gateway 128.0.x.x. Vice versa para o outro. link

    
por 27.08.2011 / 17:41