一、zerotier是什么
- 利用zerotier替換frp來實現內網穿透,將需要連接的機器之間組建虛擬局域網,使用zerotier做軟交換機,因此可以實現多台機器之間的連接、即使這台機器在內網中。
- zerotier 網址、下載地址:https://www.zerotier.com/
- zerotier 網站(zerotier central)上建立一個虛擬環境,內有一個虛擬交換機,然后再在需要連接的機器上安裝適合自己版本(linux\win\mac)的zerotier並加入該網絡即可組建局域網(具體步驟見下一節)。
二、搭建步驟
zerotier 網站(zerotier central)上建立一個虛擬環境,內有一個虛擬交換機,然后再在需要連接的機器上安裝適合自己版本(linux\win\mac)的zerotier並加入該網絡即可組建局域網。
2.1 注冊zerotier並建立虛擬網關
訪問zerotier官網並按照提示注冊一個賬號,這個賬號用於登錄自己的zerotier central。
然后按照提示建立一個虛擬網絡,並選擇一個IP:
選擇一個好記的子網掩碼:
下圖是我建好的網絡:
假設網絡號為88812345678990(這個ID后面都需要用到)
2.2 在目標機器上下載安裝zerotier
假設一台機器是windows、一台是Linux
2.2.1在windows上安裝zerotier
在上面官網上下載對應版本並安裝即可,然后打開點擊 join network 並輸入網絡號ID 88812345678990,點擊加入,然后等待一分鍾左右,再打開zerotier central網站上就可看到windows機器的配置。並可以自己設置這台機器的management IP地址,以便訪問。當然這台機器的的網關192.168.0.1(如上面選擇的子網掩碼是192.168.0.0)
2.2.2 在Linux上在線安裝並設置為自啟動
- 首先,在線安裝zerotier
#(如果是ArchLinux)
$ sudo pacman -S zerotier-one
#(如果是Ubuntu/Debian/CentOS,則運行:)
$ curl -s https://install.zerotier.com/ | sudo bash
- 然后 join network:
# 運行 sudo zerotier-cli join networkID,例如:
$ sudo zerotier-cli join 9991234567890
會看到 200,join Ok這種類似的提示
- 最后設置自啟動
$ sudo systemctl start zerotier-one.service
$ sudo systemctl enable zerotier-one.service
-
如果有另外的機器已經安裝zerotier,則可以直接加入該局域網,一台機器也可以加入多個zerotier networkID局域網,甚至也可以將虛擬機加入這個局域網。
-
此時也會在zerocentral看到剛才加入的linux機器。
三、 遇到問題的小trick
- 如果加入到同一個局域網中,設置好ip后,都顯示Online的情況下,如果不可以相互ping通,應該要檢查一下防火牆是否開啟,需要關閉防火牆。
- 可以設置流量轉發,我當時需要用A機器訪問內網C機器,但是不知為何內網C機器加入虛擬局域網后Ping不通,因此在其他內網機器上安裝了一個虛擬機B,由於都在內網下,B可以直接訪問C。然后我將B加入虛擬局域網,並測試可以Ping通,然后嘗試用ssh 將A機器連接B機器,在ssh中控制B機器從而ssh連接C機器,
然后設置了流量轉發,本來是需要訪問的C機器的1111的端口,現在設置為訪問B機器的1111端口,然后B將該請求轉發到C機器上,且該轉發通道一直不關閉。命令如下:
#在B機器上執行
ssh -g -L B的端口號:C的IP:C的端口號 C的用戶名@C的IP地址