如果我嘗試透過 http://modem/ 連接,調變解調器會拒絕登入憑證。如果我連接 http:// 則工作正常/

如果我嘗試透過 http://modem/ 連接,調變解調器會拒絕登入憑證。如果我連接 http:// 則工作正常/

這是一個真正的混蛋:)

我的數據機是中興 ZXHN H108L,連接到 Linux 防火牆/路由器/閘道。網關是Slackware 14.0系統,運行DNS、DHCP、VPN和透明PROXY。網關有 2 個硬體 NIC。eth1連接數據機(192.168.231.117),並eth0連接內部網路(192.168.112.0/24)。

我使用 dns 為多個 Intranet 和 VPNnet 主機命名。數據機有一個方便的名稱“modem.skails.office”(如果我坐在這個 Intranet 上的電腦上,則只是“調製解調器”)。從/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記錄過登入並獲取狀態頁面的成功和失敗嘗試。

  1. 成功的 TCP 轉儲 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 Unauthorized
重複使用現有連接數據機:80
HTTP 請求已傳送,正在等待回應... 401 Unauthorized
授權失敗。

你能用它做點什麼嗎?您是否需要我可能沒有想到的任何其他數據?我該如何進一步調查此事?

答案1

調變解調器的 Web 伺服器並非旨在處理HostHTTP 標頭中除其IP 之外的其他內容,因此您會獲得未定義的行為,在這種情況下,這意味著當您發送該標頭中除其IP 之外的其他內容時,身份驗證將失敗Host

通常,除非您使用虛擬主機(它允許在指向相同 IP 的多個網域下託管多個站點,並使用該Host標頭來告訴請求的是哪個站點),否則您應該完全忽略該標頭,該標頭的開發人員會這樣做韌體顯然沒有做到。如果他們實際上使用虛擬主機(不必要),我不會感到驚訝,這就是為什麼只有Host設定為路由器 IP 的特定標頭才允許您進行身份驗證,因為其他所有內容都與該虛擬主機不匹配。

這個名稱與之沒有任何關係,只是curl/wget 根據該DNS 名稱自動設定正確的主機標頭。如果您可以刪除或覆蓋該標頭並將其設定回調製解調器的 IP,那麼它將正常工作(用於wget --header="Host:" ...刪除標頭)。

相關內容