Boa noite Senhores (as).


Trabalho em uma escola, temos em torno de 250 computadores + equipamentos particulares, tem muito tempo fazemos uso do Linux para o compartilhamento e controle do acesso a internet nesses ambientes. Devido a mudanças de planos de internet e para um melhor custo / benefício ( uma vez que somos uma instituição pública ) estudamos mudar nosso link para um de maior capacidade e também sair do plano doméstico ( que é o que estamos usando ainda hoje ) para um empresarial.


Nosso plano atual é um link da antiga GVT ( saudades ) atualmente VIVO de 35 MB. Contratamos um segundo Link da empresa NET ( Virtua Empresarial ) de 120 MB com a intenção de cancelar o plano antigo e basear nesse novo link, aqui começa meu desgosto.


Meu Squid funciona muito bem nesse link da VIVO que mencionei, vocês vão ver pelo script abaixo que não tem nada de mais, esta online nesse link a pelo menos 8 anos, o modem já foi trocado varias vezes assim como a distribuição usada e sempre foi tranquilo, reboot no Linux, recebe o endereço novo na placa de rede externa e bola pra frente.


No entanto nesse equipamento da NET não rola assim, quando conecto a maquina com o squid numa das saídas de rede do modem/roteador ( um Motorola ), reinicio a maquina, ela recebe o endereço novo, o resolv.conf é atualizado com o dns da NET, inicialmente tudo beleza. Navega até o momento em que os laboratórios entram na rede. A velocidade na resolução de nomes vai caindo, até o momento em que o próprio modem congela, mesmo um PC ligado diretamente nele não consegue acessar mais nada.

O próprio acesso SSH ao squid também não é mais possível, demora horrores para responder ( quando responde ), tudo isso se resolve no instante em que tiro o cabo de rede da placa externa do squid do modem, ou no intervalo de tempo em que a maquina esta reiniciando, tudo volta ao normal com o modem.


È gritante que tem algum tipo de gargalo em algum lugar, já vieram 3 técnicos diferentes aqui, todos me disseram que é o meu servidor, obvio que vão defender o deles assim como defendo o meu, mas nenhum me explica porque no link da VIVO ( modem doméstico ) funciona normalmente e no deles não.


O ultimo ensaio uma explicação de que a rede da VIVO e da NET são diferentes e tal, mas diferentes no que não soube explicar. O link não tem ip fixo nem nada, fora o fato de ser um plano empresarial e o aparelho ser, teoricamente, mais robusto não vejo diferença no funcionamento.


Já tentei deixar o modem em modo Bridge, funciona um pouco melhor,demora mais para travar, mas também trava depois de um tempo, e enquanto esta funcionando perde pacotes demais, inclusive até cheguei a travar o resolv.conf com um DNS alternativo alem do DNS da NET.


Encontrei em alguns grupos de discussão posts de pessoas com exatamente o mesmo problema que eu, alguns em ST Catarina, outros no Rio Grande do Sul, até o link onde o squid funcionava de boa era da GVT também, posts antigos de 2013 , 2014, mas nenhum com alguma resolução definitiva.


Duvida:


Sabem de algo com a Infra da NET que impeça o funcionamento de um proxy linux ? Tem algo que eu tenha de fazer a mais no meu servidor para que funcione na estrutura da NET? ou preciso mudar alguma coisa?


Esta claro para mim que isso foge do alcance de ação dos técnicos convencionais que vem fazer o atendimento, o ultimo me disse que passaria o caso para o DATACENTER, mas na boa, estamos pagando pelo link e não estamos usando.


Os meus scripts estão abaixo.


Estrutura
Modem/Roteador NetVirtua Empresas 120Mb ( Motorola ) -> enp5s0 ( Fedora 21 – Proxy( Squid 3.5) / Firewall ) -> eno1 - > LAN


DHCP/DNS -> WindowsServer 2008 R2


Scripts


#Firewall
#!/bin/bash


NET_IFACE='enp5s0'
LAN_IFACE='eno1'
LAN_RANGE='172.16.0.0/255.255.0.0'


