惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
腾讯CDC
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
L
LINUX DO - 热门话题
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Project Zero
Project Zero
V
Vulnerabilities – Threatpost
Cisco Talos Blog
Cisco Talos Blog
P
Palo Alto Networks Blog
C
Cisco Blogs
A
Arctic Wolf
月光博客
月光博客
The GitHub Blog
The GitHub Blog
T
The Blog of Author Tim Ferriss
量子位
小众软件
小众软件
Latest news
Latest news
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Microsoft Security Blog
Microsoft Security Blog
T
The Exploit Database - CXSecurity.com
Security Latest
Security Latest
N
Netflix TechBlog - Medium
K
Kaspersky official blog
人人都是产品经理
人人都是产品经理
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园_首页
Y
Y Combinator Blog
P
Proofpoint News Feed
H
Hackread – Cybersecurity News, Data Breaches, AI and More
M
MIT News - Artificial intelligence
T
Threat Research - Cisco Blogs
S
Schneier on Security
D
Docker
Scott Helme
Scott Helme
MyScale Blog
MyScale Blog
Spread Privacy
Spread Privacy
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
GbyAI
GbyAI
有赞技术团队
有赞技术团队
Google DeepMind News
Google DeepMind News
The Hacker News
The Hacker News
H
Help Net Security
Simon Willison's Weblog
Simon Willison's Weblog
J
Java Code Geeks
C
Cyber Attacks, Cyber Crime and Cyber Security
T
Tenable Blog
B
Blog
Know Your Adversary
Know Your Adversary
IT之家
IT之家

Easton Man's Blog

龙芯3A6000:国产CPU中的一颗明星 | Easton Man's Blog HotChips 2023: Ventana 不寻常的 Veyron V1 | Easton Man's Blog 现代分支预测:从学术界到工业界 | Easton Man's Blog NSCSCC2022 龙芯杯参赛总结 | Easton Man's Blog 2021年终总结:你所热爱的,就是你的生活 | Easton Man's Blog 最优停止理论与导师选择 | Easton Man's Blog 论大学之义 | Easton Man's Blog Bash History的使用技巧 | Easton Man's Blog 现代处理器结构 | Easton Man's Blog
全球大内网与Zerotier | Easton Man's Blog
Easton Man · 2021-12-06 · via Easton Man's Blog

浏览量: 563

预计阅读时间: 6 分钟

前段时间把笔记本换成了MacBook Pro(真香),为了数据安全,自然是需要把Time Machine利用起来。而Time Machine只能备份到本地的硬盘或者AFP或者SMB或者Time Capsule。显然我没有多余的硬盘,也没有rich到来一个Time Capsule,但是我手头上恰好有一个2T HDD的大盘鸡(远在天边),所以想把Time Machine的备份放到这个大盘鸡里。

那么现在问题来了,SMB这个玩意儿的安全问题相信大家也都有所耳闻,我实在是不想把它暴露在公网上,这就需要一个VPN。正好我前几天黑五搞了一些BGP Player友好的鸡,甚至还有公网的ASN号,因此就想干脆组一个全球大内网吧。

其实我一开始的想法是Wireguard,因为这玩意儿大家都在吹,也在内核主线里,可以说相当的轻量,也很flexible。但是Wireguard的问题在于它是点对点的,也就是如果没有一个管理的途径的话,每条边都需要手动操作一次,非常麻烦。有的大佬用ansible解决,然而我并不会这么复杂的ansible

我总结了一下我对于全球大内网最主要的需求:

  • 无中心节点,或者说流量不能由中心节点转发
  • 轻量高效(OpenVPN什么的就免了),因为有的节点之间可以跑到千兆,如果不够轻量的话会有CPU瓶颈。
  • 配置简易,超过Wireguard的就免了
  • 确保安全,必须加密传输,稍弱一些如aes128的也可以,但是不能接受明文传输,所以VXLAN和GRE等也不满足了。

