在當今互聯網環境中,許多設備由于受到NAT(Network Address Translation)限制,很難直接從外部網絡訪問。然而,通過反向代理和隧道技術,我們可以將這些設備暴露到互聯網上。多種此類工具已經存在,如frp和ngrok,但是這些工具在性能和資源消耗上存在一定的不足。本文將深入介紹一個新的替代方案:rathole。
rathole是一個使用Rust編寫的輕量級高性能反向代理,專為NAT穿透而設計,旨在替代frp和ngrok。它主要有以下幾個特點:
要開始使用rathole,您需要一個具有公共IP的服務器和一個在NAT后面的設備。假設您在NAT后的家用網絡附加存儲(NAS)上運行了一個SSH服務,并希望將其暴露到互聯網上??梢酝ㄟ^以下步驟實現:
創建并編輯server.toml:
[server]bind_addr = "0.0.0.0:2333" [server.services.my_nas_ssh]token = "use_a_secret_that_only_you_know" bind_addr = "0.0.0.0:5202"
啟動服務器:
./rathole server.toml
創建并編輯client.toml:
[client]remote_addr = "myserver.com:2333" [client.services.my_nas_ssh]token = "use_a_secret_that_only_you_know" local_addr = "127.0.0.1:22"
啟動客戶端:
./rathole client.toml
現在,客戶端會嘗試連接到服務器myserver.com的端口2333,并將任何到達myserver.com:5202的流量轉發到客戶端的22端口。您可以通過SSH連接到myserver.com:5202來訪問您的NAS。
rathole可以通過配置文件自動確定運行模式(服務器或客戶端),根據配置文件中是否包含[server]或[client]塊來決定。如果希望顯式指定運行模式,可以使用命令行選項--server或--client。
示例配置文件如下:
[client]remote_addr = "example.com:2333"default_token = "default_token_if_not_specify"heartbeat_timeout = 40retry_interval = 1[client.transport]type = "tcp"[client.transport.tcp]proxy = "socks5://user:passwd@127.0.0.1:1080"nodelay = truekeepalive_secs = 20keepalive_interval = 8[client.services.service1]type = "tcp"token = "whatever"local_addr = "127.0.0.1:1081"nodelay = trueretry_interval = 1[client.services.service2]local_addr = "127.0.0.1:1082"
[server]bind_addr = "0.0.0.0:2333"default_token = "default_token_if_not_specify"heartbeat_interval = 30[server.transport]type = "tcp"[server.transport.tcp]nodelay = truekeepalive_secs = 20keepalive_interval = 8[server.services.service1]type = "tcp"token = "whatever"bind_addr = "0.0.0.0:8081"nodelay = true[server.services.service2]bind_addr = "0.0.0.1:8082"
rathole使用環境變量來控制日志級別。支持的日志級別包括info, warn, error, debug, trace。例如,運行以下命令可以僅記錄錯誤級別的日志信息:
RUST_LOG=error ./rathole config.toml
如果未設置RUST_LOG,默認日志級別為info。
從v0.4.7起,rathole默認啟用TCP_NODELAY,這有助于降低延遲,適用于交互式應用程序如rdp和Minecraft服務器。如果帶寬更重要,可以通過設置nodelay = false來禁用此選項。
rathole的延遲與frp相近,但可以處理更多的連接,提供更大的帶寬,并且內存使用更少。
然而需注意,rathole不能神奇地使轉發服務的速度比以前快數倍?;鶞蕼y試是在本地回環上進行的,主要展示的是CPU受限情況下的性能。如果網絡不是瓶頸,則會帶來不小的提升。不幸的是,這種情況對于許多用戶來說并不常見。這種情況下,主要的好處是較低的資源消耗,而帶寬和延遲可能不會顯著改善。
通過本文介紹,您應該對rathole有了深入的了解。作為一個基于Rust開發的高性能反向代理工具,rathole在性能和資源消耗上具有顯著優勢,并且提供了靈活的配置方式和優秀的安全性選擇。如果您正在尋找一種新型的解決方案來替代frp或ngrok,rathole無疑是一個值得嘗試的選擇。
本文鏈接:http://www.tebozhan.com/showinfo-26-92735-0.htmlRathole:基于Rust開發的輕量級高性能反向代理,替代Frp和Ngrok!
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com