-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Leonardo Pinto wrote:
>On Thu, 23 Mar 2006 10:08:54 +0100, Thiago Macieira wrote
>
>> -----BEGIN PGP SIGNED MESSAGE-----
>> Significa que, se o A pode abrir uma conexão para B, então B pode
>> abrir uma conexão para A.
>
>Eu já havia entendido desta mesma forma. Porém estava questionando a
>estupidez desse tal invento. Pois se A já teria conseguido abrir o
>socket, e iniciado a conversa, para que diabos B, teria que complicar
>a situação, abrindo novamente outra conexão de volta?!!
Vejamos:
cliente FTP abre a conexão
envia o comando:
GET arquivo
por qual conexão deve vir este arquivo? A solução do FTP, lá nos idos da
Internet, foi que o *servidor* FTP abre uma conexão para o *cliente* FTP
na porta 20 e envia o arquivo. Assim, tudo que o cliente tem que fazer é
ficar ouvindo na porta 20 e vai receber o arquivo.
Simples, sem complicação, sem comando extra (PASV ou PORT).
Mas então perceberam que a solução não era muito boa, visto que você só
poderia receber um arquivo por vez. Se houvesse duas conexões FTP
abertas, poderia haver problemas!
E mais: o Unix decidiu que só o root pode abrir a porta 20 (< 1024). Então
inventaram o comando "PORT" que diz para o servidor FTP: ao invés de
conectar na porta 20, conecte-se nesta outra. E colocaram o IP junto no
comando.
Naquela época, IP não era problema. Então todo mundo tinha IP. E não havia
problemas de segurança, porque, afinal, eram apenas alguns institutos de
pesquisa que tinham Internet. Então não havia firewalls.
Conclusão: abrir uma conexão extra, no sentido contrário, não era
problemas.
Bom, logo inventaram os firewalls e começou a haver problemas de
bi-direcionalidade. Daí veio o comando PASV: nesse caso, é o servidor que
escolhe uma porta e fica escutando pela conexão do cliente. Afinal, se o
cliente conectou-se na porta 21, porque não poderia se conectar na porta
12735?
Estamos aí hoje: se o cliente conectou-se na porta 21, porque raios não
pode se conectar na outra porta?
Tire o NAT e configure o firewall para permitir isso. Ou você vai ter
problemas com servidores de FTP.
>> Isso não é mais válido na Internet, em
>> grande parte devido a proliferação não-controlada de NAT.
>
>Ainda bem que notaram tal idiotice.
Idiotice foi ter quebrado a bidirecionalidade.
Se A conversa com B, B conversa com A. Quebrar essa simples regra foi
idiotice.
Sim, NAT é uma praga. Sim, NAT deve ser abolido o quanto antes possível.
E, sim, soluções como UPnP são mais "acoxambrações" sobre o NAT e não
resolvem o problema: só nos fazem nos enterrarmos ainda mais na lama.
Quanto antes as pessoas começarem a perceber que as dificuldades que o NAT
introduz são maiores que os benefícios, tanto antes teremos uma solução
definitiva (não "acoxambrações").
IPv6 não suporta NAT. Repetindo: não existe NAT sobre IPv6. A
bidirecionalidade é restaurada.
>- Que mal lhe pergunte. O protocolo H.323 (MSN) também se utiliza dessa
>estupidez?
Sim. O H.323 utiliza várias conexões separadas para transportar áudio e
vídeo, inclusive sobre UDP.
>E é por isso que falha, ou é somente pelo que diz o RFC 2775:
>H.323, carry IP addresses at application level and fail to traverse a
> simple NAT box correctly.
Todos os protocolos que colocam o IP nos dados transmitidos falham ao ser
transmitidos por um firewall.
Quer um exemplo? Email.
"Tente pingar minha máquina. Meu IP é 10.3.0.77."
Aquele IP acima não quer dizer absolutamente nada para alguém fora da
rede. Mesmo para aqueles que eu consigo pingar.
Suponha agora que eu precise abrir uma porta para receber um arquivo. Como
eu vou descobrir qual é o meu IP externo? Como eu vou fazer para o
firewall/NAT permitir que eu receba a conexão? É exatamente esse o
problema que o servidor de FTP em modo passivo, o cliente de FTP em modo
ativo ou um programa usando H.323 enfrentam.
- --
Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
thiago.macieira (AT) trolltech.com Trolltech AS
GPG: 0x6EF45358 | Sandakerveien 116,
E067 918B B660 DBD1 105C | NO-0402
966C 33F5 F005 6EF4 5358 | Oslo, Norway
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2.2 (GNU/Linux)
iD8DBQFEIs99M/XwBW70U1gRAkkoAKC9EulJrLSJtn/wUQhSE+wJl61XwgCfXT45
GkxNLW2DmYpjLjk3ajHvCBo=
=M+w4
-----END PGP SIGNATURE-----
---------------------------------------------------------------------------
Esta lista é patrocinada pela Conectiva S.A. Visite http://www.conectiva.com.br
Arquivo: http://bazar2.conectiva.com.br/mailman/listinfo/linux-br
Regras de utilização da lista: http://linux-br.conectiva.com.br
FAQ: http://www.zago.eti.br/menu.html