wstunnel是靜態(tài)二進制文件,通過Websocket或HTTP2協(xié)議傳輸所有流量,它可以繞過防火墻/DPI。大多數(shù)時候,當你使用公共網(wǎng)絡時,你都在某種防火墻或代理后面。它們的目的之一是限制你只能使用某些類型的協(xié)議,并且只能查閱網(wǎng)絡的一個子集。如今,最廣泛使用的協(xié)議是http,并且事實上是由第三方設備允許的。Wstunnel使用與http兼容的websocket協(xié)議來繞過防火墻和代理。Wstunnel允許您通過隧道傳輸您想要的任何流量,并訪問您需要的任何資源/站點。項目的靈感來自這個項目https://github.com/mhzed/wstunnel,但由于我不想安裝npm和nodejs來使用這個工具,我在Rust中重新制作并改進了它。
良好的錯誤消息和調(diào)試信息
靜態(tài)正向和反向隧道(TCP、UDP、Unix套接字)
動態(tài)隧道傳輸(TCP、UDP Socks5代理和透明代理)
支持http代理(當在一個代理后面時)
支持帶有證書自動重新加載的tls/https服務器(帶有嵌入的自簽名證書或您自己的證書)
支持IPv6
支持Websocket和HTTP2作為傳輸協(xié)議(Websocket性能更高)
獨立的二進制文件(只需在需要的地方進行cp)
懂得了它的好處,那么講一下它的用法。
最簡單的用例:
在遠程主機上,通過在終端鍵入以下命令啟動wstunnel的服務器
wstunnel server wss://[::]:8080
這將創(chuàng)建一個websocket服務器,并偵聽主機上的端口8080。在客戶端,使用此命令通過websocket隧道轉發(fā)流量
wstunnel client -L socks5://127.0.0.1:8888 --connection-min-idle 5 wss://myRemoteHost:8080
此命令將在環(huán)回接口的端口8888上創(chuàng)建一個socks5服務器,并動態(tài)轉發(fā)流量。connection min idle 5正在進行優(yōu)化,以創(chuàng)建連接到服務器的5個連接池,從而加快新隧道的建立。使用firefox,您可以使用此隧道設置代理,方法是在網(wǎng)絡首選項127.0.0.1:8888中設置并選擇socks5 proxy。當使用SOCKS v5為服務器解析DNS名稱而不是您的本地計算機時,請確保選中“代理DNS”選項。curl -x socks5h://127.0.0.1:8888 http://google.com/#Please note h after the 5, it is to avoid curl resolving DNS name locally
如果希望將wstunnel用作ssh的代理命令的一部分,則可以將stdio指定為客戶端的源端口。ssh -o ProxyCommand="wstunnel client -L stdio://%h:%p ws://myRemoteHost:8080" my-server
另一個有用的例子是當您想要繞過http代理(例如公司代理)時。最可靠的方法是使用wstunnel,如下所述wstunnel server wss://[::]:443 --restrict-to 127.0.0.1:22
服務器將使用端口443(https)偵聽任何接口,并限制流量僅轉發(fā)到ssh守護進程。請注意,服務器將使用加密算法較弱的自簽名證書。這樣做是為了在遵守tls的同時增加盡可能少的開銷。不要依賴wstunnel來保護您的隱私,如果這是您關注的問題之一,您應該只轉發(fā)設計上已經(jīng)安全的流量(即https或vpn流量)現(xiàn)在在客戶端主機上啟動wstunnel客戶端wstunnel client -L tcp://9999:127.0.0.1:22 -p http://mycorporateproxy:8080 wss://myRemoteHost:443
它將在9999端口上啟動一個tcp服務器,該服務器將與公司代理聯(lián)系,與遠程主機協(xié)商tls連接,并將流量轉發(fā)到遠程主機上的ssh守護進程。現(xiàn)在,您可以在本地機器使用ssh訪問服務器ssh -p 9999 login@127.0.0.1
該文章在 2024/3/28 22:25:59 編輯過