Aumentar performance do WhatsApp

Iniciado por lucascatani, 12 de Novembro de 2018, 20:55

tópico anterior - próximo tópico

lucascatani

Boa noite. Tenho uma rede com aproximadamente 200 usuários em rede wifi, onde enfrento por vezes um problema no whatsapp. O celular fica com a mensagem "conectando" e as vezes demora 20 ou 60 segundos para conectar, e as mensagens demoram para ser enviadas e recebidas.

UBUNTU 12.04
SQUID 3 (TRANSPARENTE)

Segue meu rc.firewall e squid.conf

#!/bin/bash

IPEXTERNO="187.187.15.194"
MODEM="192.168.1.1"
PLACAWAN="eth2"
PLACAPUBLICA="eth0"
REDEPUBLICA="10.1.0.0/23"


############################################
# Carregando modulos
############################################

modprobe ip_tables
modprobe iptable_nat
modprobe ip_conntrack_ftp
#modprobe ipt_string

############################################
# LIMPANDO AS TABELAS
############################################

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

################################################
# Habilitando o NAT E FILTROS
################################################

iptables -t nat -A POSTROUTING -o $PLACAWAN -j MASQUERADE
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
iptables -I FORWARD -p icmp -j ACCEPT

################################################################
#                  Liberando a interface lo                    #
################################################################

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

################################################################
#               Bloqueando o que entra no servidor
################################################################

iptables -A INPUT -p tcp --dport 22223 -j ACCEPT
iptables -A INPUT -i $PLACAWAN -j LOG --log-prefix "INPUT: "
iptables -A INPUT -i $PLACAWAN -j DROP

################################################################
#       Filtrando o que vai para a internet - rede publica     #
################################################################

iptables -A FORWARD -o $PLACAWAN -s $REDEPUBLICA -p tcp -m multiport --dports 37,80,443,8080,25,110,587,465,995,1650,1867,22224 -j ACCEPT
iptables -A FORWARD -o $PLACAWAN -s $REDEPUBLICA -p tcp -m multiport --dports 3306,5900,5931,1935,55002,55003,55000,55001 -j ACCEPT
iptables -A FORWARD -o $PLACAWAN -s $REDEPUBLICA -p tcp -m multiport --dports 5222:5228 -j ACCEPT
iptables -A FORWARD -o $PLACAWAN -s $REDEPUBLICA -j LOG --log-prefix "INTERNET PUBLICA - SAINDO: "
iptables -A FORWARD -o $PLACAWAN -s $REDEPUBLICA -p udp --dport 53 -j ACCEPT
iptables -A FORWARD -o $PLACAWAN -s $REDEPUBLICA -j DROP

################################################
# Redirecionando trãfego para o squid
################################################

iptables -t nat -A PREROUTING -s $REDEINTERNA -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -s $REDEPUBLICA -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -s 192.168.0.243 -p tcp --dport 80 -j REDIRECT --to-port 3128


# controle de acesso por DNS
/sbin/iptables -I PREROUTING -t nat -s 192.168.0.0/16 -p udp --dport 53 -j DNAT --to-dest 172.16.0.2:53
/sbin/iptables -I PREROUTING -t nat -s 10.0.0.0/8 -p udp --dport 53 -j DNAT --to-dest 172.16.0.1:53

# acesso ao proxy e wpad.dat
/sbin/iptables -I PREROUTING -t nat -d 192.168.0.254 -p tcp --dport 80 -j ACCEPT
/sbin/iptables -I PREROUTING -t nat -d 192.168.0.254 -p tcp --dport 3128 -j ACCEPT
/sbin/iptables -I INPUT 2 -d 192.168.0.254 -p tcp --dport 80 -j ACCEPT
/sbin/iptables -I INPUT 3 -d 192.168.0.254 -p tcp --dport 3128 -j ACCEPT

# aceita ping na WAN
/sbin/iptables -I INPUT 4 -i $PLACAWAN -p icmp --icmp-type echo-request -j ACCEPT

# redir
/sbin/iptables -I INPUT 4 -p tcp --dport 8080 -j ACCEPT

# controle de state
#/sbin/iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#/sbin/iptables -I FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

#aumenta o numero de conexoes
echo 524288 > /proc/sys/net/nf_conntrack_max




http_port 3128 transparent
visible_hostname firewall
cache_mgr informatica
error_directory /usr/share/squid3/errors/pt-br

