Watch at Ease看見世界,讀懂生活。

科技 · 實用指南

curl 錯誤 6「無法解析主機」?先證明主機名與執行環境,再改 DNS

退出碼 6 無法指出故障歸屬。保留原始 URL,確認 curl 實際解析的主機名,並在失敗程序所用的解析器、代理與網路命名空間內重現。

原創圖:固定主機名、解析器與執行環境邊界。
原創示意圖:固定主機名、解析器與執行環境邊界。 Watch at Ease

curl 錯誤 6 只表示主機名未能解析,並不證明公共 DNS 故障。curl 可能讀到錯誤的主機標記、正在解析代理名稱,或執行於不同的服務與容器環境。

先固定完整命令、URL、錯誤與執行身分。在相同環境分別測試目標主機與已知正常主機,再只修改已證實的責任邊界。

保留命令並辨識主機名

複製原始參數、工作目錄、執行身分、URL 與完整錯誤。檢查引號、變數、空白和換行;錯誤中的主機名就是證據。

分開記錄協定、主機與連接埠;若有代理,也記錄代理主機。不要拿重打的簡化命令代表原始失敗。

在失敗環境內重現

在相同容器、服務使用者、排程工作或應用程序內執行最小查詢與 curl 詳細測試。互動 shell 成功不能排除服務問題。

同時測試目標主機與已知正常主機。兩者都失敗表示執行環境解析路徑異常;只有目標失敗時保留錯誤類別並檢查拼字與政策。

分開目的解析與代理解析

查明 curl 與應用代理設定的來源及範圍。過期代理名稱會造成錯誤 6,盲目刪除必要代理也會中斷存取。

在相同環境分別解析代理與目的主機,只變更已確認擁有者與預期政策一致的設定。

只把覆寫當限時診斷

curl --resolve 可把精確主機與連接埠綁定到已知位址,同時保留 URL 主機名。使用已驗證位址、明確測試窗口並保存結果。

覆寫成功只證明解析路徑不同,不能證明永久 hosts 項目安全;DNS 輪替與 HTTPS 名稱驗證仍存在。

用未改寫的原請求收尾

最小修復後,在原環境重跑原命令,記錄主機名、對端、代理決策、回應與退出碼,避免洩漏憑證。

若主機名改變、只能靠不明覆寫成功或其他環境仍失敗,就停止;原請求無寬泛改動即可成功才算完成。

原創圖:證明責任歸屬,再重跑未改寫的原請求。
原創示意圖:證明責任歸屬,再重跑未改寫的原請求。 Watch at Ease