Squid - WoW e outros MMO não funcionam

Iniciado por bitetti, 14 de Dezembro de 2011, 08:47

tópico anterior - próximo tópico

bitetti

Estou usando o Ubuntu 11.10

A navegação esta ok, mas nas máquinas Windows o cliente do WoW e de outros MMO não estão conectando.
Na verdade o launcher do WoW consegue abrir informações de página, mas na hora de conectar ao jogo ele não acessa. Os outros launcers nem conseguem obter informações de update!

Desisntalei o Firestarter que veio com ele e to usando apenas o iptables
Faço os teste depois de um iptables -F
#!/bin/bash
#
# Script criado por Igor Garcia


# Local para o executavel do IPTables
IPT=`which iptables`;

# Interface da rede INTERNA
IF_INTERNA="eth0";

# Interface da rede EXTERNA
IF_EXTERNA="eth1";

# Definição da rede interna
REDE_INTERNA="192.168.1.0/24"


fw_start()
{
  #ativa o roteamento dinamico
  echo 1 > /proc/sys/net/ipv4/ip_forward
  echo 1 > /proc/sys/net/ipv4/ip_dynaddr


  # ================ POLITICAS PADRAO ===================
  $IPT -t filter -P INPUT       DROP
  $IPT -t filter -P FORWARD     DROP
  $IPT -t filter -P OUTPUT      ACCEPT
  $IPT -t nat    -P PREROUTING  ACCEPT
  $IPT -t nat    -P POSTROUTING ACCEPT
  $IPT -t nat    -P OUTPUT      ACCEPT
  $IPT -t mangle -P PREROUTING  ACCEPT
  $IPT -t mangle -P POSTROUTING ACCEPT
  $IPT -t mangle -P OUTPUT      ACCEPT
  $IPT -t mangle -P INPUT       ACCEPT
  $IPT -t mangle -P FORWARD     ACCEPT

  # Cria chain com regras de segurança
  $IPT -N BLOCK
  $IPT -A BLOCK -p icmp --icmp-type echo-request -j DROP
  $IPT -A BLOCK -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
  $IPT -A BLOCK -p tcp -m limit --limit 1/s -j ACCEPT
  $IPT -A BLOCK -p tcp --tcp-flags SYN,ACK,FIN,RST SYN -m limit --limit 1/s -j ACCEPT
  $IPT -A BLOCK -m unclean -j DROP
  $IPT -A BLOCK -m state --state ESTABLISHED,RELATED -j ACCEPT
  $IPT -A BLOCK -j LOG --log-prefix "FW_ALERT: "
  $IPT -A BLOCK -j DROP

  # Muda a prioridade dos pacotes (Type Of Service) para agilizar as coisas
  $IPT -t mangle -A OUTPUT -o $IF_EXTERNA -p tcp -m multiport --dports 21,22,80,6667 -j TOS --set-tos 0x10

  # Libera todo o trafego local
  $IPT -t filter -A INPUT   -i lo -j ACCEPT
  $IPT -t filter -A INPUT   -i $IF_INTERNA -j ACCEPT
  $IPT -t filter -A FORWARD -i $IF_INTERNA -j ACCEPT
# Libera só FTP, SSH e WEB
  $IPT -t filter -A INPUT -i $IF_EXTERNA -p tcp -m multiport --dports 21,22,80,6667 -j ACCEPT

  # Libera a conexao para a rede interna
  $IPT -t nat -A POSTROUTING -s $REDE_INTERNA -j MASQUERADE

  # Cria um NAT para o SSH de uma maquina da rede interna
  $IPT -t filter -A FORWARD    -p tcp -d 0/0 --dport 2222 -j ACCEPT
  $IPT -t nat    -A PREROUTING -p tcp -d 0/0 --dport 2222 -j DNAT --to 192.168.1.2:22

  # Regras para evitar packet flood
  $IPT -A INPUT   -j BLOCK
  $IPT -A FORWARD -j BLOCK
}

fw_stop()
{
  $IPT -t filter -P INPUT       ACCEPT
  $IPT -t filter -P FORWARD     ACCEPT
  $IPT -t filter -P OUTPUT      ACCEPT
  $IPT -t nat    -P PREROUTING  ACCEPT
  $IPT -t nat    -P POSTROUTING ACCEPT
  $IPT -t nat    -P OUTPUT      ACCEPT
  $IPT -t mangle -P PREROUTING  ACCEPT
  $IPT -t mangle -P POSTROUTING ACCEPT
  $IPT -t mangle -P OUTPUT      ACCEPT
  $IPT -t mangle -P INPUT       ACCEPT
  $IPT -t mangle -P FORWARD     ACCEPT
  $IPT -t filter -F
  $IPT -t nat    -F
  $IPT -t mangle -F
  $IPT -t filter -X
  $IPT -t nat    -X
  $IPT -t mangle -X
  $IPT -t filter -Z
  $IPT -t nat    -Z
  $IPT -t mangle -Z
}

