Adicionando um proxy transparente

Aproveitando o compartilhamento da conexão, você pode melhorar um pouco o acesso adicionando um proxy transparente com o Squid. A configuração é simples e você ganha um cache para as páginas e arquivos já acessados, otimizando a conexão.

O primeiro passo é configurar o servidor Linux com duas placas de rede para compartilhar a conexão, como vimos nos tópicos anteriores. O proxy transparente é apenas um add-on, que complementa o compartilhamento da conexão
via NAT.

Com tudo funcionando, o próximo passo é instalar o Squid, o que é feito através da instalação do pacote “squid”:

$ sudo apt-get install squid

Com o pacote instalado, o próximo passo é configurar o arquivo “/etc/squid/squid.conf“. Apague (ou renomeie) o arquivo original e crie outro com o seguinte conteúdo:

http_port 3128 transparent
visible_hostname gdh

cache_mem 64 MB
maximum_object_size_in_memory 128 KB
maximum_object_size 512 MB
cache_dir ufs /var/spool/squid 4096 16 256
cache_access_log /var/log/squid/access.log

acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563
acl Safe_ports port 80 21 280 443 488 563 591 777 1025-65535
acl purge method PURGE
acl CONNECT method CONNECT

http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

acl redelocal src 192.168.1.0/24
http_access allow localhost
http_access allow redelocal

http_access deny all

A primeira linha indica a porta utilizada pelo Squid (3128) e que ele deve operar em modo transparente (transparent). A segunda indica o nome do servidor (gdh), que você deve substituir pelo nome do seu.

As quatro linhas seguintes indicam a configuração do cache. O Squid trabalha com dois caches distintos, um cache mais rápido, feito na memória RAM, e outro mais lento (porém maior) feito usando espaço do HD.

O “cache_mem 64 MB” indica o tamanho do cache na memória RAM (é recomendável que você utilize no máximo 1/3 da memória total instalada), enquanto o “4096” na linha “cache_dir ufs /var/spool/squid 4096 16 256” indica o
tamanho do cache que será feito no HD, em megabytes.

A linha “acl redelocal src 192.168.1.0/24” indica a faixa de endereços e a máscara utilizada na sua rede local (o /24 equivale à mascara 255.255.255.0). Combinada com as regras “http_access allow redelocal” e “http_access
deny all” ela faz com que apenas micros da rede local possam utilizar o proxy, afastando qualquer possibilidade de que ele fique aberto para a Internet, independentemente da configuração do firewall.

A linha maximum_object_size 512 MB indica o tamanho máximo de arquivo que será armazenado no cache (arquivos maiores do que isso serão ignorados), o que evita que arquivos muito grandes, (como imagens ISO) que você vai
baixar apenas uma vez, desperdicem espaço no cache.

Depois de terminar, reinicie o Squid para que a configuração entre em vigor:

# /etc/init.d/squid restart

Com isso, a configuração do servidor proxy está pronta, mas falta um passo igualmente importante, que é ativar a regra de firewall que faz com que os acessos destinados à porta 80, provenientes da rede local sejam
encaminhados para o Squid. Sem isso, as requisições continuam sendo roteadas diretamente, sem passarem pelo proxy:

$ sudo iptables -t nat -A PREROUTING -i eth0 -p tcp –dport 80 -j REDIRECT –to-port 3128

Note que o “eth0” no comando especifica a interface de rede local, que deve ser alterada de acordo com a sua configuração. Este comando (sem o sudo deve ser colocado no final do arquivo “/etc/rc.local”, logo depois dos
comandos para compartilhar a conexão, como em:

#!/bin/sh

# Compartilha a conexão
modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

iptables -t nat -A PREROUTING -i eth0 -p tcp –dport 80 -j REDIRECT –to-port 3128

# Bloqueia pings e protege contra IP spoofing e pacotes inválidos
iptables -A INPUT -p icmp –icmp-type echo-request -j DROP
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
iptables -A INPUT -m state –state INVALID -j DROP

# Abre para a interface de loopback e para a interface de rede local
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth0 -j ACCEPT

# Abre para as portas especificadas
iptables -A INPUT -p tcp –dport 22 -j ACCEPT

# Bloqueia as demais conexões, deixando passar apenas pacotes de resposta
iptables -A INPUT -p tcp –syn -j DROP

Depois de ativar a regra de firewall, você pode testar o proxy navegando em algum dos micros da rede local (que use o servidor como gateway) e verificar o conteúdo do arquivo “/var/log/squid/access.log” no
servidor. Conforme as requisições passam pelo proxy, o arquivo é alimentado com um grande volume de informações sobre as conexões realizadas.

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X