除此之外还有一些加分项:

  • multipath,我们的VPS服务商提供的网络接入质量不尽相同,如果有一种方式可以让两个线路较差的VPS通过一个线路较好的VPS进行转发其实可以得到更好的质量。不过目前除了iBGP+自定义cost似乎没有别的方式可以达到这样的效果。
  • 中心化的路由配置,这一项Zerotier恰好可以满足,如果我们需要桥接别的“真正的”内网,这个功能还是很实用的。
  • 跨平台客户端,虽然目前的方案并不需要这个功能,但是如果我们以后希望将大内网进一步扩大,可能会需要这个功能。

自建VS官方

有这么多鸡不自建也是浪费

zerotier有network controller,planet,moon等很多概念/角色,我也没搞懂,有懂的可以指点一下。自建network controller的好处在于可以避免官方的同一个网络50个客户端限制。自建moon的好处在于对称nat的情况下可以有较好的转发质量。

由于我们不需要考虑nat,所以就只自建network controller。

自建方案选型

由于好看是第一生产力手动添加网络和批准加入十分繁琐,所以需要一个GUI在网络控制器上,而不是按照官方的API使用curl来管理网络。

ztncui(Github官网)是一个基于zerotier-one API的前端,提供类似于官方my.zerotier.com的管理操作,可以添加网络,管理网络和路由等。

其他服务器自然是使用正常的zerotier-one作为节点加入。zerotier还提供有各个嵌入式平台和路由器平台的支持,可以说十分的跨平台了。

还有一点,这次我希望安装的服务器是一台buyvm/frantech的512MB内存的服务器,计划之后还要在上面跑bird,如果要收全表的话,512MB的内存可谓是捉襟见肘,所以首先排除使用docker的安装方式,尽量使用overhead比较小的安装。

安装过程

Zerotier

zerotier在我使用的Debian系发行版上只需要一行命令,注意需要gpg已安装,未安装的话会提示需要安装。

curl -s https://install.zerotier.com | sudo bash

如果你是安全nerd,也可以使用gpg验证脚本以后再执行,仍然是一行。

curl -s 'https://raw.githubusercontent.com/zerotier/ZeroTierOne/master/doc/contact%40zerotier.com.gpg' | gpg --import && \
if z=$(curl -s 'https://install.zerotier.com/' | gpg); then echo "$z" | sudo bash; fi

安装完成以后zerotier的源就会被加入apt中,以后只需要使用apt来管理和升级即可。

Ztncui

根据其官网的说明,是采用deb打包的方式安装,需要首先下载deb的安装包,然后再安装。

注意!此处具有实效性,建议按照官网安装最新的包!

curl -O https://s3-us-west-1.amazonaws.com/key-networks/deb/ztncui/1/x86_64/ztncui_0.7.1_amd64.deb
sudo apt-get install ./ztncui_0.7.1_amd64.deb

由于ztncui是使用nodejs开发的,因此还需设置一下production mode

sudo sh -c "echo 'NODE_ENV=production' >> /opt/key-networks/ztncui/.env"

ztncui默认监听127.0.0.1:3000,可以使用以下命令转发到本地访问

ssh -f [email protected] -L 3333:localhost:3000 -N

也可以使用以下命令打开一个https端口,没有配置的话使用的是self-signed证书,如果需要配置证书的话可以参考官方教程

sudo sh -c "echo 'HTTPS_PORT=3443' > /opt/key-networks/ztncui/.env"

最后重启ztncui是配置生效。

sudo systemctl restart ztncui

网络配置

这部分的配置其实比较简单,按照提示来就可以了,此处放一些截图供调研方案和选型的读者参考。

创建网络
创建后结果
Easy setup中添加cidr

最终效果

辣鸡nodejs果然占内存 安装完成以后大概内存占用是111MB,ztncui自己占了60MB,相对来说还可以接受。

mtr

可以看到,一天的丢包率只有0.1%,我认为是可以接受的。

iperf3

我的两台vps之间也能跑到比较高的速率。