[FUG-BR] Problema - Conectividade social - Mesmo com as técnicas atuais.

Roberto robertors em bs2.com.br
Sexta Setembro 8 11:50:22 BRT 2006


Hi, dear list.

Estou com problemas com o serviço da conectividade social da CAIXA. ( 
http://cmt.caixa.gov.br/ )

Tenho um servidor: FreeBSD 5.4-STABLE + PF + squid-2.5.9_3 com 
autenticação...

Esta não é a primeira vez que tenho problemas com o conectividade social 
( não sou marinheiro de primeira viagem), e o tenho muitos outros 
clientes utilizando sem problemas... ( resolvidos liberando a rede da 
caixa do proxy ).
Mas tenho um cliente que esta dificil de ser resolvido. Não estou 
conseguindo com técnicas atuais.

Já fiz várias tentativas, e já segui vários howto, artigos... e já 
procurei no histórico da lista e no google.
Mas até agora tudo sem sucesso.

http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=2542&pagina=1
http://www.guiadohardware.net/artigos/327/
http://www.fug.com.br/historico/html/freebsd/2006-02/msg00463.html
http://www.myfreebsd.com.br/modules.php?name=Forums&file=viewtopic&p=2812
http://www.dotlinux.net/modules.php?name=Sections&op=View&id=154
http://www.rau-tu.unicamp.br/openbsd/read.php?tid=1&qid=337&key=

Segue abaixo o que eu já fiz:

1 - Sei que o conectividade social nao funciona atras de proxy, devido a 
criptografia que eles utilizam na transferencia de dados.... Entao 
coloquei uma regra PF para liberar o host, para sair direto na porta 80.
E mesmo assim nao funcionou.

2 - Realizei um teste para comprovar que ele nao estava passando pelo proxy.
Da seguinte forma: Apartir do host liberado, visitei um site bloqueado 
(na lista de bloqueados que tenho em meu squid), e ele entrou no site 
bloqueado. Ou seja, nem tá passando pelo proxy. ( se estivesse passando 
teria bloqueado )

3 - Para fins de teste resolvi, retirar temporariamente todas as regras 
de bloqueio do firewall para todo mundo.
Ou seja, abrir as "pernas" do firewall para qualquer um entrar ou sair.
Deixando apenas uma regra "pass all"
Segue a saida das minhas regras abaixo:

# pfctl -sr
pass log all

Ou seja, só deixei uma regra pass all mesmo !

Mesmo assim nada do conectividade funcionar !!!!!

4 - Verifiquei com o tcpdump como a conexão estava sendo realizada, e 
segue abaixo algumas partes mais importantes da conversa:

Essa é a hora que o host cliente ( 192.168.0.52 ) inicia a conexão com 
os servidores da caixa:

14:12:04.562810 IP 192.168.0.52.1037 > 192.168.0.254.53: 1+[|domain]
14:12:04.563048 IP 192.168.0.254.53 > 192.168.0.52.1037: 1[|domain]
14:12:04.568077 IP 192.168.0.52.1038 > 200.201.173.68.80: S 
310261:310261(0) win 8192 <mss 1460,nop,nop,sackOK>
14:12:04.655500 IP 200.201.173.68.80 > 192.168.0.52.1038: S 
4032807317:4032807317(0) ack 310262 win 65535 <mss 1380,nop,nop,sackOK>
14:12:04.655658 IP 192.168.0.52.1038 > 200.201.173.68.80: . ack 1 win 8280
14:12:04.656113 IP 192.168.0.52.1038 > 200.201.173.68.80: P 1:361(360) 
ack 1 win 8280
14:12:04.797395 IP 200.201.173.68.80 > 192.168.0.52.1038: P 1:296(295) 
ack 361 win 65175
14:12:04.877632 IP 192.168.0.52.1038 > 200.201.173.68.80: P 361:809(448) 
ack 296 win 7985
14:12:05.036555 IP 200.201.173.68.80 > 192.168.0.52.1038: P 296:498(202) 
ack 809 win 64727
14:12:05.056972 IP 192.168.0.52.1038 > 200.201.173.68.80: P 
809:1144(335) ack 498 win 7783
14:12:05.361242 IP 200.201.173.68.80 > 192.168.0.52.1038: P 498:638(140) 
ack 1144 win 64392
14:12:05.394398 IP 192.168.0.52.1038 > 200.201.173.68.80: P 
1144:1479(335) ack 638 win 7643
14:12:05.692626 IP 200.201.173.68.80 > 192.168.0.52.1038: P 638:778(140) 
ack 1479 win 65535
Continua.....

Depois de um pequeno papinho, o cliente resetou a conexão e depois 
estabeleceu outra conexão novamente:

14:12:07.278789 IP 192.168.0.52.1038 > 200.201.173.68.80: R 
313806:313806(0) win 0
14:12:07.279984 IP 200.201.173.68.80 > 192.168.0.52.1038: F 5541:5541(0) 
ack 3545 win 65294
14:12:07.280122 IP 192.168.0.52.1038 > 200.201.173.68.80: R 
313806:313806(0) win 0
14:12:07.442791 IP 192.168.0.52.1039 > 200.201.173.68.80: P 
1339:1697(358) ack 421 win 7860
14:12:07.443451 IP 192.168.0.52.1040 > 200.201.173.68.80: S 
313137:313137(0) win 8192 <mss 1460,nop,nop,sackOK>
14:12:07.595737 IP 200.201.173.68.80 > 192.168.0.52.1039: P 421:561(140) 
ack 1697 win 65535
14:12:07.599627 IP 200.201.173.68.80 > 192.168.0.52.1040: S 
797963344:797963344(0) ack 313138 win 65535 <mss 1380,nop,nop,sackOK>
14:12:07.599757 IP 192.168.0.52.1040 > 200.201.173.68.80: . ack 1 win 8280
14:12:07.609708 IP 192.168.0.52.1040 > 200.201.173.68.80: P 1:366(365) 
ack 1 win 8280
14:12:07.609901 IP 192.168.0.52.1039 > 200.201.173.68.80: P 
1697:2064(367) ack 561 win 7720
14:12:07.736395 IP 200.201.173.68.80 > 192.168.0.52.1040: P 1:141(140) 
ack 366 win 65170

Agora vem a parte ainda mais estranha. Que eu nao entendi o motivo.
Apos ter transmitido alguns dados, ele decide finalizar a conexão e 
procurar por um dominio... e tal... sei lá.
Ele tenta tb pingar no host 200.201.174.207 sendo que esse host nem 
aceita ping. ( tenta ai )


14:12:39.945527 IP 192.168.0.52.1042 > 200.203.183.36.53: 1+[|domain]
14:12:40.087187 IP 200.203.183.36.53 > 192.168.0.52.1042: 1 
NXDomain[|domain]
14:12:40.087771 IP 192.168.0.52.137 > 200.201.174.207.137: NBT UDP 
PACKET(137): QUERY; REQUEST; BROADCAST
14:12:40.118142 IP 201.14.31.254 > 192.168.0.52: icmp 36: host 
200.201.174.207 unreachable - admin prohibited filter
14:12:41.589403 IP 192.168.0.52.137 > 200.201.174.207.137: NBT UDP 
PACKET(137): QUERY; REQUEST; BROADCAST
14:12:41.699710 IP 201.14.31.254 > 192.168.0.52: icmp 36: host 
200.201.174.207 unreachable - admin prohibited filter
14:12:43.089071 IP 192.168.0.52.137 > 200.201.174.207.137: NBT UDP 
PACKET(137): QUERY; REQUEST; BROADCAST
14:12:43.138936 IP 201.14.31.254 > 192.168.0.52: icmp 36: host 
200.201.174.207 unreachable - admin prohibited filter
14:12:44.655521 IP 192.168.0.52.1043 > 200.201.174.207.2631: S 
350357:350357(0) win 8192 <mss 1460,nop,nop,sackOK>
14:12:44.823366 IP 200.201.174.207.2631 > 192.168.0.52.1043: S 
2160180351:2160180351(0) ack 350358 win 16384 <mss 1380,nop,nop,sackOK>
14:12:44.823528 IP 192.168.0.52.1043 > 200.201.174.207.2631: . ack 1 win 
8280
14:12:44.838628 IP 192.168.0.52.1043 > 200.201.174.207.2631: P 1:92(91) 
ack 1 win 8280
14:12:45.096195 IP 200.201.174.207.2631 > 192.168.0.52.1043: P 
1:716(715) ack 92 win 65444
14:12:45.183866 IP 192.168.0.52.1043 > 200.201.174.207.2631: P 
92:709(617) ack 716 win 7565
14:12:45.465940 IP 200.201.174.207.2631 > 192.168.0.52.1043: . ack 709 
win 64827
14:12:45.483554 IP 200.201.174.207.2631 > 192.168.0.52.1043: P 
716:880(164) ack 709 win 64827
14:12:45.508755 IP 192.168.0.52.1043 > 200.201.174.207.2631: F 
709:709(0) ack 880 win 7401
14:12:45.606664 IP 200.201.174.207.2631 > 192.168.0.52.1043: . ack 710 
win 64827
14:12:45.611796 IP 200.201.174.207.2631 > 192.168.0.52.1043: F 
880:880(0) ack 710 win 64827
14:12:45.611988 IP 192.168.0.52.1043 > 200.201.174.207.2631: . ack 881 
win 7401

Novamente ele tenta pingar no host 200.201.174.207 e tenta procurar por 
um dominio. Ele termina fazendo isso 4 vezes em seguida... acredito que 
o erro esta por aqui...

14:13:01.507130 IP 192.168.0.52.137 > 200.201.174.207.137: NBT UDP 
PACKET(137): QUERY; REQUEST; BROADCAST
14:13:01.546480 IP 201.14.31.254 > 192.168.0.52: icmp 36: host 
200.201.174.207 unreachable - admin prohibited filter
14:13:03.009475 IP 192.168.0.52.137 > 200.201.174.207.137: NBT UDP 
PACKET(137): QUERY; REQUEST; BROADCAST
14:13:03.096539 IP 201.14.31.254 > 192.168.0.52: icmp 36: host 
200.201.174.207 unreachable - admin prohibited filter
14:13:04.509115 IP 192.168.0.52.137 > 200.201.174.207.137: NBT UDP 
PACKET(137): QUERY; REQUEST; BROADCAST
14:13:04.557323 IP 201.14.31.254 > 192.168.0.52: icmp 36: host 
200.201.174.207 unreachable - admin prohibited filter
14:13:06.011361 IP 192.168.0.52.1052 > 192.168.0.254.53: 7+[|domain]
14:13:06.011536 IP 192.168.0.254.53 > 192.168.0.52.1052: 7 NXDomain[|domain]
14:13:06.013268 IP 192.168.0.52.1052 > 200.203.183.36.53: 7+[|domain]
14:13:06.093848 IP 200.203.183.36.53 > 192.168.0.52.1052: 7 
NXDomain[|domain]
14:13:06.109012 IP 192.168.0.52.137 > 200.201.174.207.137: NBT UDP 
PACKET(137): QUERY; REQUEST; BROADCAST
14:13:06.134219 IP 201.14.31.254 > 192.168.0.52: icmp 36: host 
200.201.174.207 unreachable - admin prohibited filter
14:13:07.608417 IP 192.168.0.52.137 > 200.201.174.207.137: NBT UDP 
PACKET(137): QUERY; REQUEST; BROADCAST
14:13:07.633191 IP 201.14.31.254 > 192.168.0.52: icmp 36: host 
200.201.174.207 unreachable - admin prohibited filter
14:13:09.108068 IP 192.168.0.52.137 > 200.201.174.207.137: NBT UDP 
PACKET(137): QUERY; REQUEST; BROADCAST
14:13:09.155358 IP 201.14.31.254 > 192.168.0.52: icmp 36: host 
200.201.174.207 unreachable - admin prohibited filter
14:13:28.425732 IP 192.168.0.52.1053 > 192.168.0.254.53: 1+[|domain]
14:13:28.425935 IP 192.168.0.254.53 > 192.168.0.52.1053: 1*[|domain]
14:13:28.546525 IP 192.168.0.52.1054 > 192.168.0.254.53: 2+[|domain]
14:13:28.546677 IP 192.168.0.254.53 > 192.168.0.52.1054: 2*[|domain]
14:13:28.556986 IP 192.168.0.52.1055 > 192.168.0.254.53: 3+[|domain]

5 - Eu a principio estava disconfiando da aplicação da caixa... por 
fazer essas requisições maluca... e pingar em host que nem aceita ping...
Entao entrei em contato com o suporte da caixa por 2 vezes e nada como 
sempre.
Li e reli aquele manual da caixa, e no cliente estou utilizando Win98, 
browser ie 6.1, com java da microsoft instalado e ativado. Tudo como 
pedido e indicado no manual da caixa e em outros artigos.

Dei um netstat no msdos para ver se algum não estava utilizando a porta 
80... e estava livre para uso.
Inclusive, nao tinha ninguem utilizando nada... somente o VNC rodando.
E verifiquei que a conexão com a caixa estava estabelecida. ( Atraves do 
netstat no cliente win98 )

Veja abaixo:

Conexäes ativas

  Proto  Endere‡o local         Endere‡o externo       Estado
  TCP    demobile:5900          DEMOBILE:0             LISTENING
  TCP    demobile:4899          DEMOBILE:0             LISTENING
  TCP    demobile:1104          DEMOBILE:0             LISTENING
  TCP    demobile:1106          DEMOBILE:0             LISTENING
  TCP    demobile:5800          DEMOBILE:0             LISTENING
  TCP    demobile:1092          DEMOBILE:0             LISTENING
  TCP    demobile:5900         
201-66-63-228.mganm702.dsl.brasiltelecom.net.br:54161  ESTABLISHED
  TCP    demobile:1103          200.201.174.207:80     TIME_WAIT
  TCP    demobile:1105          200.201.174.207:80     TIME_WAIT
  TCP    demobile:1106          cmt.caixa.gov.br:80    ESTABLISHED
  TCP    demobile:137           DEMOBILE:0             LISTENING
  TCP    demobile:138           DEMOBILE:0             LISTENING
  TCP    demobile:nbsession     DEMOBILE:0             LISTENING
  UDP    demobile:1092          *:*
  UDP    demobile:nbname        *:*


Depois ele abre uma conexão com o localhost e tenta abrir um programinha 
que é baixado da caixa...
Acho que ele baixa um "servidorzinho WWW em java", e tenta se conectar 
no locahost (127.0.0.1) na porta 80.

É ai que ele para tudo !!! e nao vai, nao sei pq ??!!!!

Não tem nenhum firewall na maquina e nem nada bloqueando... que coisa !!!

Depois ficou assim:

Conexäes ativas

Proto Endere‡o local Endere‡o externo Estado
TCP demobile:5900 DEMOBILE:0 LISTENING
TCP demobile:4899 DEMOBILE:0 LISTENING
TCP demobile:80 DEMOBILE:0 LISTENING
TCP demobile:1104 DEMOBILE:0 LISTENING
TCP demobile:1106 DEMOBILE:0 LISTENING
TCP demobile:5800 DEMOBILE:0 LISTENING
TCP demobile:1092 DEMOBILE:0 LISTENING
TCP demobile:80 localhost.XXXXXXXXXXXXXXXXX:1104 ESTABLISHED
TCP demobile:1104 localhost.XXXXXXXXXXXXXXXX:80 ESTABLISHED
TCP demobile:5900
201-66-63-228.mganm702.dsl.brasiltelecom.net.br:54161 ESTABLISHED
TCP demobile:1103 200.201.174.207:80 TIME_WAIT
TCP demobile:1105 200.201.174.207:80 TIME_WAIT
TCP demobile:1106 cmt.caixa.gov.br:80 ESTABLISHED
TCP demobile:137 DEMOBILE:0 LISTENING
TCP demobile:138 DEMOBILE:0 LISTENING
TCP demobile:nbsession DEMOBILE:0 LISTENING
UDP demobile:1092 *:*
UDP demobile:nbname *:*

6 - Realizei o seguinte teste: Liguei o host cliente a uma conexão 
discada ( modem 56K ). E adivinhem !
Com a conexão discada funcionou corretamente.... ( que raiva )
O conectividade social funcionou em uma conexao discada. com o mesmo 
host que tava com problemas.
Ou seja é alguma coisa no meu firewall.

Segue abaixo o meu pf.conf, depois que eu retirei os blocks, e deixei 
somente um "pass all" e mesmo assim nao funcionou:

#
# pf.conf - configuracao do packet filter
#
# ultima alteracao: 2006/09/04 Roberto Rodrigues da Silva

###
### GERAL
###

lan_if="lan0"
ext_if="ext0"

lan_net="192.168.0.0/24"
ext_net="200.XXXXXXXXXX/29"

srv_01_ext_ip="XXXXXXXXXX.50"
srv_01_ip="192.168.0.254"

srv_02_ext_ip="200.XXXXXXXXXX"
srv_02_ip="192.168.0.251"

geral_ip="200.XXXXXXXXX"

voip_ext_ip="200.XXXXXXXXXXXX"
voip_ip="192.168.0.253"

radmin1_ip="192.168.0.52"
radmin2_ip="192.168.0.110"
radmin3_ip="192.168.0.250"
radmin4_ip="192.168.0.251"
radmin5_ip="192.168.0.253"

sadig_ip="192.168.0.250"

# Quem pode navegar sem proxy
# table <navega_sem_proxy> persist file "/home/firewall/navega_sem_proxy.txt"
# Para teste todos estao navegando sem proxy - puro nat

###
### NAT / RDR
###

# Compartilhamento de Internet
nat on $ext_if from { $lan_net } to any -> ($ext_if)

# HTTP/FTP
rdr pass on $ext_if proto tcp from any to $srv_02_ext_ip port http -> $srv_02_ip port http
rdr pass on $ext_if proto tcp from any to $srv_02_ext_ip port https -> $srv_02_ip port https
rdr pass on $ext_if proto tcp from any to $srv_02_ext_ip port ftp -> $srv_02_ip port ftp
rdr pass on $ext_if proto tcp from any to $srv_02_ext_ip port 49152:65535 -> $srv_02_ip port 49152:65535

# Redireciona para o Apache
rdr pass on $ext_if proto tcp from any to $srv_01_ext_ip port http -> $srv_01_ip port http
rdr pass on $ext_if proto tcp from any to $srv_01_ext_ip port https -> $srv_01_ip port https

# Redirecionamento do radmin
rdr pass on $ext_if proto tcp from any to $geral_ip port 4899 -> $radmin1_ip port 4899
rdr pass on $ext_if proto tcp from any to $geral_ip port 4898 -> $radmin2_ip port 4899
rdr pass on $ext_if proto tcp from any to $geral_ip port 4897 -> $radmin3_ip port 4899

# Acesso Radmin host Jander
rdr pass on $ext_if proto tcp from any to $geral_ip port 5555 -> $radmin4_ip port 5555
rdr pass on $ext_if proto tcp from any to $geral_ip port 5000 -> $radmin5_ip port 4899

# SADIG  (apache esta fazendo proxy disso)
rdr pass on $ext_if proto tcp from any to $srv_02_ext_ip port 8080 -> $sadig_ip port 9080

# VoIP
rdr pass on $ext_if proto tcp from any to $voip_ext_ip port 5060 -> $voip_ip 
rdr pass on $ext_if proto udp from any to $voip_ext_ip port 4000:12000 -> $voip_ip 

# Acesso VNC host Janaina
rdr pass on $ext_if proto tcp from any to $geral_ip port 5900 -> 192.168.0.52 port 5900


### 
### REGRAS
###

pass log all



Mesmo com a ridículo regra de firewall acima, eu nao consegui fazer o conectividade social funcionar.
E como mensionado, com uma conexão discada funcionou, e ligando direto tb... 
nao sei se é alguma coisa relacionada ao NAT.... 

Sei lá... 

Alguem me de uma luz!!!!!!!!!!!!!
Agradeço.

Roberto Rodrigues da Silva
E-mail/Gtalk: beto.rrs at gmail.com
WWW: http://robertors.blogspot.com
Maringa - Parana - Brasil







Mais detalhes sobre a lista de discussão freebsd