本項(xiàng)目提供云網(wǎng)絡(luò)服務(wù),用于多地區(qū)組網(wǎng)技術(shù),相當(dāng)于將多個(gè)地域網(wǎng)絡(luò)虛擬統(tǒng)一局域網(wǎng)该互,方便團(tuán)隊(duì)跨地域網(wǎng)絡(luò)訪問;提供統(tǒng)一控制面板進(jìn)行管理听哭,并且利用P2P技術(shù)提升節(jié)點(diǎn)近點(diǎn)加速慢洋;如果多個(gè)節(jié)點(diǎn)處于內(nèi)網(wǎng)塘雳,那么會(huì)優(yōu)先采用內(nèi)網(wǎng)進(jìn)行互通陆盘;并且支持多云轉(zhuǎn)發(fā)管理;根據(jù)網(wǎng)絡(luò)時(shí)延動(dòng)態(tài)路由败明;
原理圖:
版本特性:
- 支持 windows & linux 客戶端隘马、服務(wù)端程序
- 支持手動(dòng)網(wǎng)絡(luò)配置,云轉(zhuǎn)發(fā)妻顶;
- 支持多網(wǎng)絡(luò)平面隔離酸员;
軟件下載地址:https://github.com/easymesh/easymesh/releases/
根據(jù)您所需要部署的形態(tài)決定蜒车;客戶端、服務(wù)端沒有綁定限制幔嗦,支持windows & linux 混合部署使用酿愧;提供 gateway 和 transfer 兩個(gè)可執(zhí)行文件;gateway 屬于客戶端邀泉,transfer 屬于服務(wù)端嬉挡,該版本transfer還不支持分布式部署,部署transfer需要準(zhǔn)備一個(gè)公網(wǎng)IP地址汇恤;
安裝部署
1庞钢、準(zhǔn)備工作:
部署gateway程序需要完成如下平臺(tái)的檢查和安裝;
windows
linux
- 查看tun設(shè)備是否存在;
ls -ail /dev/net/tun
2基括、啟動(dòng)transfer程序
需要提前準(zhǔn)備一臺(tái)linux/windows云主機(jī),并且綁定固定公網(wǎng)IP地址财岔,不一定需要綁定域名风皿;以及兩個(gè)本地linux/windows測(cè)試節(jié)點(diǎn);
啟動(dòng)命令:
Usage of transfer.exe:
-bind int
transfer server bind port (default 8000)
-debug
debug mode
-help
usage
-log string
log dir (default "/opt/log")
-nums int
transfer server instance nums (default 1000)
-public string
public IP (default "www.youdomain.com")
- -bind: 所需要綁定的UDP起始端口使鹅,注意轉(zhuǎn)發(fā)transfer服務(wù)支持綁定多個(gè)端口揪阶,每個(gè)端口分別對(duì)于一個(gè)namespace,配合 -nums 參數(shù)患朱,可以創(chuàng)建多個(gè)獨(dú)立轉(zhuǎn)發(fā)地址空間鲁僚;默認(rèn)端口范偉為:8000~9000,如果其中一個(gè)端口被占用裁厅,則會(huì)忽略并跳過該端口冰沙;
- -debug: 調(diào)試模式,所以日志將打印到控制臺(tái)执虹,不會(huì)輸出到目錄拓挥;方便問題定位;
- -log: 運(yùn)行日志的目錄地址袋励;默認(rèn)會(huì)記錄30天運(yùn)行日志侥啤,并且支持zip壓縮;建議您保留大約1GB以上磁盤空間茬故;
- -nums: 命名空間數(shù)量盖灸,也對(duì)應(yīng)服務(wù)實(shí)例數(shù)量,與-bind結(jié)合使用磺芭,請(qǐng)保留相應(yīng)端口范圍赁炎;
- -public: 云服務(wù)主機(jī)對(duì)外IP或者域名;需要公網(wǎng)可以訪問的IPv4地址钾腺;
注意:使用方式不區(qū)分windows徙垫、linux平臺(tái)讥裤,啟動(dòng)后保持后臺(tái)長(zhǎng)時(shí)間運(yùn)行即可;
3姻报、啟動(dòng)gateway程序
在客戶端側(cè)己英,可以連接外網(wǎng)訪問云主機(jī)的節(jié)點(diǎn)都可以;
Usage of gateway.exe:
-debug
debug mode
-help
usage
-iface string
used interface or ip address (default "eth0")
-ip string
virtual IP (default "172.168.0.1")
-log string
log dir (default "/opt/log")
-trans string
transfer public address (default "www.youdomain.com:8000")
- -debug: 調(diào)試模式吴旋,所以日志將打印到控制臺(tái)剧辐,不會(huì)輸出到目錄;方便問題定位邮府;
- -ip: 在當(dāng)前虛擬網(wǎng)絡(luò)中的虛擬地址IP荧关,目前支持IPv4地址,例如:
172.168.x.x
褂傀,默認(rèn)255.255.0.0
網(wǎng)段忍啤,注意:不能與自身其他網(wǎng)卡網(wǎng)段沖突; - -log: 運(yùn)行日志的目錄地址仙辟;默認(rèn)會(huì)記錄30天運(yùn)行日志同波,并且支持zip壓縮;建議您保留大約1GB以上磁盤空間叠国;
- -trans: 連接相應(yīng)轉(zhuǎn)發(fā)服務(wù)未檩,就是對(duì)應(yīng)transfer的公網(wǎng)IP地址和端口;如果選用一個(gè)端口粟焊,那么其他需要加入同一個(gè)網(wǎng)絡(luò)namespace的節(jié)點(diǎn)冤狡,端口需要保持一致;
- -iface: 綁定本地網(wǎng)卡名稱或者IP地址项棠,比如:在linux環(huán)境下面默認(rèn)eth0悲雳,而windows相對(duì)復(fù)雜;可以通過 控制面板 -> 網(wǎng)絡(luò)與共享中心 -> 更改適配器設(shè)置 里面進(jìn)行查看香追;例如截圖: 對(duì)應(yīng)名稱為:
vEthernet (wlan)
或者查看IP地址方式合瓢,例如:linux 通過命令ifconfig
查看相應(yīng)IP地址,例如如下eth0對(duì)應(yīng)的IP地址為:192.168.3.2
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.3.2 netmask 255.255.255.0 broadcast 192.168.3.255
inet6 fe80::215:5dff:fe03:b00 prefixlen 64 scopeid 0x20<link>
...
windows通過查看ipconfig命令查看地址:
以太網(wǎng)適配器 vEthernet (wlan):
連接特定的 DNS 后綴 . . . . . . . :
本地鏈接 IPv6 地址. . . . . . . . : fe80::5523:9866:1b83:5ad7%9
IPv4 地址 . . . . . . . . . . . . : 192.168.3.11
子網(wǎng)掩碼 . . . . . . . . . . . . : 255.255.255.0
默認(rèn)網(wǎng)關(guān). . . . . . . . . . . . . : 192.168.3.1
注意:使用方式不區(qū)分windows透典、linux平臺(tái)晴楔,啟動(dòng)后保持后臺(tái)運(yùn)行即可;
4峭咒、測(cè)試連通性:
兩個(gè)部署gateway的節(jié)點(diǎn)互ping對(duì)方的虛擬IP地址税弃;結(jié)果如下表示成功;
root@node2:~# ping 172.168.3.1
PING 172.168.3.1 (172.168.3.1) 56(84) bytes of data.
64 bytes from 172.168.3.1: icmp_seq=1 ttl=126 time=2.78 ms
64 bytes from 172.168.3.1: icmp_seq=2 ttl=126 time=3.65 ms
64 bytes from 172.168.3.1: icmp_seq=3 ttl=126 time=2.85 ms
5讹语、測(cè)試環(huán)境
為了方便大家測(cè)試钙皮,我們提供一臺(tái)位于云主機(jī)服務(wù)器蜂科,已經(jīng)部署transfer程序顽决,提供大家測(cè)試使用短条,1Mb帶寬,資源有限:
121.37.163.197:5000 ~ 121.37.163.197:6000
注意:任意選擇一個(gè)端口測(cè)試即可才菠,注意可能會(huì)有人同時(shí)使用一個(gè)端口茸时;盡量測(cè)試完成后停止使用,避免與其他人沖突赋访;
大家在本地部署gateway程序就可以了可都;準(zhǔn)備兩臺(tái)節(jié)點(diǎn);
參考命令:
windows:
gateway.exe -ip 172.168.3.1 -trans 121.37.163.197:5555 -iface "vEthernet (wlan)" -debug
linux:
./gateway -ip 172.168.3.2 -trans 121.37.163.197:5555 -iface "eth0" -debug
兩個(gè)節(jié)點(diǎn)相互ping對(duì)方虛擬IP蚓耽;
root@node2:~# ping 172.168.3.1
PING 172.168.3.1 (172.168.3.1) 56(84) bytes of data.
64 bytes from 172.168.3.1: icmp_seq=1 ttl=126 time=2.78 ms
64 bytes from 172.168.3.1: icmp_seq=2 ttl=126 time=3.65 ms
64 bytes from 172.168.3.1: icmp_seq=3 ttl=126 time=2.85 ms
注意:如果兩個(gè)節(jié)點(diǎn)在同一個(gè)局域網(wǎng)渠牲,那么他們互ping時(shí)延也會(huì)很低,如果多個(gè)地域步悠,會(huì)自動(dòng)走公網(wǎng)轉(zhuǎn)發(fā)服務(wù)签杈,所以時(shí)延會(huì)較長(zhǎng);
也可以通過 ipconfig鼎兽、ifconfig 查看虛擬網(wǎng)卡IP地址信息答姥;
mesh0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1472
inet 172.168.3.2 netmask 255.255.255.255 destination 172.168.3.2
...