CentOS8部署zerotier異地組網
CentOS8部署zerotier異地組網
一、前言
本文在此前研究部署FRP進行內網穿透,但FRP是基於公網伺服器的流量轉發,上下行的速率取決於公網伺服器的頻寬,並且每啟用一個服務都需要開放伺服器的一個埠,在易用性和安全性上都有著一定的問題。
為解決內網穿透需求,瞭解到zerotier這個工具,可以實現異地組網的功能。
在zerotier中,每一臺裝置都是一個客戶端,客戶端之間透過p2p連線。每臺裝置上安裝一個虛擬網路卡,實現虛擬區域網,這樣處於公網中的機器也能夠像在區域網中一樣互相訪問。
二、部署
-
安裝zerotier
Linux端的一鍵安裝命令:
curl -s https://install.zerotier.com | sudo bash
此外,解除安裝命令:dpkg -P zerotier-one rm -rf /var/lib/zerotier-one/
-
開啟zerotier
zerotier-one -d
若出現zerotier-one: fatal error: cannot bind to local control interface port 9993
則說明埠9993被佔用,接下來檢視埠占用資訊。
netstat -lp | grep 9993
若是自己佔用了,那麼結束其程序:
killall -9 zerotier-one
反覆執行,直到出現提示程序已全都結束。
若提示無killall
,安裝:
yum install psmisc
再次啟動zerotier。
若zerotier還是不能啟動,則開啟zerotier開機自啟:
systemctl enable zerotier-one.service
再次重啟。 -
zerotier加入網路
zerotier-cli join 需要加入的網路ID
當出現200 join OK
時,說明加入成功。 -
開啟IP轉發
編輯/etc/sysctl.conf
檔案
輸入一下兩行配置開啟IP轉發:net.ipv4.ip_forward=1 net.ipv6.conf.all.forwarding=1
解釋:
net.ipv4.ip_forward(net.ipv6.conf.all.forwarding選項同理)該選項設定為1
時,表示啟用了IP轉發功能。IP轉發是指網路裝置在接收到一個IP資料包後,根據目標IP地址對該資料包進行決策,並選擇合適的網路介面將其轉發出去。
當配置的值為1
時,系統將啟用IP轉發功能,允許將網路流量從一個介面轉發到另一個介面,使得不同網路之間能夠進行路由通訊。這在充當網路路由器或防火牆的系統中非常常見。
然而,需要注意的是,啟用IP轉發功能可能會對系統的安全性產生影響。因此,在應用中啟用此功能之前,應仔細評估網路安全風險,並採取適當的安全措施來保護系統和網路。
請謹慎使用IP轉發功能並確保採取了適當的網路安全措施。 -
zerotier配置路由表
如圖所示,格式為:
內網網段 via 跳板機所分配地址
-
跳板機設定路由表
輸入ip addr
記錄下連線區域網的物理網路卡和zerotier的虛擬網路卡(一般以zt開頭)
將網路卡名稱匯出為環境變數名:PHY_IFACE=物理網路卡名稱 ZT_IFACE=zerotier的虛擬網路卡名稱
更新路由表:
iptables -t nat -A POSTROUTING -o $PHY_IFACE -j MASQUERADE iptables -A FORWARD -i $PHY_IFACE -o $ZT_IFACE -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -i $ZT_IFACE -o $PHY_IFACE -j ACCEPT iptables-save
持久化路由表:
mkdir -p /etc/sysconfig/ sh -c "iptables-save > /etc/sysconfig/iptables"
在
/etc/rc.local
檔案最後新增一行:vi /etc/rc.local /sbin/iptables-restore < /etc/sysconfig/iptables
理論上在經過上述設定後開啟zerotier則可以實現在公網透過跳板機訪問區域網內裝置,但在本文實踐後發現只能訪問跳板機的區域網內IP地址,並不能訪問其餘區域網內裝置。不知是跳板機的路由表設定還是zerotier的路由表設定或是區域網內裝置防火牆問題,需要進一步排查。
-
後續
至此已經基本能夠透過zerotier實現公內網下無縫訪問單一裝置,已經基本滿足本文此前的需求,但還是沒有實現公網無縫組網的功能。
三、展望
- 透過區域網內跳板機設定IP轉發訪問其他區域網內裝置。
- 基於openwrt的軟路由安裝zerotier新增異地區域網實現組網。
參考
- 部署zerotier客戶端(Linux版本)適用於CentOS、Ubuntu等系統
- ZeroTier 異地組網
- 異地旁路組網:zerotier