Awesome NoCode / LowCode
A curated list of delightful NoCode / LowCode applications and resources. For more awesomeness, check out awesome.
A curated list of delightful NoCode / LowCode applications and resources. For more awesomeness, check out awesome.
vcenter server架构 vcenter server的作用和功能
https://blog.51cto.com/u_16213569/7598759
何为ALL IN ONE
在一个电脑上,完成所有IT需求
软路由
旁路由
nas网络存储
windows系统
linux系统
一般情况下,这需要2台以上的电脑才可能实现
本篇文章是一个全方位的知识分享,是可以帮助大家从无到有的搭建ALL IN ONE做一个认识型的了解
硬件篇
家用一定要省电,所以作者的硬件篇都基于低功耗硬件,
何为低功耗 ,CPU与主板整合在一起的x86电脑(它的功耗相对于CPU和主板分离要低50%),没有选择arm,是因为要打造all in one ,arm架构的硬件上软件方案能够折腾的东西太少,但笔者并没有完全的抛弃ARM机器,它也会有一席之地
低功耗版本
服务器选型
首推J4125
十代INTEL赛扬,目前第十一代INTEL N5105快形成主流市场,所以目前在闲鱼市场,它在市场属于淘汰产品,性价比极高
I3,5( 4代以上整合主板)
作者自己是i5-6200u 帮朋友整过i5 4300u,i3-7100u 为啥要重点在4代以上,因为3代以下,功耗较高,4代后,都在15W左右,同时核显有一定硬解1080的能力,如果需要完美硬件,至少要在第7代i系列芯片上
相对的低功耗超强版本
d1581
d系列是intel服务器市场上整合主板的主力系列,而真正有流通到中国市场,目前是d1581这块芯片,它只有65W功耗,同时具备16核32线程的 可以让你框框数到发晕的程度,笔者是最后才用到它的(选用的是火神革命高配版本 配上64G内存),用了它之后,才知道什么是最强的all in one ,当然没有特殊要求,不建议使用,多了40W,也都是钱,笔者家里用电是7*24小时不关机的
瘦主机
j1900(x86)
做为一个经受过矿难的矿产品,它现在在闲鱼上的价格,非常香,做x86架构的瘦主机,价格太香(只有10W的功耗)
玩客云和N1(arm)
玩客云(v7 a9 32位)和N1(v8 a53 64位) ,都是市场上 量很大的设备,它们都是拥有优秀的硬件和丰富的接口,通过普通android系统,配合windows 远程桌面APP,做为瘦主机,特点就是超低的功耗,比j1900还要低一倍的功耗,更低的发热,是我认为未来瘦主机的天下,一定是arm架构的天下
软件篇
虚拟化系统
相信大部分玩家,都用过windows平台的vm虚拟软件吧,但它家的虚拟化系统esxi,相信用得人很少,同时如果使用esxi,做为单机使用,是免费的
笔者在 在 esxi,proxmox ve 二个系统中选择了proxmox ve,简称pve 此二款系统无论是企业级应用和家庭应用都非常适合,其它的系统太小众,资料和文档以及兼容性都会有一些缺点
为什么没有选择 esxi呢,原因如下:
a.虽然它单机使用免费,但它的母公司的产品拆得很细,笔者是一个爱折腾的玩家,后面难免会用到更多的特性,到时候,花钱还是不花钱,又成了一个命题
b. esxi也挑硬件,比如非intel的网卡兼容性就很不好
c. esxi没有lxc容器,我其实并不喜欢套娃,lxc容器,可以明显的减少套娃的层次
而反观pve系统
1.对硬件兼容性高,直通性功能强
2.集群等其它特性全免费
3.有lxc容器,可以支持一个linux内核,虚拟多个linux实例
PVE
PVE的安装过程我就不在本章中展开,网上很多,我这里贴一下我参考过且实践的,如果有些同学有问题,我可以容易回答pve安装和集群
https://blog.csdn.net/qq_43417559/article/details/121338492
1
注意:集群一旦建立,其中主集群节点如果下机,就会导致其它节点无法正常启动PVE很稳定,但要不断的折腾系统的同学,就不要玩集群,想利用集群减轻运维工作量,它是一个利器
pvetools.sh
作者github地址:
https://github.com/ivanhao/pvetools
1
pve的一些基础运维脚本的图形化聚合,切源,安装基本软件等等,虽然在pve7.x有一些小BUG,但可以接受
但发现其实有些时候是访问不了的,所以我这里提供一个附件版本:
https://download.csdn.net/download/vipshop_fin_dev/86400251
1
# 通过ssh方式将pvetools.sh传到linux容器中
# 给它赋权限
chmod 777 pvetools.sh
# 执行命令,打开图形化界面
./pvetools.sh
1
2
3
4
5
如下图所示效果:
软路由
有了PVE系统后,一般都会安装软路由,它可以突破硬路由器的功能,去扩展硬由不足的地方,比如功能,比如性能
功能这块,因为软路由系统有很多,国外比较出名的是 openwrt(小米、斐讯这些都是基于openwrt 为基础打造的系统)
,专业性强的ROS等,国内基于上是爱快的天下,它太简单,使用门槛级低,它的分发能力,非常强
我这里强烈推荐使用爱快做 国,软路由的首选。
旁路由
提到软路由,有一部分可能会了解,但什么是旁路由,估计很多人不清楚,路由中的网关,大家应该都清楚吧,这个网关,它一般是路由自己,但其实也可以是另一个路由,但它的系统一般都首先openwrt ,因为开源,及丰富的插件
有二种组合,可以帮助大家对旁路由有一定的感知
1.虚拟化下,虚拟一个爱快做为主路由、虚拟一个openwrt做为旁路由
2.家里主路由器太老,但又舍不得换,但它的负载很重,那么可以选择一个x86或arm 小机器,做为旁路由,比如可以使用arm架构 玩客云或N1,刷openwrt的系统
旁路由是一种 对现有主路由的补充,它在家用领域使用不多,但在企业级应用,是非常重要的
NAS系统
NAS(Network Attached Storage) 网络连接存储系统 ,它的主要功能就是聚焦在存储和网络连接二个方面
相信大家都知道家里的照片和资料,其实是非常重要的,信息化越发达,各种智能设备越来越多样化
我推荐群晖(synology做为全世界最流行的nas系统), 它能够支持绝大部分平台对接,无论是苹果或安桌、或WINDOWS、LINUX系统,它都有对应方案,使大家简单对接
存储上支持非常丰富的网络协议,常规的SMB、或NFS 等远程协议
软阵列,也支持raid0,1,5 等常规的,来保证数据的安全性
只要对数据有要求,相信都会愿意搭建一个nas系统并配合 域名,在任何地方都可以储放自己宝贵的信息
白群晖&半白群晖&黑群晖 知识点
白群晖是硬件和软件都是正版本的系统
半白群晖,使用了正版本SN,但系统是破解的,硬件是第三方的,基本功能可以正常使用
黑群晖,系统是破解版本,同时硬件也是第三方的,功能也无法全部正常使用
WINDOWS系统
这个大家都有需求,但在虚拟化中使用windows,它是一种瘦主机+服务器或普通PC+服务器的体验
我尝试将家里所有的PC需求,转移到 瘦主机+服务器方案
目前使用的瘦主机系统 是 朵拉云科技 (https://www.doracloud.cn/) 这家公司的,因为它对windows远程桌面免费
且提供系统引导方案,满足我的需求,确实也很好用,刷好系统后,无感知的启动就和使用普通电脑一样
windows推荐使用win10 ,并打开并行访问配置,可以当服务器使用
LINUX系统
linux系统 做为一个开发人员,一定要有一个linux系统,但其实linux的世界是丰富的
lxc容器
pve支持ct 容器虚拟化,它实际上就是lxc容器,用pve自身linux内核 驱动虚拟出来的容器,这相对于普通虚拟化 ,少了一层虚拟化,普通虚拟化,还要虚拟linux内核
我喜欢在此lxc容器下面安装docker,lxc+docker 是我认为的最佳方案
宝塔linux面板
宝塔(https://www.bt.cn/new/index.html)是一个linux的面板(它有免费和收费俩个版本),它可以帮助我们更好的运维linux
我本人其实是一个典型的实践派,不喜欢死背,而宝塔它可以帮我内聚好了很多的命令,减少了大量的重复敲命令的运维工作,快速实现想要的环境和监控,是linux系统运维的好帮手
结束语
因为涉及的知识点较多,这里是一个大的介绍
也许后面会出一些系列文章,展开其中一些点
是如何安装及各种问题
朱杰 2022-08-14
————————————————
版权声明:本文为CSDN博主「软件开发随心记」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/vipshop_fin_dev/article/details/126324672

由于国内网络环境问题, 普遍家庭用户宽带都没有分配到公网 IP(我有固定公网 IP, 嘿嘿); 这时候一般我们需要从外部访问家庭网络时就需要通过一些魔法手段, 比如 VPN、远程软件 (向日葵…) 等; 但是这些工具都有一个普遍存在的问题: 慢 + 卡!
究其根本因素在于, 在传统架构中如果两个位于多层 NAT(简单理解为多个路由器)之后的设备, 只能通过一些中央 (VPN / 远程软件) 中转服务器进行链接, 这时网络连接速度取决于中央服务器带宽和速度; 这种网络架构我这里简称为: 星型拓扑

从这张图上可以看出, 你的 “工作笔记本” 和 “家庭 NAS” 之间通讯的最大传输速度为
Up/Down: 512K/s; 因为流量经过了中央服务器中转, 由于网络木桶效应存在, 即使你两侧的网络速度再高也没用, 整体的速度取决于这个链路中最低的一个设备网速而不是你两端的设备.
在这种拓扑下, 想提高速度只有一个办法: 加钱! 在不使用 “钞能力” 的情况下, 普遍免费的软件提供商不可能给予过多的资源来让用户白嫖, 而自己弄大带宽的中央服务器成本又过高.
本部分只做简述, 具体里面有大量细节和规则可能描述不准确, 细节部分推荐阅读 How NAT traversal works.
既然传统的星型拓扑有这么多问题, 那么有没有其他骚操作可以解决呢? 答案是有的, 简单来说就是利用 NAT 穿透原理. NAT 穿透简单理解如下: 在 A 设备主动向 B 设备发送流量后, 整个链路上的防火墙会短时间打开一个映射规则, 该规则允许 B 设备短暂的从这个路径上反向向 A 设备发送流量. 更通俗的讲大概就是所谓的: “顺着网线来打你”

搞清了这个规则以后, 我们就可以弄一台 “低配” 的中央服务器, 让中央服务器来帮助我们协商两边的设备谁先访问谁 (或者说是访问规则); 两个设备一起无脑访问对方, 然后触发防火墙的 NAT 穿透规则 (防火墙打开), 此后两个设备就可以不通过中央服务器源源不断的通讯了. 在这种架构下我们的设备其实就组成了一个非标准的网状拓扑:

在这种拓扑下, 两个设备之间的通讯速度已经不在取决于中央服务器, 而是直接取决于两端设备的带宽, 也就是说达到了设备网络带宽峰值. 当然 NAT 穿透也不是百分百能够成功的, 在复杂网络情况下有些防火墙不会按照预期工作或者说有更严格的限制; 比如 IP、端口、协议限制等等, 所以为了保证可靠性可以让中央服务器中转做后备方案, 即尽量尝试 NAT 穿透, 如果不行走中央服务器中继.
第一部分是为了方便读者理解一些新型内网穿透的大致基本原理, 现在回到本文重点: Tailscale
Tailscale 就是一种利用 NAT 穿透 (aka: P2P 穿透) 技术的 VPN 工具. Tailscale 客户端等是开源的, 不过遗憾的是中央控制服务器目前并不开源; Tailscale 目前也提供免费的额度给用户使用, 在 NAT 穿透成功的情况下也能保证满速运行.
不过一旦无法 NAT 穿透需要做中转时, Tailscale 官方的服务器由于众所周知的原因在国内访问速度很拉胯; 不过万幸的是开源社区大佬们搓了一个开源版本的中央控制服务器 (Headscale), 也就是说: 我们可以自己搭建中央服务器啦, 完全 “自主可控” 啦.
以下命令假设安装系统为 Ubuntu 22.04, 其他系统请自行调整.
Headscale 是采用 Go 语言编写的, 所以只有一个二进制文件, 在 Github Releases 页面下载最新版本即可:
# 下载 wget https://github.com/juanfont/headscale/releases/download/v0.16.4/headscale_0.16.4_linux_amd64 -O /usr/local/bin/headscale # 增加可执行权限 chmod +x /usr/local/bin/headscale
复制
下载完成后为了安全性我们需要创建单独的用户和目录用于 Headscale 运行
# 配置目录 mkdir -p /etc/headscale # 创建用户 useradd \ --create-home \ --home-dir /var/lib/headscale/ \ --system \ --user-group \ --shell /usr/sbin/nologin \ headscale
复制
为了保证 Headscale 能持久运行, 我们需要创建 SystemD 配置文件
# /lib/systemd/system/headscale.service[Unit]Description=headscale controller After=syslog.target After=network.target[Service]Type=simple User=headscale Group=headscale ExecStart=/usr/local/bin/headscale serve Restart=always RestartSec=5# Optional security enhancements NoNewPrivileges=yes PrivateTmp=yes ProtectSystem=strict ProtectHome=yes ReadWritePaths=/var/lib/headscale /var/run/headscale AmbientCapabilities=CAP_NET_BIND_SERVICERuntimeDirectory=headscale[Install]WantedBy=multi-user.target
复制
安装完成以后我们需要在 /etc/headscale/config.yaml 中配置 Headscale 的启动配置, 以下为配置样例以及解释 (仅列出重要配置):
---# Headscale 服务器的访问地址 # # 这个地址是告诉客户端需要访问的地址, 即使你需要在跑在 # 负载均衡器之后这个地址也必须写成负载均衡器的访问地址server_url: https://your.domain.com # Headscale 实际监听的地址listen_addr: 0.0.0.0:8080# 监控地址metrics_listen_addr: 127.0.0.1:9090# grpc 监听地址grpc_listen_addr: 0.0.0.0:50443# 是否允许不安全的 grpc 连接(非 TLS)grpc_allow_insecure: false# 客户端分配的内网网段ip_prefixes: - fd7a:115c:a1e0::/48 - 100.64.0.0/10# 中继服务器相关配置derp: server: # 关闭内嵌的 derper 中继服务(可能不安全, 还没去看代码) enabled: false # 下发给客户端的中继服务器列表(默认走官方的中继节点) urls: - https://controlplane.tailscale.com/derpmap/default # 可以在本地通过 yaml 配置定义自己的中继接待你 paths: []# SQLite configdb_type: sqlite3db_path: /var/lib/headscale/db.sqlite # 使用自动签发证书是的域名tls_letsencrypt_hostname: ""# 使用自定义证书时的证书路径tls_cert_path: ""tls_key_path: ""# 是否让客户端使用随机端口, 默认使用 41641/UDPrandomize_client_port: false
复制
可能很多人和我一样, 希望使用 ACME 自动证书, 又不想占用 80/443 端口, 又想通过负载均衡器负载, 配置又看的一头雾水; 所以这里详细说明一下 Headscale 证书相关配置和工作逻辑:
1、Headscale 的 ACME 只支持 HTTP/TLS 挑战, 所以使用后必定占用 80/443
2、当配置了 tls_letsencrypt_hostname 时一定会进行 ACME 申请
3、在不配置 tls_letsencrypt_hostname 时如果配置了 tls_cert_path 则使用自定义证书
4、两者都不配置则不使用任何证书, 服务端监听 HTTP 请求
5、三种情况下 (ACME 证书、自定义证书、无证书) 主服务都只监听 listen_addr 地址, 与 server_url 没半毛钱关系
6、只有在有证书 (ACME 证书或自定义证书) 的情况下或者手动开启了 grpc_allow_insecure 才会监听 grpc 远程调用服务
综上所述, 如果你想通过 Nginx、Caddy 反向代理 Headscale, 则你需要满足以下配置:
1、删除掉 tls_letsencrypt_hostname 或留空, 防止 ACME 启动
2、删除掉 tls_cert_path 或留空, 防止加载自定义证书
3、server_url 填写 Nginx 或 Caddy 被访问的 HTTPS 地址
4、在你的 Nginx 或 Caddy 中反向代理填写 listen_addr 的 HTTP 地址
Nginx 配置参考 官方 Wiki, Caddy 只需要一行 reverse_proxy headscale:8080 即可 (地址自行替换).
至于 ACME 证书你可以通过使用
acme.sh自动配置 Nginx 或者使用 Caddy 自动申请等方式, 这些已经与 Headscale 无关了, 不在本文探讨范围内.
请尽量不要将
ip_prefixes配置为默认的100.64.0.0/10网段, 如果你有兴趣查询了该地址段, 那么你应该明白它叫 CGNAT; 很不幸的是例如 Aliyun 底层的 apt 源等都在这个范围内, 可能会有一些奇怪问题.
在处理完证书等配置后, 只需要愉快的启动一下即可:
# 开机自启动 并 立即启动 systemctl enable headscale --now
复制
再啰嗦一嘴, 如果你期望使用 Headscale ACME 自动申请证书, 你的关键配置应该像这样:
server_url: https://your.domain.comlisten_addr: 0.0.0.0:443tls_letsencrypt_hostname: "your.domain.com"tls_cert_path: ""tls_key_path: ""
复制
如果你期望使用自定义证书, 则你的关键配置应该像这样:
server_url: https://your.domain.comlisten_addr: 0.0.0.0:443tls_letsencrypt_hostname: ""tls_cert_path: "/path/to/cert"tls_key_path: "/path/to/key"
复制
如果你期望使用负载均衡器, 那么你的关键配置应该像这样:
server_url: https://your.domain.comlisten_addr: 0.0.0.0:8080tls_letsencrypt_hostname: ""tls_cert_path: ""tls_key_path: ""
复制
在使用负载均衡器配置时, 启动后会有一行警告日志, 忽略即可:
2022-09-18T07:57:36Z WRN Listening without TLS but ServerURL does not start with http://
复制
Compose 配置样例文件如下:
# docker-compose.yamlversion: "3.9"services: headscale: container_name: headscale image: headscale/headscale:0.16.4 ports: - "8080:8080" cap_add: - NET_ADMIN - NET_RAW - SYS_MODULE sysctls: - net.ipv4.ip_forward=1 - net.ipv6.conf.all.forwarding=1 restart: always volumes: - ./conf:/etc/headscale - data:/var/lib/headscale command: ["headscale", "serve"]volumes: config: data:
复制
你需要在与 docker-compose.yaml 同级目录下创建 conf 目录用于存储配置文件; 具体配置请参考上面的配置详解等部分, 最后不要忘记你的 Compose 文件端口映射需要和配置文件保持一致.
对于客户端来说, Tailscale 提供了多个平台和发行版的预编译安装包, 并且部分客户端直接支持设置自定义的中央控制服务器.
Linux 用户目前只需要使用以下命令安装即可:
curl -fsSL https://tailscale.com/install.sh | sh
复制
默认该脚本会检测相关的 Linux 系统发行版并使用对应的包管理器安装 Tailscale, 安装完成后使用以下命令启动:
tailscale up --login-server https://your.domain.com --advertise-routes=192.168.11.0/24 --accept-routes=true --accept-dns=false
复制
关于选项设置:
--login-server: 指定使用的中央服务器地址 (必填)
--advertise-routes: 向中央服务器报告当前客户端处于哪个内网网段下, 便于中央服务器让同内网设备直接内网直连 (可选的) 或者将其他设备指定流量路由到当前内网(可选)
--accept-routes: 是否接受中央服务器下发的用于路由到其他客户端内网的路由规则 (可选)
--accept-dns: 是否使用中央服务器下发的 DNS 相关配置 (可选, 推荐关闭)
启动完成后, tailscale 将会卡住, 并打印一个你的服务器访问地址; 浏览器访问该地址后将会得到一条命令:


注意: 浏览器上显示的命令需要在中央控制服务器执行 (Headscale), NAMESAPCE 位置应该替换为一个具体的 Namespace, 可以使用以下命令创建 Namespace (名字随意) 并让设备加入:

在 Headscale 服务器上执行命令成功后客户端命令行在稍等片刻便会执行完成, 此时该客户端已经被加入 Headscale 网络并分配了特定的内网 IP; 多个客户端加入后在 NAT 穿透成功时就可以互相 ping 通, 如果出现问题请阅读后面的调试细节, 只要能注册成功就算是成功了一半, 暂时不要慌.
MacOS 客户端安装目前有两种方式, 一种是使用标准的 AppStore 版本 (好像还有一个可以直接下载的), 需要先设置服务器地址然后再启动 App:
首先访问你的 Headscale 地址 https://your.domain.com/apple:

复制倒数第二行命令到命令行执行 (可能需要 sudo 执行), 然后去 AppStore 搜索 Hailscale 安装并启动; 启动后会自动打开浏览器页面, 与 Linux 安装类似, 复制命令到 Headscale 服务器执行即可 (Namespace 创建一次就行).
第二种方式也是比较推荐的方式, 直接编译客户端源码安装, 体验与 Linux 版本一致:
# 安装 go
brew install go
# 编译命令行客户端
go install tailscale.com/cmd/tailscale{,d}@main
# 安装为系统服务
sudo tailscaled install-system-daemon复制
安装完成后同样通过 tailscale up 命令启动并注册即可, 具体请参考 Linux 客户端安装部分.
关于 Windows 客户端大致流程就是创建一个注册表, 然后同样安装官方 App 启动, 接着浏览器复制命令注册即可. 至于移动端本人没有需求, 所以暂未研究. Windows 具体的安装流程请访问 https://your.domain.com/windows 地址查看 (基本与 MacOS AppStore 版本安装类似).
在上面的 Headscale 搭建完成并添加客户端后, 某些客户端可能无法联通; 这是由于网络复杂情况下导致了 NAT 穿透失败; 为此我们可以搭建一个中继服务器来进行传统的星型拓扑通信.
首先需要注意的是, 在需要搭建 DERP Server 的服务器上, 请先安装一个 Tailscale 客户端并注册到 Headscale; 这样做的目的是让搭建的 DERP Server 开启客户端认证, 否则你的 DERP Server 可以被任何人白嫖.
目前 Tailscale 官方并未提供 DERP Server 的安装包, 所以需要我们自行编译安装; 在编译之前请确保安装了最新版本的 Go 语言及其编译环境.
# 编译 DERP Server
go install tailscale.com/cmd/derper@main
# 复制到系统可执行目录
mv ${GOPATH}/bin/derper /usr/local/bin
# 创建用户和运行目录
useradd \ --create-home \ --home-dir /var/lib/derper/ \ --system \ --user-group \ --shell /usr/sbin/nologin \
derper复制
接下来创建一个 SystemD 配置:
# /lib/systemd/system/derper.service[Unit]Description=tailscale derper server After=syslog.target After=network.target[Service]Type=simple User=derper Group=derper ExecStart=/usr/local/bin/derper -c=/var/lib/derper/private.key -a=:8989 -stun-port=3456 -verify-clients Restart=always RestartSec=5# Optional security enhancements NoNewPrivileges=yes PrivateTmp=yes ProtectSystem=strict ProtectHome=yes ReadWritePaths=/var/lib/derper /var/run/derper AmbientCapabilities=CAP_NET_BIND_SERVICERuntimeDirectory=derper[Install]WantedBy=multi-user.target
复制
最后使用以下命令启动 Derper Server 即可:
systemctl enable derper --now
复制
注意: 默认情况下 Derper Server 会监听在 :443 上, 同时会触发自动 ACME 申请证书. 关于证书逻辑如下:
1、如果不指定 -a 参数, 则默认监听 :443
2、如果监听 :443 并且未指定 --certmode=manual 则会强制使用 --hostname 指定的域名进行 ACME 申请证书
3、如果指定了 --certmode=manual 则会使用 --certmode 指定目录下的证书开启 HTTPS
4、如果指定了 -a 为非 :443 端口, 且没有指定 --certmode=manual 则只监听 HTTP
如果期望使用 ACME 自动申请只需要不增加
-a选项即可 (占用 443 端口), 如果期望通过负载均衡器负载, 则需要将-a选项指定到非 443 端口, 然后配置 Nginx、Caddy 等 LB 软件即可. 最后一点stun监听的是UDP端口, 请确保防火墙打开此端口.
在创建完 Derper 中继服务器后, 我们还需要配置 Headscale 来告诉所有客户端在必要时可以使用此中继节点进行通信; 为了达到这个目的, 我们需要在 Headscale 服务器上创建以下配置:
# /etc/headscale/derper.yamlregions: 901: regionid: 901 regioncode: private-derper regionname: "My Private Derper Server" nodes: - name: private-derper regionid: 901 # 自行更改为自己的域名 hostname: derper.xxxxx.com # Derper 节点的 IP ipv4: 123.123.123.123 # Derper 设置的 STUN 端口 stunport: 3456
复制
在创建好基本的 Derper Server 节点信息配置后, 我们需要调整主配置来让 Headscale 加载:
derp: server: # 这里关闭 Headscale 默认的 Derper Server enabled: false # urls 留空, 保证不加载官方的默认 Derper urls: [] # 这里填写 Derper 节点信息配置的绝对路径 paths: - /etc/headscale/derper.yaml # If enabled, a worker will be set up to periodically # refresh the given sources and update the derpmap # will be set up. auto_update_enabled: true # How often should we check for DERP updates? update_frequency: 24h
复制
接下来重启 Headscale 并重启 client 上的 tailscale 即可看到中继节点:
~ ❯❯❯ tailscale netcheckReport: * UDP: true * IPv4: yes, 124.111.111.111:58630 * IPv6: no, but OS has support * MappingVariesByDestIP: false * HairPinning: false * PortMapping: UPnP, NAT-PMP, PCP * CaptivePortal: true * Nearest DERP: XXXX Derper Server * DERP latency: - XXXX: 10.1ms (XXXX Derper Server)
复制
到此中继节点搭建完成.
目前官方似乎也没有提供 Docker 镜像, 我自己通过 GitHub Action 编译了一个 Docker 镜像, 以下是使用此镜像的 Compose 文件样例:
version: '3.9'services: derper: image: mritd/derper container_name: derper restart: always ports: - "8080:8080/tcp" - "3456:3456/udp" environment: TZ: Asia/Shanghai volumes: - /etc/timezone:/etc/timezone - /var/run/tailscale:/var/run/tailscale - data:/var/lib/derpervolumes: data:
复制
该镜像默认开启了客户端验证, 所以请确保 /var/run/tailscale 内存在已加入 Headscale 成功的 tailscaled 实例的 sock 文件. 其他具体环境变量等参数配置请参考 Earthfile.
在调试中继节点或者不确定网络情况时, 可以使用一些 Tailscale 内置的命令来调试网络.
tailscale ping 命令可以用于测试 IP 连通性, 同时可以看到时如何连接目标节点的. 默认情况下 Ping 命令首先会使用 Derper 中继节点通信, 然后尝试 P2P 连接; 一旦 P2P 连接成功则自动停止 Ping:
~ ❯❯❯ tailscale ping 10.24.0.5pong from k8s13 (10.24.0.5) via DERP(XXXXX) in 14ms pong from k8s13 (10.24.0.5) via DERP(XXXXX) in 13ms pong from k8s13 (10.24.0.5) via DERP(XXXXX) in 14ms pong from k8s13 (10.24.0.5) via DERP(XXXXX) in 12ms pong from k8s13 (10.24.0.5) via DERP(XXXXX) in 12ms pong from k8s13 (10.24.0.5) via 3.4.170.23:2495 in 9ms
复制
由于其先走 Derper 的特性也可以用来测试 Derper 连通性.
通过
tailscale status命令可以查看当前节点与其他对等节点的连接方式, 通过此命令可以查看到当前节点可连接的节点以及是否走了 Derper 中继:
~ ❯❯❯ tailscale status10.24.0.8 xmac kovacs macOS - alivpn kovacs linux active; direct 4.3.4.5:41644, tx 1264 rx 944 aliyun kovacs linux - bob kovacs macOS offline bob-imac kovacs macOS offline company kovacs linux active; direct 114.114.114.114:41642, tx 1296 rx 880
复制
有些情况下我们可以确认是当前主机的网络问题导致没法走 P2P 连接, 但是我们又想了解一下当前的网络环境; 此时可以使用 tailscale netcheck 命令来检测当前的网络环境, 此命令将会打印出详细的网络环境报告:
~ ❯❯❯ tailscale netcheck2022/10/19 21:15:27 portmap: [v1] Got PMP response; IP: 123.123.123.123, epoch: 2976712022/10/19 21:15:27 portmap: [v1] Got PCP response: epoch: 2976712022/10/19 21:15:27 portmap: [v1] UPnP reply {Location:http://192.168.11.1:39735/rootDesc.xml Server:AsusWRT/386 UPnP/1.1 MiniUPnPd/2.2.0 USN:uuid:23345-2380-45f5-34534-04421abwb7cf0::urn:schemas-upnp-org:device:InternetGatewayDevice:1}, "HTTP/1.1 200 OK\r\nCACHE-CONTROL: max-age=120\r\nST: urn:schemas-upnp-org:device:InternetGatewayDevice:1\r\nUSN: uuid:34564645-2380-45f5-b069-sdfdght3245....."2022/10/19 21:15:27 portmap: UPnP meta changed: {Location:http://192.168.11.1:39735/rootDesc.xml Server:AsusWRT/386 UPnP/1.1 MiniUPnPd/2.2.0 USN:uuid:23345-2380-45f5-b069-04421abwb7cf0::urn:schemas-upnp-org:device:InternetGatewayDevice:1}Report:
* UDP: true
* IPv4: yes, 123.123.123.123:5935
* IPv6: no, but OS has support * MappingVariesByDestIP: false
* HairPinning: true
* PortMapping: UPnP, NAT-PMP, PCP
* CaptivePortal: true
* Nearest DERP: XXXXX Aliyun * DERP latency:
- XXXXX: 9.5ms (XXXXX Aliyun)
- XXXXX: 53.1ms (XXXXX BandwagonHost)复制
MacOS 下使用一些增强代理工具时, 如果安装 App Store 的官方图形化客户端, 则可能与这些软件冲突, 推荐使用纯命令行版本并添加进程规则匹配
tailscale和tailscaled两个进程, 让它们始终走DIRECT规则即可.
在使用一些网络代理工具时, 网络工具会设置默认路由; 这可能导致
tailscaled无法获取到默认路由接口, 然后进入死循环并把 CPU 吃满, 同时会与 Derper 服务器产生大量上传流量. 截止本文发布此问题已修复, 请使用mian分支编译安装, 具体见 ISSUE/5879.
Tailscale 默认使用 CGNAT(
100.64.0.0/10) 网段作为内部地址分配网段, 目前 Tailscale 仅允许自己的接口使用此网段, 不巧的是阿里云的 DNS、Apt 源等也采用此网段. 这会导致阿里云服务器安装客户端后 DNS、Apt 等不可用, 解决方案目前只能修改源码删除掉这两个 DROP 规则并重新编译.
大多数时候我们可能并不会在每个服务器上都安装 Tailscale 客户端, 通常只安装 2、3 台, 然后想通过这两三台转发该内网的所有流量. 此时你需要
启动 tailscale 时设置正确的路由提示 --advertise-routes=192.168.1.0/24 来告诉 Headscale 服务器 “我这个节点可以转发这些地址的路由”
其他节点启动时需要增加 --accept-routes=true 选项来声明 “我接受外部其他节点发布的路由”
以上两个选项配置后, 只需要 Headscale 服务器上使用 headscale node route enable -a -i XX(ID) 开启即可. 开启后目标节点 (ID) 的路由就会发布到接受外部路由的所有节点, 想要关闭的话去掉 -a 即可.
以上也只是我个人遇到的一些问题, 如果有其他问题推荐先搜索然后查看 ISSUE, 最后不行可以看看源码. 目前来说 Tailscale 很多选项很模糊, 可能需要阅读源码以后才能知道到底应该怎么做.
链接:https://mritd.com/2022/10/19/use-headscale-to-build-a-p2p-network/
关于我国的高校资源,各大排名机构都发布过各色各样的排名榜,其中包含软科、校友会、ABC、Esi等等,其中,软科发布的榜单更受人认可。
2023年5月30日,武书连发布了2023中国大学综合实力排名榜,其中,取得前十名的是清华大学,浙江大学,北京大学,上海交通大学,华中科技大学,武汉大学,中山大学,复旦大学,南开大学和四川大学,含金量不予置评,网友们各自体会。

除了2023中国大学综合实力排名外,武书连还发布了2023择校顺序中国大学前30名榜单,所谓的择校顺序,由各大高校本科毕业生就业质量、教师学术水平、教师绩效三项指标排名相加得出,具体情况如下。
今天我们就来具体看看,这份由武书连发布的“2023择校顺序中国大学前30名”榜单。

在榜单中,取得第一名的还是清华大学,不出所料,清华不愧是全国最好的大学之一,就业质量排名第五,教师水平排名第一,教师绩效排名第六,总得分17,位列全国第一名。
第二名是北京大学,也不出所料,北京大学本科毕业生就业质量排名第七,教师水平排名第五,教师绩效排名第12,总得分31,位列全国第二名,仅次于清华大学。

排在第三名的是一向低调的南京大学,简称南大,坐落于我国的六朝古都南京市,是一所非常古老,也非常具有东方底蕴的重点大学,南京大学总得分41,位列全国第三。
第四名是中国科学技术大学,简称中科大,总得分47,其中,就业质量排名第六,教师水平排名第21,教师绩效排名第24;第五名是上海交通大学,位于上海市,总得分为61,是全国高校资源中的第五名。

第六名是中国人民大学,位于北京市,总得分66;第七名是复旦大学,坐落于魔都上海,总得分68;第八名的高校很出人意料,并非哪所985,而是南方科技大学,简称南科大,坐落于深圳市,总得分为75。
第九名是华中科技大学,简称华科,总得分84;第十名再次令人意想不到,是华东五校之一的浙江大学,险些无缘前十,总得分85,堂堂C9联盟高校之一,全国公认仅次于清华北大的高校组,在择校顺序榜单中却只排第十。

第11名是北京航空航天大学,简称北航,坐落于首都北京市,是全国最好的航空航天类院校;第12名是西安交通大学,简称西安交大,也是首批入选985工程的高校之一;第13名是武汉大学,简称武大,位于湖北省武汉市。
第14名是电子科技大学,坐落于四川省成都市,是整个四川省仅次于四川大学的高校,在高考中深受欢迎;第15名不是985,而是拥有211头衔的中国政法大学,简称法大,五院四系之一,也是全国最好的政法类大学。

第16名是北京理工大学,简称北理工,全国排名前三的理工大学之一;第17名是西北工业大学,简称西工大,位于千年古都西安市,是一所同时发展航空、航天、航海的985工程重点大学;第18名是南开大学,简称南开。
第19名是天津大学,简称天大,位于天津市,与南开大学是邻居,也是中国第一所现代大学;第20名是中山大学,位于广东省广州市;第21名是哈尔滨工业大学,哈工大的排名也很出人意料,毕竟是全国首批入选985工程的高校之一,又是全国工科实力排名第二的高校。

第22名是北京化工大学,纯211队伍的成员;第23名是中国农业大学,简称中国农大,最好的农业类院校;第24名是同济大学,简称同济;第25名是东南大学,简称东大;第26名是上海科技大学,位于上海市,不是985,也不是211,是新晋双一流建设高校。
第27名是北京师范大学,全国最好的师范大学;第28名是天津医科大学,位于天津市,有名的医药类大学之一;第29名是湖南大学,简称湖大,坐落于湖南省长沙市;第30名是四川大学,简称川大,位于四川省省会成都市。

以上就是2023择校顺序榜单上,我国排在前30名的高校,虽然也主要以985工程大学为主,但很多985工程大学的名次,还是令人意想不到,另外,南方科技大学和上海科技大学两所985,以及中国政法大学和北京化工大学两所211,也都榜上有名。