2020-09-23 【P2P overlay network】基于公网虚拟私网工具

本项目提供云网络服务,用于多地区组网技术,相当于将多个地域网络虚拟统一局域网,方便团队跨地域网络访问;提供统一控制面板进行管理,并且利用P2P技术提升节点近点加速;如果多个节点处于内网,那么会优先采用内网进行互通;并且支持多云转发管理;根据网络时延动态路由;

原理图:

image

版本特性:

  • 支持 windows & linux 客户端、服务端程序
  • 支持手动网络配置,云转发;
  • 支持多网络平面隔离;

软件下载地址:https://github.com/easymesh/easymesh/releases/

根据您所需要部署的形态决定;客户端、服务端没有绑定限制,支持windows & linux 混合部署使用;提供 gateway 和 transfer 两个可执行文件;gateway 属于客户端,transfer 属于服务端,该版本transfer还不支持分布式部署,部署transfer需要准备一个公网IP地址;

安装部署

1、准备工作:

部署gateway程序需要完成如下平台的检查和安装;

windows

  • 安装 tap windows 虚拟网卡驱动; win10 win7

linux

  • 查看tun设备是否存在; ls -ail /dev/net/tun

2、启动transfer程序

需要提前准备一台linux/windows云主机,并且绑定固定公网IP地址,不一定需要绑定域名;以及两个本地linux/windows测试节点;

启动命令:

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起始端口,注意转发transfer服务支持绑定多个端口,每个端口分别对于一个namespace,配合 -nums 参数,可以创建多个独立转发地址空间;默认端口范伟为:8000~9000,如果其中一个端口被占用,则会忽略并跳过该端口;
  • -debug: 调试模式,所以日志将打印到控制台,不会输出到目录;方便问题定位;
  • -log: 运行日志的目录地址;默认会记录30天运行日志,并且支持zip压缩;建议您保留大约1GB以上磁盘空间;
  • -nums: 命名空间数量,也对应服务实例数量,与-bind结合使用,请保留相应端口范围;
  • -public: 云服务主机对外IP或者域名;需要公网可以访问的IPv4地址;

注意:使用方式不区分windows、linux平台,启动后保持后台长时间运行即可;

3、启动gateway程序

在客户端侧,可以连接外网访问云主机的节点都可以;

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: 调试模式,所以日志将打印到控制台,不会输出到目录;方便问题定位;
  • -ip: 在当前虚拟网络中的虚拟地址IP,目前支持IPv4地址,例如:172.168.x.x,默认255.255.0.0网段,注意:不能与自身其他网卡网段冲突;
  • -log: 运行日志的目录地址;默认会记录30天运行日志,并且支持zip压缩;建议您保留大约1GB以上磁盘空间;
  • -trans: 连接相应转发服务,就是对应transfer的公网IP地址和端口;如果选用一个端口,那么其他需要加入同一个网络namespace的节点,端口需要保持一致;
  • -iface: 绑定本地网卡名称或者IP地址,比如:在linux环境下面默认eth0,而windows相对复杂;可以通过 控制面板 -> 网络与共享中心 -> 更改适配器设置 里面进行查看;例如截图: 对应名称为: vEthernet (wlan)或者查看IP地址方式,例如:linux 通过命令 ifconfig 查看相应IP地址,例如如下eth0对应的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命令查看地址:

以太网适配器 vEthernet (wlan):
连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : fe80::5523:9866:1b83:5ad7%9
IPv4 地址 . . . . . . . . . . . . : 192.168.3.11
子网掩码  . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . : 192.168.3.1

注意:使用方式不区分windows、linux平台,启动后保持后台运行即可;

4、测试连通性:

两个部署gateway的节点互ping对方的虚拟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

5、测试环境

为了方便大家测试,我们提供一台位于云主机服务器,已经部署transfer程序,提供大家测试使用,1Mb带宽,资源有限:

121.37.163.197:5000 ~ 121.37.163.197:6000
注意:任意选择一个端口测试即可,注意可能会有人同时使用一个端口;尽量测试完成后停止使用,避免与其他人冲突;

大家在本地部署gateway程序就可以了;准备两台节点;

参考命令:

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

两个节点相互ping对方虚拟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

注意:如果两个节点在同一个局域网,那么他们互ping时延也会很低,如果多个地域,会自动走公网转发服务,所以时延会较长;

也可以通过 ipconfig、ifconfig 查看虚拟网卡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
...
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,591评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,448评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,823评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,204评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,228评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,190评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,078评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,923评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,334评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,550评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,727评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,428评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,022评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,672评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,826评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,734评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,619评论 2 354