Linux
如何在 Linux 上使用 HTTP CONNECT 路由所有傳出 TCP 連接
我有一個位於防火牆後面的 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。