hierarchy_stoplist cgi-bin ?
cache_mem 2048 MB
maximum_object_size_in_memory 512 KB
maximum_object_size 150 MB
minimum_object_size 1 MB
# cache_dir ufs /var/cache/squid3 30000 16 256
# cache_dir ufs null /null

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

access_log /var/log/squid3/access.log

dns_nameservers 127.0.0.1
dns_v4_first on

acl localhost src 127.0.0.1/32
acl redepublica src 10.1.0.0/23

acl terminais src 192.168.0.243
acl ipsliberados src "/etc/squid3/ips_liberados"


acl manager proto cache_object
http_access allow manager localhost
http_access deny manager

acl purge method PURGE
http_access allow purge localhost
http_access deny purge

acl Safe_ports port 21          # ftp
acl Safe_ports port 70          # gopher
acl Safe_ports port 80          # http
acl Safe_ports port 210         # wais
acl Safe_ports port 280         # http-mgmt
acl Safe_ports port 443         # https
acl Safe_ports port 488         # gss_http
acl Safe_ports port 563         #
acl Safe_ports port 591         # filemaker
acl Safe_ports port 631         # cups
acl Safe_ports port 777         # multiling http
acl Safe_ports port 873         # rsync
acl Safe_ports port 901         # swat
acl Safe_ports port 1025-65535  # unregistered ports
http_access deny !Safe_ports

acl connect method CONNECT
acl SSL_ports port 443          # https
acl SSL_ports port 543          # hntps
acl SSL_ports port 873          # rsync
http_access deny connect !SSL_ports


acl sitesbloqueadosdominio dstdomain "/etc/squid3/sites_bloqueados_dominio"
http_access allow sitesbloqueadosdominio ipsliberados
http_access deny sitesbloqueadosdominio terminais
http_access deny sitesbloqueadosdominio redepublica

acl palavrasbloqueadas url_regex -i "/etc/squid3/palavras_bloqueadas"
http_access deny palavrasbloqueadas terminais
http_access deny palavrasbloqueadas redepublica

acl extensoesbloqueadas urlpath_regex -i "/etc/squid3/extensoes_bloqueadas"
http_access allow extensoesbloqueadas ipsliberados
http_access deny extensoesbloqueadas terminais
http_access deny extensoesbloqueadas redepublica

acl nocachedomain dstdomain "/etc/squid3/no_cache"
no_cache deny nocachedomain

http_access allow redepublica
http_access allow terminais
http_access allow localhost
http_access deny all



Abaixo a tabela conntrack


root@firewall:~# ./conntrack-top2

Current connection count:        42214
Connections max:                524288

Top TCP
Source              Num    Destination         Num
10.1.1.7           3052    74.125.143.188     1757
10.1.1.101         2555    66.102.1.188       1747
10.1.1.145         1633    64.233.162.188     1706
10.1.1.20          1095    172.217.194.188    1685
10.1.1.170         1007    52.97.71.178       1516
10.1.0.57           824    52.97.67.82        1433
187.103.236.194     714    52.97.67.66        1146
10.1.1.136          581    52.97.71.50        1112
10.1.1.207          542    52.97.67.210       1064
10.1.0.84           519    52.97.67.98         943

Top UDP
Source              Num    Destination         Num
187.103.236.194      99    10.1.1.254          338
127.0.0.1            52    187.0.0.4            55
10.1.0.248           39    127.0.0.1            52
10.1.1.98            30    204.74.101.1         22
10.1.0.155           25    204.69.234.1         22
10.1.0.131           18    10.1.1.255           10
10.1.0.88            18    192.168.0.254         6
10.1.0.179           17    8.8.8.8               5
10.1.0.50            15    192.168.0.253         4
10.1.0.48            15    8.8.4.4     


Script para listar as conexoes no conntrack retirado de: https://github.com/ragnar-johannsson/conntrack-top/blob/master/conntrack-top

Se precisar mais logs, solicitar. Obrigado.


zekkerj

Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

lucascatani

Citação de: zekkerj online 12 de Novembro de 2018, 21:23
Vc usa DNS interno ou externo?
Interno

Segue:

/etc/bind9/named.conf.local

zone "dominio.publico" {
        type master;
        file "/etc/bind/db.dominio.wifi";
};

zone "dominio.local" {
        type master;
        file "/etc/bind/db.dominio.local";
};


/etc/bind/db.dominio.wifi

$TTL 3D
@ IN SOA firewall.dominio.publico. root.dominio.publico. (
2014070702 8H 2H 4W 1D )
@ NS firewall.dominio.publico.
dominio.publico. A 10.1.1.254
firewall A 10.1.1.254
www A 10.1.1.254
sarg A 10.1.1.254
wpad A 192.168.0.254


