Domain-Name-System
如何調試一個人似乎無法訪問但另一個人(作為使用者,而不是開發人員或管理員)無法訪問的網站?
我有一個攝影師的網站,拍攝了一些照片並通過他的網站分享。該網站似乎可以在一個國家/地區執行(它適用於一位家庭成員),但它甚至不適合我。
該站點不使用 ssl,因此我懷疑某些本地 DNS 問題是罪魁禍首。
traceroute 似乎對域很慢, mtr 似乎表明它可以找到它。whois 似乎也找到了一個條目。
我還應該看什麼來調試這個?我已經嘗試了一些瀏覽器和電腦(全部來自失敗的位置)。
更新:我現在已經用 Tor 載入了一次網站。不知道那告訴我什麼。
要訪問網站,您需要以相反的順序:
- 正確的 TLS 配置(證書等)
- 一個適當的 HTTP 伺服器監聽 HTTPS 的 80 和 443 埠
- 一個正常工作的防火牆,讓該流量通過
- 從“任何地方”到該伺服器的正確 IP 路由
- 如果一切都以一個名稱開頭(從 URL 中提取),則您需要從該名稱到某個 IP 地址的正確名稱解析(通常是 DNS,但不一定在所有地方)。
所以你需要從底部開始測試所有這些東西。您可以使用瀏覽器自己的內部 Web 開發人員工具,或外部命令(如果您可以使用命令行工具,您將獲得更好/更簡單/更快/更正確的故障排除)或各種網站上的最差服務。
我只會詳細說明要使用的命令。
- 您可以使用它
dig
來仔細檢查名稱解析;使用其預設的本地解析器查看客戶端是否獲得正確的 IP 地址- 接下來的 3 個點都可以使用
tcptraceroute
; 最重要的是不要使用預設值traceroute
(或者更糟糕的是經常建議的ping
),因為它不會真正模擬您需要的正確 TCP/80 或 TCP/443 流量;這可能需要一些時間,但您應該使用在前一點上找到的 IP 地址到達最後一行,並提及類似於[open]
這意味著您確實看到(並且可以訪問)在那裡執行的網站,因此沒有防火牆阻礙交換。- 您可以使用各種工具模擬完整的 HTTP(s) 交換,
wget
包括curl
或httpie
.- 專門用於調試您可以使用的 TLS 問題
openssl s_client
,gnutls
或者testssl.sh
更新:我現在已經用 Tor 載入了一次網站。不知道那告訴我什麼。
伺服器和客戶端之間可能有防火牆。因此,如果您更改源 IP 地址(這是使用 Tor 的副作用之一),訪問模式就會發生變化。