内网穿透
Tailscale 客户端开源,服务端社区有第三方开源版本Headscale
服务端:
# 下载
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
# 配置目录
mkdir -p /etc/headscale
# 创建用户
useradd \
--create-home \
--home-dir /var/lib/headscale/ \
--system \
--user-group \
--shell /usr/sbin/nologin \
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_SERVICE
RuntimeDirectory=headscale
[Install]
WantedBy=multi-user.target
配置 /etc/headscale/config.yaml
---
# 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 config
db_type: sqlite3
db_path: /var/lib/headscale/db.sqlite
# 使用自动签发证书是的域名
tls_letsencrypt_hostname: ""
# 使用自定义证书时的证书路径
tls_cert_path: ""
tls_key_path: ""
# 是否让客户端使用随机端口, 默认使用 41641/UDP
randomize_client_port: false
# 开机自启动 并 立即启动
systemctl enable headscale --now
客户端
curl -fsSL https://tailscale.com/install.sh | sh