內網穿透系列 Go語言

2022-08-23 09:27:07 字數 3362 閱讀 4603

軟體在kcp出現後進行了重構,將其底層udp支援替換為了kcp,使其效率大大提高,在某些惡劣的網路環境下依舊能有不錯的效果。當然,它也是支援tcp模式的,另外它也是支援加密的,在p2p打洞失敗的情況下也能夠自動切換為c/s模式來使用伺服器中轉。需要了解的是,軟體也提供了lite版本,僅支援p2p模式,資料完全不通過任何第三方伺服器中轉,保證了安全性,當然,這就要求了打洞的雙方至少有一方擁有公網ip。

和n2n類似的是,它也支援多個伺服器,能夠在多連線的情況下自動切換負載均衡以便提高速度。還有乙個特殊之處,是其原生支援socks5**,可以在公司網路等特殊網路環境下實現特定需求。

先介紹常規版本

dtunnel_s 啟動時會監聽乙個tcp埠,通過-addr設定,如果需要-ssl(預設是false),那麼要指定-cert載入ssl證書,之後客戶端連線也要開啟-ssl開關(預設是true的) -addrudp 是p2p打洞的輔助udp埠,能提高打洞成功率,對應dtunnel引數-buster指定同樣的ip和埠

#引數說明

-addr:tcp埠位址

-addrudp:udp埠位址,用於p2p輔助打洞

-admin:管理介面,用於提供api方便管理

-https:啟用管理介面的https支援,需要指定-cert和-cert引數,預設關閉

-ssl:啟用ssl支援,啟用需要指定-cert和-cert引數,預設關閉

-cert:證書路徑

-key:證書金鑰路徑

-dbhost:資料庫伺服器

-dbpass:資料庫密碼

-dbuser:資料庫使用者

-replace:如果客戶端註冊名衝突,踢掉之前的,預設關閉

-version:顯示版本

如果要鑑權(即如下方客戶端那樣有啥reg啊,link啊,然後還能限制同一ip使用數量),請配置資料庫(配置資料庫後客戶端必須要指定key引數才能連上,這玩意是資料庫裡的authkey欄位),資料庫的初始化sql

另外操作要麼自己往裡面填資料,要麼用admin的api

dtunnel_s 支援遠端介面管理,如果需要,可通過-admin 指定ip:埠,比如-admin 127.0.0.1:1234

支援的命令列表

列出所有reg的使用者

列出所有link到a的會話

踢掉會話號為1的客戶端(link端)

踢掉reg a的客戶端

廣播訊息,type(s:reg端,c:link端,a:所有客戶端),msg訊息內容,quit(預設引數,非空則廣播後客戶端被踢掉)

(使用者管理相關api,需要連線mysql)

配置mysql需要用到auth/auth.sql 建表語句,建表前請先建立資料庫dogtunnel

連線mysql需要在啟動引數中新增 -dbhost -dbuser -dbpass 引數,加了mysql之後就必須通過-key才能登入伺服器

mysql的使用方法請自行學習

usersetting下面有多個子命令(直接拼在上面主api後面)

&action=list&limita=0&limitb=10,分頁列出使用者資訊

&action=limit&user=aaa&size=10000 限制使用者aaa的c/s模式流量上線為10k(每日)

&action=add&user=aaa&passwd=1111&type=admin 新增使用者aaa,密碼1111,型別type(admin管理員(最高許可權),black黑名單,super高階使用者,type不傳預設普通使用者),返回的key使用者dtunnel 的-key引數

&action=get&user=aaa 返回aaa的使用者資訊

&action=del&user=aaa 刪除aaa

&action=key&user=aaa 返回aaa的新key

&action=set&user=aaa&type=super&serven=10&sessionn=100&pipen=10&sameip=10,對aaa的賬號做功能限制,type指定的型別有預設的幾套配置,也可以通過指定servern(可以註冊的名字數上限),sessionn(每個註冊的伺服器可以連線的會話數上限),pipen(每個會話最多支援幾條p2p管道),sameip(同ip可註冊服務數上限)來單獨指定配置

至於客戶端

遠端:dtunnel-addip127.0.0.1-buster1.2.3.4:8018-remote1.2.3.4::8000-clientkey testkey-compress-delay2-dnscache20-encrypt-kcp k2:v2-reg test-local:80-mode0-ssl

近端:dtunnel-addip127.0.0.1-buster1.2.3.4:8018-remote1.2.3.4::8000-clientkey testkey-compress-delay2-dnscache20-encrypt-kcp k2:v2-link test-local:8888-mode0-ssl

#引數說明

-addip:出口ip(單個或列表)

-buster:打洞伺服器,用於p2p模式

-remote:遠端伺服器,用於c/s模式

-clientkey:客戶端key,用於遠端和近端認證,需一致

-compress:壓縮資料,遠端和近端需一致

-debug:除錯模式

-delay:打洞失敗後重試延遲,秒

-dnscache:dns快取有效期,如果大於0將定時清空dns快取,分鐘

-encrypt:p2p模式加密

-f:從檔案中載入配置

-kcp:kcp配置,遠端和近端需一致

-key:訪問key(服務端資料庫中的authkey)

-reg:註冊名,遠端使用

-link:連線的註冊名,近端使用,用於識別連線遠端

-local:本地監聽埠,填socks5則為socks5**服務

-mode:連線模式(0:p2p打洞失敗後切換為c/s1:只使用p2p2:只使用c/s)

-pipen:管道數

-ds:資料糾錯??僅在p2p模式有效,遠端和近端需一致

-ps:奇偶校驗??僅在p2p模式有效,遠端和近端需一致

-ssl:啟用ssl支援,預設啟用,服務端沒有啟用的話請使用-ssl=false來關閉

-v:輸出詳細日誌

-version:顯示版本

NPS內網穿透穿透

最近使用公司的虛擬專用網導致我想自己試試怎麼搞出來的,有兩個行動硬碟想嘗試買個樹莓派來做個遠端可以訪問本地的網盤,就拿電腦測試一下。我看大概有以下種工具 frp nps 蒲公英和花生殼。後兩者都是有部分限制的,但不需要自己有伺服器。前兩個適合有伺服器的,我就嘗試了一下nps,我這裡主要試了 的 具體...

ssh內網穿透

總共有3臺機械人 company 能夠訪問外網,沒用公網ip person 能夠訪問外網,沒有公網ip server 具有公網ip person電腦想在家裡遠端ssh登陸到公司的機器 server sudo apt get install openssh server vim etc ssh ssh...

內網穿透 Sunny Ngrok

背景 其實是想自己做個什麼專案可以讓大家都看得到,本來想的是自己租乙個伺服器再租乙個網域名稱。但是一直沒有什麼好的想法,也就一直沒有租,總想著有了想法之後在租,要不多浪費錢是吧 雖然沒有多少錢 然後就遇到我 偉大 的朋友給我介紹了乙個內網穿透的工具 sunny ngrok 內網穿透工具不只這乙個 還...