echo "Iniciando pacotes..."
/sbin/modprobe ip_conntrack
/sbin/modprobe ipt_MASQUERADE
/sbin/modprobe ipt_LOG
/sbin/modprobe iptable_nat
/sbin/modprobe ipt_REDIRECT


#habilita o modulo de filtragem de string
modprobe ipt_string


echo 1 > /proc/sys/net/ipv4/ip_forward


iptables -F
iptables -Z
iptables -t nat -F
iptables -t filter -F
iptables -t filter -Z
iptables -t mangle -F
iptables -t mangle -Z
iptables -t nat -Z
iptables -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -P OUTPUT ACCEPT


echo "Carregando regras..."


# Port Scanners Ocultos
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j DROP


#Bloqueio trafego XMPP na saída
iptables -A FORWARD -p tcp --dport xmpp-client -j DROP
iptables -A INPUT -p tcp --dport 5223 -j DROP
iptables -A OUTPUT -p tcp --dport 5223 -j DROP


# Redirecionamento pacotes http para o squid


iptables -t nat -A PREROUTING -p tcp -s 172.16.0.0/16 --dport 80 -j REDIRECT --to-port 3129


###Faixa de liberados
range=172.16.0.
for ((i=1;i<=254;i++));
do
iptables -t nat -I PREROUTING -s $range$i -p tcp -i $LAN_IFACE --dport 80 -j ACCEPT
done
###Fim da faixa de liberados


#------------------------------------


#Laboratorios
rang=172.16.1
for ((k=0;k<=159;k++));
do
iptables -t nat -A PREROUTING -i eno1 -s $rang$k -p tcp --dport 3129 -j ACCEPT
done


#-------------------------------------


#bloqueio HTTP do resto que nao esta na lista acima
iptables -t nat -A PREROUTING -s 0/0 -i $LAN_IFACE -p tcp --dport 80 -j REDIRECT --to-port 3129


#Acesso ao DNS
iptables -A INPUT -p tcp --dport 53 -j ACCEPT


#Nao apagar!
iptables -t filter -A INPUT -i lo -s 0/0 -d 0/0 -j ACCEPT
iptables -t filter -A OUTPUT -o lo -s 0/0 -d 0/0 -j ACCEPT
iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT


#Compartilha a internet
iptables -t nat -A POSTROUTING -o $NET_IFACE -j MASQUERADE


#Nao apagar nada abaixo!
iptables -t filter -A INPUT -i $LAN_IFACE -m state --state NEW -j ACCEPT
iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT


#Controla o foward da enp1s0 para eno1
iptables -t filter -A FORWARD -d 0/0 -s $LAN_RANGE -o $NET_IFACE -j ACCEPT
iptables -t filter -A FORWARD -d $LAN_RANGE -s 0/0 -i $NET_IFACE -j ACCEPT
iptables -t filter -A INPUT -s $LAN_RANGE -d 0/0 -j ACCEPT
iptables -t filter -A OUTPUT -s $LAN_RANGE -d 0/0 -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -s $LAN_RANGE -d 0/0 -j ACCEPT




echo "Firewall iniciado!"


------------------------------------------------------------------------------------


Squid.Conf


http_port 3128 intercept
http_port 3129 intercept


#Nome do Squid, que aparece: generated by ....
visible_hostname HAMMERFALL_PROXY_SERVER


acl no_cache_domain dstdomain "/etc/squid/regras/no_cache_domain"
no_cache deny no_cache_domain


cache_mem 1640 MB
maximum_object_size_in_memory 128 KB
maximum_object_size 300 MB
minimum_object_size 100 KB


refresh_pattern \^ftp: 1440 20% 10080
refresh_pattern \^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320


cache_swap_high 75
cache_swap_low 60


access_log /var/log/squid/access.log squid
cache_dir ufs /var/cache/squid 10000 32 512


acl CONNECT method CONNECT


#acl manager proto cache_object#
acl localhost src
acl to_localhost dst
acl localnet src 172.16.0.0/16


acl SSL_ports port 443 563
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 901 # SWAT
acl purge method PURGE
acl sitesssl url_regex -i "/etc/squid/regras/sitesssl"


