内网穿透 https://github.com/juanfont/headscale

天问 874dfc27fa Update 'README.md' 1 year ago
README.md 874dfc27fa Update 'README.md' 1 year ago

README.md

headscale

内网穿透

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