modem rejeita credenciais de logon Se eu tentar conectar através de http://modem/. funciona bem se eu me conectar com http: ///

modem rejeita credenciais de logon Se eu tentar conectar através de http://modem/. funciona bem se eu me conectar com http: ///

Isso é uma verdadeira merda :)

Meu modem é um ZTE ZXHN H108L, conectado a um firewall/roteador/gateway Linux. O gateway é um sistema Slackware 14.0 no qual rodam DNS, DHCP, VPN e PROXY transparente. O gateway possui 2 NICs de hardware. eth1está conectado ao modem (192.168.231.117) e eth0está conectado à intranet (192.168.112.0/24).

Eu uso o DNS para dar nomes a vários hosts de intranet e VPNnet. O modem tem o nome conveniente "modem.skails.office" (ou apenas "modem" se eu estiver em um PC nesta intranet). De /var/named/skails.office.hosts:

modem                   A       192.168.231.117

nslookupresolve corretamente o endereço do modem de todos os pc's da intranet.

root@stargaze:~# nslookup modem
Server:     127.0.0.1
Address:    127.0.0.1#53

Name:   modem.skails.office
Address: 192.168.231.117

root@stargaze:~# nslookup modem.skails.office
Server:     127.0.0.1
Address:    127.0.0.1#53

Name:   modem.skails.office
Address: 192.168.231.117

Então quando tento acessar o modem pelo navegador do gateway (firefox), digito http://192.168.231.117/. Eu forneço as credenciais e faço logon corretamente.

Se eu tentar fazer o mesmo emitindo o endereço http://modem/ou http://modem.skails.office/, ainda será apresentada a janela de login, mas ela NÃO aceitará minhas credenciais. Eu realmente não sei qual poderia ser o problema aqui.

Eu costumava tcpdump -i eth1 host modem and port 80registrar uma tentativa bem-sucedida e malsucedida de fazer logon e acessar a página de status.

  1. tcpdump bem sucedido wget --user admin --password 1234 "http://192.168.231.117/status/status_deviceinfo.htm" -O -

Conectando a 192.168.231.117:80... conectado.
Solicitação HTTP enviada, aguardando resposta... 401 Não autorizado
Reutilizando conexão existente para 192.168.231.117:80.
Solicitação HTTP enviada, aguardando resposta... 200 OK
Comprimento: não especificado [text/html]
...

  1. tcpdump sem sucesso wget --user admin --password 1234 "http://modem/status/status_deviceinfo.htm" -O -

Resolvendo modem (modem)... 192.168.231.117
Conectando ao modem (modem)|192.168.231.117|:80... conectado.
Solicitação HTTP enviada, aguardando resposta... 401 Não autorizado
Reutilizando conexão existente paramodem: 80.
Solicitação HTTP enviada, aguardando resposta... 401
Falha na autorização não autorizada.

Você pode fazer alguma coisa com isso? Você precisa de algum outro dado que talvez não tenha pensado em incluir? Como posso investigar mais esse assunto?

Responder1

O servidor web do modem não foi projetado para lidar com algo diferente de seu IP no Hostcabeçalho HTTP, portanto você obtém um comportamento indefinido e neste caso significa que a autenticação falha quando você envia algo diferente de seu IP nesse Hostcabeçalho.

Normalmente, a menos que você esteja usando hosts virtuais (que permitem hospedar vários sites em vários domínios apontando para o mesmo IP e usando esse Hostcabeçalho para informar qual site foi solicitado), você deve ignorar completamente esse cabeçalho, que os desenvolvedores desse firmware obviamente não funcionou. Eu não ficaria surpreso se eles estivessem realmente usando um host virtual (desnecessariamente) e é por isso que apenas um Hostcabeçalho específico definido para o IP do roteador permite a autenticação, porque todo o resto não corresponde a esse host virtual.

O nome não tem nada a ver com isso, é apenas que curl/wget define automaticamente o cabeçalho Host correto com base nesse nome DNS. Se você puder remover ou substituir esse cabeçalho e configurá-lo de volta para o IP do modem, ele funcionará perfeitamente (use wget --header="Host:" ...para remover o cabeçalho).

informação relacionada