通過 ipv4 代理 Telnet 到 ipv6 主機
我有一個 dante socks 伺服器,它配置為偵聽 ipv4 IP 並具有 ipv6 外部 IP。
我試圖弄清楚如何驗證它是否真的有效。
我嘗試使用
curl
,但如果我輸入:curl http://google.com --socs5 1.2.3.4:9000
我會在 date socks 方面得到一個錯誤,因為
google.com
解析為一個 ipv4 地址,但丁說它無法路由 IPv4,因為它沒有配置為外部地址的 IPv4 地址。這幾乎是意料之中的。然後我找到
-6
了 curl 的參數。它現在解析google.com
為 IPv6 地址,但現在也嘗試解析1.2.3.4
為錯誤的 IPv6 地址。如果我嘗試明確使用 IPv6 作為 curl 的 URL,我會收到錯誤消息:
curl 'http://[2a00:1450:400c:c03:0:0:0:8b]/' --socks5 1.2.3.4:9000
我也嘗試在 telnet 中使用代理鏈,但似乎如果我在代理鏈中指定 IPv4 地址作為代理:
socks5 1.2.3.4
如果將 IPv6 與 telnet 一起使用,它會簡單地忽略該代理並執行直接請求:
proxychains telnet 2a00:1450:400c:c03:0:0:0:8b 25
那麼如何通過 IPv4 地址上的 socks 代理遠端登錄到具有 IPv6 地址的東西?
您所看到的是為什麼通過 SOCKS 發送主機名並讓 SOCKS 伺服器將其解析為 IP 地址而不是在 SOCKS 客戶端上解析 IP 地址幾乎總是更好的眾多原因之一。
在
curl
手冊頁中,我發現提到了兩個不同的 SOCKS5 選項,具體取決於您要解析主機名的哪一側。--socks5
將解析客戶端上的主機名,--socks5-hostname
將解析伺服器上的主機名。我建議使用後者。其他SOCKS
客戶端可能還需要配置為在 SOCKS 伺服器上進行主機名解析。例如,我發現 Firefox 預設會在客戶端解析主機名,但它確實有一個配置選項可以在伺服器上執行此操作。手冊頁也建議使用
--proxy
而不是--socks*
選項。根據我的閱讀,您的案例的正確語法是--proxy socks5h://192.0.2.4:9000/