開發(fā)者利器欲芹!一款好用的內(nèi)網(wǎng)穿透開源工具 ztm 快速體驗

我有一臺臺式機菱父,配置比較高,放在家里官辽,有一臺筆記本隨身帶著同仆。由于個人工作和興趣原因亩钟,我經(jīng)常在臺式機上使用虛擬機創(chuàng)建不同的開發(fā)環(huán)境清酥。如果是在同一個局域網(wǎng)中蕴侣,一般不存在這個問題,使用“橋接模式”和主機共享一個 IP 地址段辱志,我就可以在筆記本上通過 IP 直接訪問這些虛擬機上的服務(wù)揩懒。

如果出門了呢挽封?這個時候就不能通過 IP 直接連接了,需要借助于內(nèi)網(wǎng)傳統(tǒng)的工具智亮。之前我一直都用的是花生殼和 ngrok阔蛉,花生殼有 2 個免費映射的額度癞埠,ngrok 只有 1 個,相當(dāng)不夠用遭笋,我記得有一段時間我同時做三個不同事情的開發(fā)瓦呼,使用三套不同的開發(fā)環(huán)境,那個時候人還在外地磨澡,導(dǎo)致我要頻繁刪除稳摄、創(chuàng)建花生殼和 ngrok 的映射饲宿。

有沒有一個可以不用“額外付費”的內(nèi)網(wǎng)穿透工具呢瘫想?因為我后面要提到的開源工具,需要用到一個公網(wǎng)的服務(wù)器作為轉(zhuǎn)發(fā)减噪。當(dāng)然我手上有一個云服務(wù)器筹裕,對我來說就不算“額外付費”窄驹,但是對于沒有開通云服務(wù)器的朋友來說乐埠,可能還是需要對比一下方案成本的,這里就不再詳述豪治。

ztm