fw_usage()
{
  echo
  echo "$0 (start | stop | restart | clear)"
  echo
  echo "start   - Ativa o firewall"
  echo "stop    - Desativa o firewall"
  echo "restart - Reativa o firewall"
  echo "clear   - Limpa os contatores"
}

fw_clear()
{
  $IPT -t filter -Z
  $IPT -t nat    -Z
  $IPT -t mangle -Z
}

case $1 in

  start)
     fw_start;
  ;;

  stop)
     fw_stop;
  ;;

  restart)
    fw_stop;
    fw_start;
  ;;

  clear)
     fw_clear;
  ;;
  *)
     fw_usage;
     exit;

  ;;

esac

 

zekkerj

Olá bitetti,

Eu vejo alguns erros nesse firewall, e algumas coisas que não são erros, mas que eu teria feito diferente. Mas não vejo o que tem o squid a ver com seu problema.

As regras da cadeia de controle de bloqueio não estão legais. Por exemplo, na segunda e terceira regras, vc trata dos pacotes de "echo-request" (pedidos de ping); só que na primeira regra vc os bloqueia completamente, e logo após vc os libera com limite de 1 por segundo. A primeira regra faz com que a segunda não funcione, já que vc bloqueia todos os pedidos de ping. Se sua intenção é limitar os pings, deve inverter a ordem dessas regras. Se a intenção é bloquear, a segunda regra é desnecessária.

Logo em seguida dessas regras há uma regra "-p tcp -m limit --limit 1/s -j ACCEPT". Eu imagino que sua intenção seria limitar a quantidade de pedidos de conexão vindos de fora, mas veja que vc ainda não tratou o tráfego de retorno das conexões abertas de dentro. Se vc queria impedir um ataque de SynFlood, deveria colocar a regra como "-p tcp --syn -m limit --limit 1/s -j ACCEPT", pois isso faria essa regra limitar apenas os pedidos de abertura de conexão. E ainda acho mais correto vc tratar primeiro o tráfego de retorno (a regra "-m state --state ESTABLISHED,RELATED -j ACCEPT").

Por fim, vejo que seu firewall registra no log do sistema os pacotes não autorizados. Isso facilita, basta tentar abrir a conexão em um cliente e observar no log quais as portas que precisam ser abertas no firewall.
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

bitetti

Vlws zekkerj, eu sou newbie no iptables.
Esse script peguei no Viva o Linux, não pensei que ele tivesse tantos problemas.

Mas o pior é q dei um iptables -F e depois entrei no Webmin e cliquei em tudo que era "liberar"

Meu iptables agora ta assim:
root@8Arte64:/etc/samba# iptables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination


infelizmente o problema persiste!
Eu fiz uma configuração de proxy numa maquina virtual com Win7 e os MMO dentro dela funcionam perfeitamente (tirando uma ou outra queda de desempenho), mas o outro PC continua dando problemas mesmo com o Firewall do Windows desligado!
 

zekkerj

Olha, eu sugiro que vc se informe com cuidado se esses programas realmente funcionam com proxy, e se são mesmo compatíveis com o squid, pq alguns programas exigem proxies diferentes. Depois confirme qual é a porta que o programa usa. Se forem portas UDP, com certeza o programa não é compatível com o squid.
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

bitetti

Uhmm verdade, tinha esquecido que eles poderiam usar UDP. Maldita falta de café. Apesar de que acho estranho um software usar UDP para "baixar" um arquivo de update!

Vi que tem algumas soluções de proxy UDP, vc tem alguma recomendação?
 

zekkerj

Ah, é pros updates? Não, não. Pros updates vai ser via http mesmo. Digo pro jogo, em si; pro jogo, o custo adicional dos controles de retransmissão e janelamento que o TCP impõe é mortal, causa lags. Por isso os jogos usam UDP, que não tem esse custo adicional.

Você viu algum controle específico de proxy pros updates, nesse jogo?
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

bitetti

N eles usam a configuração de proxy do sistema.

É que é assim:
Pego o Eden Eternal como referência
Ele abre a janela e logo acusa um erro falando que não baixou um .txt qualquer. Oque não deveria ocorrer já que configurei o proxy no sistema apartir do Google Chrome.
No entanto o mesmo não ocorre no PC que esta ligado direto a internet.
Por isso conclui que ele estava fazendo o download de updates por algum outro protocolo ou porta.

 

zekkerj

Experimente definir o proxy pelo Internet Explorer ou pelo painel de controle. Pode também usar a detecção automática de proxy (WPAD), não é muito difícil de fazer.
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

bitetti

Ainda estou batalhando para configurar esse treco, vi uma lista de portas do WoW, e uma expecifica para UDP, mas ainda não acertei como redirecionala

[off] Apenas para mostrar um fato curioso: http://imageshack.us/photo/my-images/684/capturadetelaem20111215.jpg/ quando eu bloqueio (no PC ligado direto à Internet) o UDP o cliente do Eden Eternal dá erro ao baixar um .txt. Viagem não!