squid especifica a interface de rede de saída

3

Eu tenho uma máquina Debian Linux com muitas interfaces de rede (venet0: 1 to venet0: 5) executando o Squid. Se eu me conectar à interface venet0: 2 o squid usa o venet0: 0 para o tráfego de saída, mas eu quero que o Squid use a mesma interface de rede para conexões. Então, se eu me conectar ao endereço IP para venet0: 1, o proxy também deve usar a mesma interface para o tráfego de saída.

Atualmente, uso a seguinte configuração:

http_port 200
forwarded_for off
uri_whitespace encode
visible_hostname localhost
via off
collapsed_forwarding on
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/users
auth_param basic children 5
auth_param basic realm Proxy
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
acl ncsa_users proxy_auth REQUIRED
access_log none
cache_store_log none
cache_log /dev/null
acl all src all
http_access allow ncsa_users
header_access From deny all
header_access Referer deny all
header_access Server deny all
header_access User-Agent allow all
header_access WWW-Authenticate deny all
header_access Link deny all
header_access Accept-Charset deny all
header_access Accept-Encoding deny all
header_access Accept-Language deny all
header_access Content-Language deny all
header_access Mime-Version deny all

Eu testei o tutorial de link mas não acho Eu posso usá-lo porque eu autentico usuários com ncsa e não com endereços IP de origem.

Existe alguma possibilidade para que o squid use a interface de rede correta? Seria bom se eu pudesse evitar regras acl porque isso exigiria mudanças de configuração a cada mudança de um endereço IP.

    
por user2626702 05.01.2014 / 15:02

3 respostas

3

A melhor solução possível é criar uma acl para cada interface, fazer com que todas as solicitações que chegam àquela interface pertençam a esse grupo e redirecionar esse grupo para uma interface de saída específica.

Exemplo:
O servidor X possui os seguintes IPs:

  • 10.0.0.1
  • 10.0.0.2
  • 10.0.0.3

Portanto, o arquivo squid.conf deve ser algo como:

acl 10_0_0_1 localip 10.0.0.1
tcp_outgoing_address 10.0.0.1 10_0_0_1 

acl 10_0_0_2 localip 10.0.0.2
tcp_outgoing_address 10.0.0.2 10_0_0_2 

acl 10_0_0_3 localip 10.0.0.3
tcp_outgoing_address 10.0.0.3 10_0_0_3

Em seguida, qualquer solicitação feita para "10.0.0.1" usará a interface "10.0.0.1", qualquer solicitação feita para "10.0.0.2" usará a interface "10.0.0.2" e assim por diante.

Eu sei que essa é uma pergunta antiga, mas como ainda é o primeiro resultado da pesquisa do Google, ainda é válido postar a resposta correta.

    
por 04.06.2016 / 19:52
1

Ele está configurado no acl, então depois da linha:

acl youracl src IP.Ad.Res.Of venet:0:2

adicione algo do seguinte:

tcp_outgoing_address 192.168.1.1 youracl

    
por 05.01.2014 / 15:52
0

Você precisa de algo semelhante ao link listado, mas de uma abordagem diferente. Suponha que VEIP1 signifique o endereço IP de venet0: 1.

acl ncsa_users proxy_auth NECESSÁRIO http_access deny! ncsa_users

acl ve1acl localip VEIP1 http_access allow ve1acl ncsa_users tcp_outgoing_address VEIP1 ve1acl

acl ve2acl localip VEIP2 http_access allow ve2acl ncsa_users tcp_outgoing_address VEIP2 ve2acl

(Eu acho que você pode descobrir o resto do padrão.)

Além disso, acho que você terá que remover a linha http_access allow ncsa_users que você tinha acima porque agora queremos que o usuário seja autenticado e conectado a um desses IPs específicos.

P.S. Eu nunca configurei o squid, então não estou certo de que esta é a resposta completa. Mas lendo os documentos, me sinto confortável em dizer que esta é a direção certa. Boa sorte, deixa eu saber como vai ser!

    
por 20.01.2014 / 15:08