acl all src
always_direct allow all


#--------------------------------------------------#
# BANIMENTO DE MACADDRESS #
#--------------------------------------------------#
# ACRESCENTE NA LISTA #
#--------------------------------------------------#


acl HW_BANIDO arp "/etc/squid/listas/hw_banido"
http_access deny hw_banido


#--------------------------------------------------#
# FIM DO BANIMENTO #
#--------------------------------------------------#




#--------------------------------------------------#
# FAIXA DE IPs DE USO #
# DOS LABORATÓRIOS #
# #
#--------------------------------------------------#


acl IP_LAB src 172.16.1.0-172.16.1.159


#--------------------------------------------------#
# BLOQUEIO DE FAIXAS NAO UTILIZADAS #
#--------------------------------------------------#
#
#--------------------------------------------------#
# APARA REBARBAS DAS FAIXAS DE LABORATORIO
#--------------------------------------------------#


acl IP_REBARBA1 src 172.16.1.160-172.16.1.255
acl IP_REBARBA2 src 172.16.2.0-172.16.255.254
http_access deny IP_REBARBA1 IP_REBARBA2


#--------------------------------------------------#
# FIM DO BLOQUEIO O FAIXAS NAO UTILIZADAS
#--------------------------------------------------#


#-----------------------REGRAS---------------------#


#BLOQUEANDO URLs#
acl proibir_sites url_regex -i "/etc/squid/regras/bad_sites"
http_access deny proibir_sites


#BLOQUEANDO PALAVRAS#
acl proibir_palavras dstdom_regex "/etc/squid/regras/bad_palavras"
http_access deny proibir_palavras


#BLOQUEANDO EXTENCOES#
acl bad_ext urlpath_regex -i "/etc/squid/regras/bad_ext"
http_access deny bad_ext


#Email @ETEC e MSDN
acl libdominio dstdomain "/etc/squid/regras/liberainst"


#--Liberacao de lista de dominios institucionais---#
http_access allow libdominio
always_direct allow libdominio


#---Lista de Sites Liberados para acesso nos Labs--#
http_access allow sitesssl


#BLOQUEIOS EXISTENTES##
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge


http_access allow localnet
http_access allow localhost


http_access deny all




Log do Squid – Conectado no Link da VIVO ( Funciona )


