Это настоящий пидор :)
Мой модем - 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
для регистрации успешной и неудачной попытки входа в систему и захвата страницы состояния.
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]
...
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:" ...
убрать шапку).