Ipv6

通過 ipv4 代理 Telnet 到 ipv6 主機

  • February 15, 2015

我有一個 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/

引用自:https://serverfault.com/questions/667679