017/09/12 17:00:10 kid1| Current Directory is /
2017/09/12 17:00:10 kid1| Starting Squid Cache version 3.4.12 for x86_64-unknown-linux-gnu...
2017/09/12 17:00:10 kid1| Process ID 3330
2017/09/12 17:00:10 kid1| Process Roles: worker
2017/09/12 17:00:10 kid1| With 16384 file descriptors available
2017/09/12 17:00:10 kid1| Initializing IP Cache...
2017/09/12 17:00:10 kid1| DNS Socket created at [::], FD 7
2017/09/12 17:00:10 kid1| DNS Socket created at 0.0.0.0, FD 8
2017/09/12 17:00:10 kid1| Adding domain home from /etc/resolv.conf
2017/09/12 17:00:10 kid1| Adding nameserver 192.168.25.1 from /etc/resolv.conf
2017/09/12 17:00:10 kid1| Logfile: opening log /var/log/squid/access.log
2017/09/12 17:00:10 kid1| WARNING: log name now starts with a module name. Use 'stdio:/var/log/squid/access.log'
2017/09/12 17:00:10 kid1| Unlinkd pipe opened on FD 13
2017/09/12 17:00:10 kid1| Store logging disabled
2017/09/12 17:00:10 kid1| Swap maxSize 10240000 + 1679360 KB, estimated 916873 objects
2017/09/12 17:00:10 kid1| Target number of buckets: 45843
2017/09/12 17:00:10 kid1| Using 65536 Store buckets
2017/09/12 17:00:10 kid1| Max Mem size: 1679360 KB
2017/09/12 17:00:10 kid1| Max Swap size: 10240000 KB
2017/09/12 17:00:10 kid1| Rebuilding storage in /var/cache/squid (dirty log)
2017/09/12 17:00:10 kid1| Using Least Load store dir selection
2017/09/12 17:00:10 kid1| Current Directory is /
2017/09/12 17:00:10 kid1| ERROR: No forward-proxy ports configured.
2017/09/12 17:00:10 kid1| ERROR: No forward-proxy ports configured.
2017/09/12 17:00:10 kid1| ERROR: No forward-proxy ports configured.
2017/09/12 17:00:10 kid1| ERROR: No forward-proxy ports configured.
2017/09/12 17:00:10 kid1| ERROR: No forward-proxy ports configured.
017/09/12 17:00:10 kid1| ERROR: No forward-proxy ports configured.
2017/09/12 17:00:10 kid1| ERROR: No forward-proxy ports configured.
2017/09/12 17:00:10 kid1| ERROR: No forward-proxy ports configured.
2017/09/12 17:00:10 kid1| Finished loading MIME types and icons.
2017/09/12 17:00:10 kid1| HTCP Disabled.
2017/09/12 17:00:10 kid1| commBind: Cannot bind socket FD 18 to [::1]: (99) Cannot assign requested address
2017/09/12 17:00:10 kid1| commBind: Cannot bind socket FD 19 to [::1]: (99) Cannot assign requested address
2017/09/12 17:00:10 kid1| ERROR: Failed to create helper child read FD: UDP[::1]
2017/09/12 17:00:10 kid1| Squid plugin modules loaded: 0
2017/09/12 17:00:10 kid1| Adaptation support is off.
2017/09/12 17:00:10 kid1| Accepting NAT intercepted HTTP Socket connections at local=[::]:3128 remote=[::] FD 16 flags=41
2017/09/12 17:00:10 kid1| Accepting NAT intercepted HTTP Socket connections at local=[::]:3129 remote=[::] FD 17 flags=41
2017/09/12 17:00:10 kid1| Store rebuilding is 22.22% complete
2017/09/12 17:00:10 kid1| Done reading /var/cache/squid swaplog (18004 entries)
2017/09/12 17:00:10 kid1| Finished rebuilding storage from disk.
2017/09/12 17:00:10 kid1| 15073 Entries scanned
2017/09/12 17:00:10 kid1| 2 Invalid entries.
2017/09/12 17:00:10 kid1| 0 With invalid flags.
2017/09/12 17:00:10 kid1| 12156 Objects loaded.
2017/09/12 17:00:10 kid1| 0 Objects expired.
2017/09/12 17:00:10 kid1| 2917 Objects cancelled.
2017/09/12 17:00:10 kid1| 0 Duplicate URLs purged.
2017/09/12 17:00:10 kid1| 0 Swapfile clashes avoided.
2017/09/12 17:00:10 kid1| Took 0.09 seconds (142107.29 objects/sec).
2017/09/12 17:00:10 kid1| Beginning Validation Procedure
2017/09/12 17:00:10 kid1| Completed Validation Procedure
2017/09/12 17:00:10 kid1| Validated 12156 Entries
2017/09/12 17:00:10 kid1| store_swap_size = 6142228.00 KB
2017/09/12 17:00:11 kid1| storeLateRelease: released 0 objects




Log do Squid – Conectado no Link da NET( Não Funciona )


