Назад | Перейти на главную страницу

modem rejects logon credentials If I try to connect through http://modem/. works fine if I connect with http://<ipaddr>/</ipaddr>

Это настоящий пидор :)

Мой модем - ZTE ZXHN H108L, подключенный к межсетевому экрану / маршрутизатору / шлюзу Linux. Шлюз - это система Slackware 14.0, на которой работают DNS, DHCP, VPN и прозрачный PROXY. Шлюз имеет 2 аппаратные сетевые карты. eth1 подключен к модему (192.168.231.117), а eth0 подключен к интрасети (192.168.112.0/24).

Я использую DNS для присвоения имен нескольким узлам интрасети и vpnnet. У модема удобное имя «modem.skails.office» (или просто «модем», если я сижу в компьютере в этой интрасети). Из /var/named/skails.office.hosts :

modem                   A       192.168.231.117

nslookup правильно определяет адрес модема со всех компьютеров во внутренней сети.

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

Поэтому, когда я пытаюсь получить доступ к модему из браузера шлюза (firefox), я набираю http://192.168.231.117/. Я предоставляю учетные данные и вхожу в систему нормально.

Если я попытаюсь сделать то же самое, указав адрес http://modem/ или http://modem.skails.office/, Мне все равно будет представлено окно входа в систему, но оно НЕ примет мои учетные данные. Я действительно не знаю, в чем может быть проблема.

я использовал tcpdump -i eth1 host modem and port 80 для регистрации успешной и неудачной попытки входа в систему и захвата страницы состояния.

  1. успешный tcpdump wget --user admin --password 1234 "http://192.168.231.117/status/status_deviceinfo.htm" -O -

Подключение к 192.168.231.117:80 ... подключено.
HTTP-запрос отправлен, ожидает ответа ... 401 Unauthorized
Повторное использование существующего подключения к 192.168.231.117:80.
HTTP-запрос отправлен, ожидает ответа ... 200 ОК
Длина: не указана [text / html]
...

  1. неудачный tcpdump wget --user admin --password 1234 "http://modem/status/status_deviceinfo.htm" -O -

Разрешение модема (модема) ... 192.168.231.117
Подключение к модему (модему) | 192.168.231.117 |: 80 ... подключено.
HTTP-запрос отправлен, ожидает ответа ... 401 Unauthorized
Повторное использование существующего подключения к модем: 80.
HTTP-запрос отправлен, ожидает ответа ... 401 Unauthorized
Авторизация не удалась.

Вы можете что-нибудь из этого сделать? Вам нужны другие данные, которые я, возможно, не думал включать? Как я могу продолжить расследование по этому поводу?

Веб-сервер модема не предназначен для обработки чего-либо, кроме его IP-адреса в Host HTTP-заголовок, таким образом, вы получаете неопределенное поведение, и в этом случае это означает, что аутентификация не выполняется, когда вы отправляете что-то, кроме его IP-адреса в этом Host заголовок.

Обычно, если вы не используете виртуальные хосты (что позволяет размещать несколько сайтов в нескольких доменах, указывающих на один и тот же IP-адрес, и использовать этот Host заголовок, чтобы указать, какой сайт был запрошен), вы просто должны полностью игнорировать этот заголовок, чего явно не сделали разработчики этой прошивки. Я бы не удивился, если бы они на самом деле использовали виртуальный хост (без необходимости), и поэтому только конкретный Host заголовок, установленный на IP-адрес маршрутизатора, позволяет вам аутентифицироваться, потому что все остальное не соответствует этому виртуальному хосту.

Имя не имеет к этому никакого отношения, просто curl / wget автоматически устанавливает правильный заголовок Host на основе этого DNS-имени. Если вы можете удалить или переопределить этот заголовок и вернуть его IP-адрес модема, он будет работать нормально (используйте wget --header="Host:" ... убрать шапку).