El módem rechaza las credenciales de inicio de sesión. Si intento conectarme a través de http://modem/. funciona bien si me conecto con http:///

El módem rechaza las credenciales de inicio de sesión. Si intento conectarme a través de http://modem/. funciona bien si me conecto con http:///

Esto es un verdadero cabrón :)

Mi módem es un ZTE ZXHN H108L, conectado a un firewall/enrutador/puerta de enlace de Linux. La puerta de enlace es un sistema Slackware 14.0 en el que se ejecutan DNS, DHCP, VPN y PROXY transparente. La puerta de enlace tiene 2 NIC de hardware. eth1está conectado al módem (192.168.231.117) y eth0está conectado a la intranet (192.168.112.0/24).

Utilizo el DNS para dar nombres a varios hosts de intranet y vpnnet. El módem tiene el nombre conveniente "modem.skails.office" (o simplemente "módem" si estoy sentado en una PC en esta intranet). De /var/named/skails.office.hosts:

modem                   A       192.168.231.117

nslookupResuelve correctamente la dirección del módem de todos los PC de la 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

Entonces, cuando intento acceder al módem desde el navegador de la puerta de enlace (firefox), escribo http://192.168.231.117/. Proporciono las credenciales e inicio sesión bien.

Si intento hacer lo mismo ingresando la dirección http://modem/o http://modem.skails.office/, todavía se me presentará la ventana de inicio de sesión, pero NO aceptará mis credenciales. Realmente no sé cuál podría ser el problema aquí.

Solía tcpdump -i eth1 host modem and port 80​​registrar un intento exitoso y otro fallido de iniciar sesión y acceder a la página de estado.

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

Conectándose a 192.168.231.117:80... conectado.
Solicitud HTTP enviada, esperando respuesta... 401 No autorizado
Reutilizando la conexión existente a 192.168.231.117:80.
Solicitud HTTP enviada, esperando respuesta... 200 OK
Longitud: sin especificar [texto/html]
...

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

Resolviendo módem (módem)... 192.168.231.117
Conectando al módem (módem)|192.168.231.117|:80... conectado.
Solicitud HTTP enviada, esperando respuesta... 401 No autorizado
Reutilizando la conexión existente paramódem: 80.
Solicitud HTTP enviada, esperando respuesta... 401
Error en la autorización no autorizada.

¿Puedes sacar algo de esto? ¿Necesitas algún otro dato que quizás no he pensado incluir? ¿Cómo puedo investigar más a fondo este asunto?

Respuesta1

El servidor web del módem no está diseñado para manejar algo que no sea su IP en el Hostencabezado HTTP, por lo que obtienes un comportamiento indefinido y en este caso significa que la autenticación falla cuando envías algo que no sea su IP en ese Hostencabezado.

Normalmente, a menos que esté utilizando hosts virtuales (que permiten alojar múltiples sitios bajo múltiples dominios que apunten a la misma IP y usar ese Hostencabezado para saber qué sitio fue solicitado), se supone que debe ignorar ese encabezado por completo, lo que los desarrolladores de ese El firmware obviamente no funcionó. No me sorprendería si en realidad estuvieran usando un host virtual (innecesariamente) y es por eso que solo un Hostencabezado específico configurado para la IP del enrutador le permite autenticarse, porque todo lo demás no coincide con ese host virtual.

El nombre no tiene nada que ver con eso, es solo que curl/wget establece automáticamente el encabezado de Host correcto según ese nombre DNS. Si puede eliminar o anular ese encabezado y volver a configurarlo en la IP del módem, entonces funcionará bien (úselo wget --header="Host:" ...para eliminar el encabezado).

información relacionada