ztm(https://github.com/flomesh-io/ztm)是一個基于 pipy(https://github.com/flomesh-io/pipy)構(gòu)建的網(wǎng)絡(luò)基礎(chǔ)設(shè)施:

ZTM is an open source network infrastructure software for running a decentralized network. It is built upon HTTP/2 tunnels and can run on any sort of IP networks such as LANs, containerized networks and the Internet, etc.

根據(jù) Github 倉庫上的 README 示例:

                            Data Center
          +-------------------------------------------+
          |                     Hub                   |
          |        (state in ~/.ztm/ztm-hub.db)       |
          +-------------------------------------------+
        HTTPS | Port 8888                 HTTPS | Port 8888
              |                                 |
  ------------|---------------------------------|--------------
              |             Firewall            |
  ------------|---------------------------------|--------------
              |                                 |
              |             Internet            |
              |                                 |
  ----------------------------  |  ----------------------------
          Firewall              |            Firewall
  ----------------------------  |  ----------------------------
              |                 |               |
              |                 |               |
  +--------------------------+  |  +--------------------------+
  |      Agent @ Home        |  |  |    Agent @ Workplace     |
  | (state in ~/.ztm/ztm.db) |  |  | (state in ~/.ztm/ztm.db) |
  +--------------------------+  |  +--------------------------+
                                |

我設(shè)計的實驗方案是創(chuàng)建兩臺虛擬機,一臺裝 Windows 10掩浙,一臺裝 Ubuntu 22.04,這兩臺電腦不屬于一個網(wǎng)段厨姚,不能直接訪問谬墙。首先我們準備實驗環(huán)境,大家可以根據(jù)自己的需求進行修改:

  1. 云服務(wù)器:Ubuntu 22.04部默,作為 ztm hub傅蹂,用來轉(zhuǎn)發(fā)流量算凿;
  2. 筆記本:要求能訪問互聯(lián)網(wǎng)氓轰,ztm agent 節(jié)點,作為 ztm mesh 的 root 用戶请敦,用來對其他 ztm agent 簽發(fā)證書储玫;
  3. Ubuntu 虛擬機(IP:192.168.2.137):Ubuntu 22.04撒穷,ztm agent 節(jié)點裆熙,用來部署測試服務(wù)入录;
  4. Windows 虛擬機(IP:192.168.2.138):Windows 10,ztm agent 節(jié)點凡桥,用來訪問測試服務(wù)缅刽。

這里說明一下,我在配置虛擬機網(wǎng)絡(luò)設(shè)置的時候迟蜜,都用的 NAT 模式啡省,沒配出來互相獨立的網(wǎng)段,導(dǎo)致這兩臺電腦還是屬于一個網(wǎng)段微姊,所以我直接在 Ubuntu 虛擬機上使用以下命令分预,對 Windows 虛擬機的 IP 進行了限制訪問:

sudo iptables -A INPUT -s 192.168.2.138 -j DROP

這樣 Windows 虛擬機就無法直接訪問 Ubuntu 虛擬機了笼痹,可以使用 ping 192.168.2.137 在命令前后測試一下,可以使用 sudo iptables -D INPUT -s 192.168.2.138 -j DROP 進行恢復(fù)晴裹。

我們首先在 ztm 的 Github 頁面上下載安裝包涧团,注意需要從 Actions 頁面上下載经磅,這里才是最新版预厌,不要從 Releases 頁面下載,下載 windows-build

云服務(wù)器

在 Ubuntu 22.04 我們采用源碼編譯苗沧,因為上面的 linux-build 在 Ubuntu 22.04 上運行會碰到一個 GLIBC 版本問題待逞,其他編譯環(huán)境請參考Build 文檔

apt update
apt install clang cmake npm

git clone https://github.com/flomesh-io/ztm.git
cd ztm
./build.sh

我們把編譯好的 ztm 二進制文件放到 PATH 路徑下识樱,運行以下命令啟動 ztm hub:

sudo /home/admin/bin/ztm start hub --listen 0.0.0.0:8888 --names {IP 或者 Domain}:8888 --permit root.json

這里注意它會在當(dāng)前運行命令的目錄下生成一個 root.json 文件牺荠,使用該文件加入到這個 Mesh(網(wǎng)格) 的節(jié)點擁有這個 Mesh 的 root 權(quán)限,也就是可以邀請用戶灶壶。

筆記本

我這里使用的是 Mac驰凛,我也是使用源碼編譯方式得到 ztm 命令行担扑,我們把上一步從云服務(wù)器啟動 ztm hub 生成的 root.json 文件拷貝到本地,首先需要啟動 ztm agent:

ztm start agent

我們打開瀏覽器胚宦,訪問 http://localhost:7777枢劝,agent 服務(wù)默認監(jiān)聽在 7777 端口您旁。我們點擊歡迎界面的 Join Mesh 按鈕填寫信息轴捎,網(wǎng)格字段填寫方便你識別的網(wǎng)格名稱,端點字段填寫方便你識別的端點名稱侦锯,選擇上一步的 root.json 作為右側(cè)的許可證率触,點擊保存:

點擊端點頁面的右上角,進行到證書簽發(fā)穴张,后續(xù)需要將兩臺虛擬機(Windows 和 Ubuntu)生成的 identity 發(fā)送給 root 用戶進行簽發(fā),下載簽發(fā)后的文件發(fā)送到對應(yīng)的 agent 節(jié)點:

Windows 虛擬機

在 Windows 上直接使用 ztm 提供的安裝包(前面提到的 windows-build)玻驻,推薦把安裝 ztm 的目錄加入到 PATH 環(huán)境變量中:

啟動 ztm户辫,點擊右上角下載 identity 文件渔欢,發(fā)送給 root 用戶進行上一步的簽發(fā)瘟忱,得到 permit 文件:

d334771d82a17e147296e825316a165f.png

在進行證書簽發(fā)的時候访诱,需要配置用戶名,這個是一個邏輯的用戶九榔,一個用戶可以擁有多個端點涡相,這個端點可以理解為進程,因為一臺物理機或虛擬機上可以運行多個端點攻旦,跑不同的 Mesh牢屋,這個在后續(xù)文章中會深入解釋這些概念槽袄。

Ubuntu 虛擬機

Ubuntu 虛擬機的操作也與 Windows 虛擬機類似遍尺,啟動 ztm agent,下載 identity迂苛,發(fā)給 root 用戶簽名三幻,拿到簽名后的 permit 文件呐能,使用該文件加入 Mesh。

經(jīng)過一番操作之后首妖,回到我的筆記本上爷恳,這個時候我們能看到的端點應(yīng)該如下:

然后我們在 Ubuntu 虛擬機啟動一個監(jiān)聽在 127.0.0.1:5000 的服務(wù)舌仍,注意此時 Windows 虛擬機是無法直接訪問 Ubuntu 虛擬機的。

內(nèi)網(wǎng)穿透

在 Windows 虛擬機上通過應(yīng)用頁面的隧道進行配置:

入口選擇 leo-vm-windows灌曙,監(jiān)聽 127.0.0.1:5001在刺,出口選擇 leo-vm-ubuntu蚣驼,目標(biāo) 127.0.0.1:5000相艇。

訪問成功坛芽!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末获讳,一起剝皮案震驚了整個濱河市活喊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌帅矗,老刑警劉巖结缚,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件红竭,死亡現(xiàn)場離奇詭異茵宪,居然都是意外死亡稀火,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進店門篇裁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來达布,“玉大人逾冬,你說我怎么就攤上這事〔梗” “怎么了嘀趟?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵她按,是天一觀的道長尤溜。 經(jīng)常有香客問我,道長丈攒,這世上最難降的妖魔是什么授霸? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任碘耳,我火速辦了婚禮,結(jié)果婚禮上捕捂,老公的妹妹穿的比我還像新娘。我一直安慰自己指攒,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著隙弛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪叉寂。 梳的紋絲不亂的頭發(fā)上室埋,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天姚淆,我揣著相機與錄音,去河邊找鬼腌逢。 笑死,一個胖子當(dāng)著我的面吹牛佳鳖,可吹牛的內(nèi)容都是我干的系吩。 我是一名探鬼主播妒蔚,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼科盛!你這毒婦竟也來了菜皂?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤榨崩,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蜡饵,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體溯祸,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡焦辅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年椿胯,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片前方。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡惠险,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出班巩,到底是詐尸還是另有隱情嘶炭,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布抑进,位于F島的核電站寺渗,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏户秤。R本人自食惡果不足惜鸡号,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一鲸伴、第九天 我趴在偏房一處隱蔽的房頂上張望府蔗。 院中可真熱鬧姓赤,春花似錦仲吏、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至距芬,卻和暖如春循帐,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背存和。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工衷旅, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人茄袖。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓嘁锯,卻偏偏與公主長得像,于是被迫代替她去往敵國和親家乘。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容