terça-feira, dezembro 25, 2007

D-Link, D de desilusão


Se são donos de um D-Link DSL-G604T e usam um sistema operativo baseado em Unix, os meus pêsames. Este equipamento traz uma boa dose de bugs. O maior deles descobri hoje ao necessitar de me ligar por SSH a uma máquina externa através do Ubuntu.
Ao conectar aparecia a fingerprint do host, a seguir o prompt de login, mas assim que inseria os dados, o terminal bloqueava. Testei também no Mac OS, a mesma coisa. Até que me lembrei de testar com o Putty Portable que tenho na pen, e corri no Ubuntu através do Wine. Bingo! Funcionava. Nota mental: em Windows funciona.

Depois de alguma pesquisa na net percebi que era mesmo bug do router que não consegue tratar os pacotes cujo header venham com o ToS (Type of Service) a 0x10 (normal no cliente SSH em Unixes) e nem com umas actualizações de firmware lá foi.
A grande ironia da situação é que este router corre linux no firmware, mais propriamente um tal de Linux MontaVista, cá para mim é do segundo nome :P

Umas pesquisas mais tarde descobri que para o SSH funcionar teria de criar uma regra na iptables da máquina Linux:

iptables -t mangle -A OUTPUT -j DSCP --set-dscp 0x00


Esta solução não me convence, ter que alterar as configurações das máquinas para poder utilizar o protocolo. Além do mais, este não foi o único problema que notei neste equipamento. Qualquer ferramenta de rede usada em sistema Unix com este router fica extremamente lenta, um exemplo disso foi um Nmap que fiz a uma máquina interna e demorou tempo demais. O mesmo acontecia com sessões telnet e ftp que demoravam demasiado tempo a estabelecer comunicação.
Concluíndo: O mais provável é andar nos próximos tempos à procura de um router decente.