Linux

如何在 Linux 上使用 HTTP CONNECT 路由所有傳出 TCP 連接

  • May 30, 2011

我有一個位於防火牆後面的 Linux 系統,但它可以連接到通過所有 CONNECT 命令的 HTTP 代理。如何配置 Linux 系統以通過 HTTP CONNECT 通過 TCP 發出 DNS 請求,並通過 HTTP CONNECT 建立所有傳出 TCP 連接(到 HTTP 代理的連接除外)?

我正在尋找一種適用於任何程序的解決方案,包括直接呼叫的靜態連結二進製socket(2)文件connect(2)。(所以LD_PRELOAD不是一個可接受的解決方案,因為它不適用於靜態連結的二進製文件。)

看看Transocks,它可以通過 iptables 攔截 tcp 連接並通過 Socks 將它們隧道化。應該使用靜態二進製文件。

存在基於 TCP 的 DNS,但對於典型用途來說是非常不標準的。我不認為 libnsswitch 可以使用 tcp,但你可以安裝一個本地名稱伺服器說 tcp dns。您需要確保在外部某處有一個遞歸解析器,它將接受 tcp。

如果你在外面控制一台機器,設置一些 VPN 來傳輸 UDP 流量可能會更容易;一個 tsocksified openvpn,或帶有 -w 選項的 openssh。

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