/etc/bind/named.conf.options

options {
        directory "/var/cache/bind";

         forwarders {

                187.0.0.4;
         };


        listen-on port 53 { 127.0.0.1; 192.168.0.254; 10.1.1.254; };

        allow-recursion { 127.0.0.1; 192.168.0.0/24; 10.1.1.0/24; 172.16.0.0/12; };
   
        auth-nxdomain no;    # conform to RFC1035
        listen-on-v6 { any; };
};



zekkerj

Imagino que as estações estão recebendo a configuração de DNS do DHCP, correto? Confirmou que estão recebendo seu servidor (e apenas ele)?

Já fez alguma medição de desempenho desse servidor DNS local?
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

lucascatani

#4
Citação de: zekkerj online 12 de Novembro de 2018, 23:03
Imagino que as estações estão recebendo a configuração de DNS do DHCP, correto? Confirmou que estão recebendo seu servidor (e apenas ele)?

Já fez alguma medição de desempenho desse servidor DNS local?

Estão recebendo via dhcp, e apenas dele.

Para a análise de desempenho direto no console do servidor

dig correiodopovo.com.br +nssearch
SOA ns1.correiodopovo.com.br. emachado.correiodopovo.com.br. 2013101105 43200 600 1209600 21600 from server 189.16.116.5 in 8 ms.
SOA ns1.correiodopovo.com.br. emachado.correiodopovo.com.br. 2013101105 43200 600 1209600 21600 from server 104.41.61.22 in 22 ms.


dig ramones.com +nssearch
SOA ns07.domaincontrol.com. dns.jomax.net. 2016090800 28800 7200 604800 600 from server 173.201.71.4 in 134 ms.
SOA ns07.domaincontrol.com. dns.jomax.net. 2016090800 28800 7200 604800 600 from server 216.69.185.4 in 143 ms.


root@firewall:~# while true; do dig www.facebook.com | grep time; sleep 2; done
;; Query time: 0 msec
;; Query time: 0 msec
;; Query time: 0 msec
;; Query time: 0 msec
;; Query time: 0 msec
;; Query time: 0 msec
;; Query time: 0 msec
;; Query time: 0 msec
;; Query time: 0 msec
;; Query time: 0 msec



Em uma estação:

C:\Users\Administrador>ping facebook.com

Disparando facebook.com [157.240.12.35] com 32 bytes de dados:
Resposta de 157.240.12.35: bytes=32 tempo=17ms TTL=55
Resposta de 157.240.12.35: bytes=32 tempo=17ms TTL=55
Resposta de 157.240.12.35: bytes=32 tempo=17ms TTL=55
Resposta de 157.240.12.35: bytes=32 tempo=17ms TTL=55

Estatísticas do Ping para 157.240.12.35:
    Pacotes: Enviados = 4, Recebidos = 4, Perdidos = 0 (0% de
             perda),
Aproximar um número redondo de vezes em milissegundos:
    Mínimo = 17ms, Máximo = 17ms, Média = 17ms


zekkerj

Instale o WhatsApp Web em um desktop, veja se a lentidão ocorre nele. [Espero que sim.]
Daí, instale o Wireshark nesse mesmo desktop, tente capturar o tráfego do whatsapp web e filtrar, deixando apenas as consultas DNS, e o tráfego específico do whatsapp. Facilita se nessa hora vc fechar todos os navegadores.
Use o próprio wireshark pra avaliar a temporização das consultas DNS e abertura de conexões.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

lucascatani

#6
Vou testar em horário de pico.

Eu ainda estou encucado com o número de conexões estabelecidas em uma rede não tão grande (conntrack).

zekkerj

Citação de: lucascatani online 12 de Novembro de 2018, 23:58
Vou testar em horário de pico.
Não sei se é boa ideia começar o teste no horário de pico. Talvez seja bom fazer primeiro em um horário alternativo, até mesmo pra ter uma linha de base de como deve ser o desempenho da comunicação.

CitarEu ainda estou encucado com o número de conexões estabelecidas em uma rede não tão grande (conntrack).
Aquele relatório, do jeito que está, pode ser tudo ou não ser nada, pq ele parece estar juntando todas as conexões da mesma origem pro mesmo destino, sem levar em conta as portas usadas. Seria bom também se esse relatório trouxesse também o nome DNS associado com os endereços públicos.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D