Proxy de SQUID de ligação com VPN no namespace da rede

0

Eu tenho o proxy squid instalado no meu servidor Ubuntu, ele funciona na configuração padrão. Eu também tenho proxy1 namespace de rede com openvpn rodando dentro (eu uso script como este para a criação de namespace de rede, link e, em seguida, execute ip netns exec proxy1 openvpn --daemon.. )

É possível executar o squid de forma que ele use a conexão vpn em execução no namespace de rede especificado, já que é tcp_outgoing_something?

Idealmente eu gostaria de ter várias conexões vpn ao mesmo tempo em namespaces distintos, por exemplo, usa vpn em usaNamespace e alemanha vpn em germanyNamespace e para cada definir uma porta específica para que myproxyserver: usaPort usará vpn e myproxyserver: o germanyPort usará Alemanha vpn. É possível?

    
por Kasheftin 10.01.2017 / 20:44

1 resposta

2

Seria possível executar o squid em seu namespace de rede se o systemd permitisse a execução de processos em namespaces de rede nomeados. Veja link , parece que isso não é uma correção. No entanto, existem algumas soluções listadas aqui.

Como alternativa, você pode executar o squid no namespace de rede padrão e usar tcp_outgoing_address definido como o endereço IP de um encapsulamento no seu namespace de rede. Em seguida, use o roteamento de política (regra de IP) para definir a rota padrão por meio do namespace vpn / network para o tráfego originado desse endereço IP.

Você não precisa realmente de um namespace de rede; contanto que sua VPN não substitua sua principal rota padrão, você pode usar o roteamento de política para definir uma rota padrão através da VPN para o tráfego que vem do seu endereço IP na VPN. Isso funciona bem se você tiver o mesmo endereço IP sempre na VPN.

por exemplo,

systemctl start openvpn

edite o arquivo / etc / iproute2 / rt_tables:

...
101     vpn1 

então

ip route add default via 192.168.0.1 table vpn1 (# where 192.168.0.1 is the remote gateway IP on the VPN)
ip rule add from 192.168.0.99 lookup vpn1 (# where 192.168.0.99 is the local IP address on the VPN)

edite o /etc/squid3/squid.conf:

...
tcp_outgoing_address 192.168.0.99 [[!]aclname] ...
...

(Use squids acls para selecionar o tráfego que você quer ir através da VPN).

Você pode usar a mesma técnica com um namespace de rede nomeado, o que permite que isso funcione mesmo nos endereços IP locais e remotos na alteração da VPN. Nesse caso, você precisa configurar o nat / masquerading no namespace e um túnel entre o namespace padrão e o namespace da VPN. Nesse caso, o encapsulamento terá endereços IP estáticos atribuídos, de modo que funcionará em torno dos endereços IP dinâmicos atribuídos pela VPN.

    
por 04.06.2017 / 03:21