相关软件工具
- FRP
- NPS
- ZeroTier + ZeroTier moon
- Headscale + Tailscale
- CloudFlare Tunnel 非常好用的内网穿透工具CloudFlare Tunnel
本人只尝试过NPS以及Headscale + Tailscale
nps和(Headscale + Tailscale)区别在于
- nps搭建的内网穿透网速受制于公网服务器带宽,(Headscale + Tailscale)不受公网服务器带宽限制,受制于运营商,网络运营商会限制你的网速,我这边测试是只有3MB到4MB这样(需要分清楚单位Gbit/s、Mbits、MB/s的区别)
- nps基于端对端建立通信,例如打通公网服务器和本地服务器的8080端口,访问公网8080就相当于访问到本地的8080端口,而(Headscale + Tailscale)是内部组网,如果你不使用反向代理的话,只有使用了Tailscale加入到Headscale服务端的主机才能互相访问,不对外暴露,nps则是会将8080通过公网服务器暴露给任何人,任何人都可以访问你公网ip:8080端口连接到你的本地服务器8080端口
关于Headscale + Tailscale
网上一堆教程,避免重复造轮子,这里只记录我遇到的问题,记录一下要点 0. 内网组建完成后,如果一台客户端下线后再次上线,那么前面会有一段时间延迟、网速会很慢,后面会恢复
- 配置文件是在在官网处下载,你下载Headscale时不自带
listen_addr: 0.0.0.0:8080注意监听的是0.0.0.0:和 server_url上面的端口,我下载的配置文件默认是127.0.0.1:8080,一开始没改成0.0.0.0导致客户端连不上
127.0.0.1和0.0.0.0是IP地址的表示方法,但它们的意义不同。
127.0.0.1是本地回环地址,也就是说,它指向本机上的网络适配器,用于本机操作系统与本机应用程序之间的通信,不会被路由器和外部网络设备识别和转发。
而0.0.0.0是通配符地址,表示所有可能的IP地址。一般用于路由表中的默认路由,表示任何目的地址都可以被匹配上,并且在没有匹配规则的情况下默认使用该路由。
# Headscale Config
server_url: http://test.domain.com:8080 # *客户端连接地址 替换为自己域名
listen_addr: 0.0.0.0:8080 # 监听地址
metrics_listen_addr: 127.0.0.1:9090 # 监听 /metrics 的地址,希望将此端点保密到内部网络
grpc_listen_addr: 0.0.0.0:50443 # 监听 gRPC 地址 gRPC 用于 远程控制 headscale
grpc_allow_insecure: false # 允许在 INSECURE 模式下使用 gRPC 后台 不建议开启
private_key_path: /var/lib/headscale/private.key # 加密流量的私钥文件,会自动生成
ip_prefixes: # 用来分配 IP 地址的前缀
- fd7a:115c:a1e0::/48
- 100.64.0.0/10
- 权限问题
使用systemctl enable --now headscale启动服务时如果报错可以使用journalctl -u headscale.service -f查看详细报错问题,出现权限问题就ls -l看看自己下载的headscale是否添加了rwx权限 - 最后记得查看8080端口是否打开,安全组是否开放了
- 启动文件注意
ExecStart就是你下载的headscale目录,我这里下载headscale_0.17.0-alpha1_linux_amd64后改名了,改成headscale
所以ExecStart=/usr/local/bin/headscale serve
下面步骤为下载、添加权限、移动位置并改名为headscale
wget https://ghproxy.com/https://github.com/juanfont/headscale/releases/download/v0.17.0-alpha1/headscale_0.17.0-alpha1_linux_amd64
chmod +x headscale_0.17.0-alpha1_linux_amd64
mv headscale_0.17.0-alpha1_linux_amd64 /usr/local/bin/headscale
# cat /etc/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_SERVICE
RuntimeDirectory=headscale
[Install]
WantedBy=multi-user.target
Headscale 的部署方法和使用教程 - 缘生笔记 (ysicing.me)
该视频主要参考windows和安卓端的TailScale客户端连接方法
测试工具
1、PsPing:用于测试延迟,抖动
2、iperf3:用于测试下载速度,上传速度,要在测试的两台机器都安装iperf3
参考文章
iperf3:网络测试工具及测试用例+参数详解
3、speedTestX:docker版,用于测试所有指标
1MB/s 等于 8Mbit/s
Mbps = Million bits per second = 兆比特每秒 = Mbit/s
Mbit/s 这个单位含义是兆比特每秒,我们经常见到的是MB/s,它的含义是兆字节每秒。
MB/s 指每秒传输的字节数量,Mbit/s 是指每秒传输的比特位数。
MB/s 中的 B字母是 Byte 的含义,虽然与 Mbit/s 中的 bit 翻译一样,都是比特,也都是数据量度单位,但二者是完全不同的。
Byte 是字节数,bit 是位数,在计算机中每 8 位为一字节,也就是 1Byte=8bit,是 1:8 的对应关系,因此 1MB/s 等于 8Mbit/s。
VPS
VPS是利用VPS(Virtual Private Server)技术,将一部 服务器 分割成多个虚拟专享服务器的优质服务。 每个VPS都可分配独立公网IP地址、独立操作系统Windows/Linux、独立超大空间、独立内存、独立 CPU 资源、独立执行程序和独立系统配置等。