017/09/11 14:56:27 kid1| Current Directory is /
2017/09/11 14:56:27 kid1| Starting Squid Cache version 3.4.12 for x86_64-unknown-linux-gnu...
2017/09/11 14:56:27 kid1| Process ID 1822
2017/09/11 14:56:27 kid1| Process Roles: worker
2017/09/11 14:56:27 kid1| With 16384 file descriptors available
2017/09/11 14:56:27 kid1| Initializing IP Cache...
2017/09/11 14:56:27 kid1| DNS Socket created at [::], FD 7
2017/09/11 14:56:27 kid1| DNS Socket created at 0.0.0.0, FD 8
2017/09/11 14:56:27 kid1| Adding nameserver 189.5.0.64 from /etc/resolv.conf
2017/09/11 14:56:27 kid1| Adding nameserver 189.5.0.53 from /etc/resolv.conf
2017/09/11 14:56:27 kid1| Logfile: opening log /var/log/squid/access.log
2017/09/11 14:56:27 kid1| WARNING: log name now starts with a module name. Use 'stdio:/var/log/squid/access.log'
2017/09/11 14:56:27 kid1| Unlinkd pipe opened on FD 13
2017/09/11 14:56:27 kid1| Store logging disabled
2017/09/11 14:56:27 kid1| Swap maxSize 10240000 + 1679360 KB, estimated 916873 objects
2017/09/11 14:56:27 kid1| Target number of buckets: 45843
2017/09/11 14:56:27 kid1| Using 65536 Store buckets
2017/09/11 14:56:27 kid1| Max Mem size: 1679360 KB
2017/09/11 14:56:27 kid1| Max Swap size: 10240000 KB
2017/09/11 14:56:27 kid1| Rebuilding storage in /var/cache/squid (dirty log)
2017/09/11 14:56:27 kid1| Using Least Load store dir selection
2017/09/11 14:56:27 kid1| Current Directory is /
2017/09/11 14:56:27 kid1| ERROR: No forward-proxy ports configured.
2017/09/11 14:56:27 kid1| ERROR: No forward-proxy ports configured.
2017/09/11 14:56:27 kid1| ERROR: No forward-proxy ports configured.
2017/09/11 14:56:27 kid1| ERROR: No forward-proxy ports configured.
2017/09/11 14:56:27 kid1| ERROR: No forward-proxy ports configured.
2017/09/11 14:56:27 kid1| ERROR: No forward-proxy ports configured.
017/09/11 14:56:27 kid1| ERROR: No forward-proxy ports configured.
2017/09/11 14:56:27 kid1| ERROR: No forward-proxy ports configured.
2017/09/11 14:56:27 kid1| Finished loading MIME types and icons.
2017/09/11 14:56:27 kid1| HTCP Disabled.
2017/09/11 14:56:27 kid1| commBind: Cannot bind socket FD 18 to [::1]: (99) Cannot assign requested address
2017/09/11 14:56:27 kid1| commBind: Cannot bind socket FD 19 to [::1]: (99) Cannot assign requested address
2017/09/11 14:56:27 kid1| ERROR: Failed to create helper child read FD: UDP[::1]
2017/09/11 14:56:27 kid1| Squid plugin modules loaded: 0
2017/09/11 14:56:27 kid1| Adaptation support is off.
2017/09/11 14:56:27 kid1| Accepting NAT intercepted HTTP Socket connections at local=[::]:3128 remote=[::] FD 16 flags=41
2017/09/11 14:56:27 kid1| Accepting NAT intercepted HTTP Socket connections at local=[::]:3129 remote=[::] FD 17 flags=41
2017/09/11 14:56:27 kid1| Store rebuilding is 30.57% complete
2017/09/11 14:56:27 kid1| Done reading /var/cache/squid swaplog (13084 entries)
2017/09/11 14:56:27 kid1| Finished rebuilding storage from disk.
2017/09/11 14:56:27 kid1| 12252 Entries scanned
2017/09/11 14:56:27 kid1| 0 Invalid entries.
2017/09/11 14:56:27 kid1| 0 With invalid flags.
2017/09/11 14:56:27 kid1| 11420 Objects loaded.
2017/09/11 14:56:27 kid1| 0 Objects expired.
2017/09/11 14:56:27 kid1| 832 Objects cancelled.
2017/09/11 14:56:27 kid1| 0 Duplicate URLs purged.
2017/09/11 14:56:27 kid1| 0 Swapfile clashes avoided.
2017/09/11 14:56:27 kid1| Took 0.07 seconds (162172.14 objects/sec).
2017/09/11 14:56:27 kid1| Beginning Validation Procedure
2017/09/11 14:56:28 kid1| Completed Validation Procedure
2017/09/11 14:56:28 kid1| Validated 11420 Entries
2017/09/11 14:56:28 kid1| store_swap_size = 6143544.00 KB
2017/09/11 14:56:28 kid1| storeLateRelease: released 0 objects