調製解調器拒絕登錄憑據 如果我嘗試通過 http://modem/ 連接。如果我與 http://<ipaddr>/ 連接,則工作正常
這是一個真正的蟲子:)
我的調製解調器是中興 ZXHN H108L,連接到 linux 防火牆/路由器/網關。網關是一個 Slackware 14.0 系統,在其上執行 DNS、DHCP、VPN 和透明代理。網關有 2 個硬體 NIC。
eth1
連接到調製解調器(192.168.231.117),並eth0
連接到內網(192.168.112.0/24)。我使用 dns 為幾個 Intranet 和 vpnnet 主機命名。調製解調器有一個方便的名稱“modem.skails.office”(或者如果我坐在這個 Intranet 上的 PC 中,則只是“調製解調器”)。來自
/var/named/skails.office.hosts
:modem A 192.168.231.117
nslookup
從 Intranet 的所有 pc 正確解析調製解調器地址。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
記錄一次成功和不成功的登錄嘗試並獲取狀態頁面。
- 成功的 tcpdump
wget --user admin --password 1234 "http://192.168.231.117/status/status_deviceinfo.htm" -O -
連接到 192.168.231.117:80… 已連接。
已發送 HTTP 請求,等待響應… 401 Unauthorized
Reusing existing connection to 192.168.231.117:80。
HTTP 請求已發送,等待響應… 200 OK
長度:未指定
$$ text/html $$
…
- 不成功的 tcpdump
wget --user admin --password 1234 "http://modem/status/status_deviceinfo.htm" -O -
正在解析調製解調器 (modem)… 192.168.231.117 正在
連接到調製解調器 (modem)|192.168.231.117|:80… 已連接。
HTTP 請求已發送,等待響應… 401 Unauthorized
Reusing existing connection to modem:80。
已發送 HTTP 請求,等待響應… 401 未
授權授權失敗。
你能從中得到什麼嗎?您是否需要我可能沒有想到的任何其他數據?我該如何進一步調查此事?
調製解調器的 Web 伺服器並非旨在處理
Host
HTTP 標頭中的 IP 以外的其他內容,因此您會獲得未定義的行為,在這種情況下,這意味著當您在該Host
標頭中發送其 IP 以外的內容時身份驗證失敗。通常,除非您使用虛擬主機(它允許在指向同一 IP 的多個域下託管多個站點,並使用該
Host
標頭來判斷請求了哪個站點),否則您應該完全忽略該標頭,該標頭的開發人員韌體顯然沒有做。如果他們實際上(不必要地)使用虛擬主機,我不會感到驚訝,這就是為什麼只有Host
設置為路由器 IP 的特定標頭允許您進行身份驗證,因為其他所有內容都與該虛擬主機不匹配。該名稱與它沒有任何關係,只是 curl/wget 根據該 DNS 名稱自動設置正確的主機標頭。如果您可以刪除或覆蓋該標頭並將其設置回調製解調器的 IP,那麼它將正常工作(用於
wget --header="Host:" ...
刪除標頭)。