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

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

Это настоящий ублюдок:)

Мой модем — 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" (или просто "modem", если я сижу на ПК в этой интрасети). От /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 Несанкционированное
повторное использование существующего подключения к 192.168.231.117:80.
HTTP-запрос отправлен, ожидание ответа... 200 OK
Длина: не указано [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 Несанкционированное
повторное использование существующего подключения кмодем:80.
HTTP-запрос отправлен, ожидается ответ... 401 Несанкционированная
авторизация не удалась.

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

решение1

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

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

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

Связанный контент