求助😭, HeadScale 自建后, win 端 Tailscale 无法登陆

2025 年 3 月 8 日
 liuzimin

背景:


操作表现&&症状:

Received error: fetch control key: Get "https://<服务器域名>:61111/key?v=113": read tcp 192.168.11.86:55438->服务器 IP:61111: wsarecv: An existing connection was forcibly closed by the remote host.
2025-03-08T09:05:21Z ERR noise upgrade failed error="noise handshake failed: decrypting machine key: chacha20poly1305: message authentication failed"
2025/03/08 09:05:21 http: response.WriteHeader on hijacked connection from github.com/juanfont/headscale/hscontrol.(*Headscale).NoiseUpgradeHandler (noise.go:83)
2025/03/08 09:05:21 http: response.Write on hijacked connection from fmt.Fprintln (print.go:305)


配置文件


server_url: https://<我的域名>:61111
listen_addr: 0.0.0.0:8080

metrics_listen_addr: 127.0.0.1:9090
grpc_listen_addr: 127.0.0.1:50443
grpc_allow_insecure: false

noise:
   private_key_path: /var/lib/headscale/noise_private.key

prefixes:
  v4: 100.64.0.0/10
  v6: fd7a:115c:a1e0::/48

  allocation: sequential

derp:
  server:
    region_id: 996
    region_code: "headscale"
    region_name: "Headscale Embedded DERP"
    stun_listen_addr: "0.0.0.0:3478"
    private_key_path: /var/lib/headscale/derp_server_private.key

    automatically_add_embedded_derp_region: true

    ipv4: 1.2.3.4
    ipv6: 2001:db8::1

  urls: 
    []

  paths:
    - /etc/headscale/my-derp.yaml

  auto_update_enabled: true
  update_frequency: 24h
disable_check_updates: true
ephemeral_node_inactivity_timeout: 30m

database:
  type: sqlite
  debug: false
  gorm:
    prepare_stmt: true
    parameterized_queries: true

    skip_err_record_not_found: true
    slow_threshold: 1000

  sqlite:
    path: /var/lib/headscale/db.sqlite
    write_ahead_log: true
    wal_autocheckpoint: 1000


acme_url: https://acme-v02.api.letsencrypt.org/directory
acme_email: ""
tls_letsencrypt_hostname: ""
tls_letsencrypt_cache_dir: /var/lib/headscale/cache
tls_letsencrypt_challenge_type: HTTP-01
tls_letsencrypt_listen: ":http"
tls_cert_path: ""
tls_key_path: ""

log:
  format: text
  level: info

policy:
  mode: file
  path: ""

dns:
  magic_dns: true
  base_domain: <服务器域名>
  nameservers:
    global:
      - 1.1.1.1
      - 1.0.0.1
      - 2606:4700:4700::1111
      - 2606:4700:4700::1001

    split:
      {}

  search_domains: []

  extra_records: []

unix_socket: /var/run/headscale/headscale.sock
unix_socket_permission: "0770"
logtail:
  enabled: false
randomize_client_port: false

version: '3.5'
services:
  headscale:
    image: headscale/headscale:0.24.0
    container_name: headscale
    volumes:
      - ./headscale-config/:/etc/headscale/
      - ./headscale-data/:/var/lib/headscale/
    ports:
      - 8080:8080
    command: serve
    restart: unless-stopped

  headscale-ui:
    image: ghcr.io/gurucomputing/headscale-ui:latest
    restart: unless-stopped
    container_name: headscale-ui
    ports:
      - 3000:8080
https://<服务器域名>:61111 {
    tls {
        dns alidns {
           access_key_id "XXXXXXXXXXXXXXX"
           access_key_secret "XXXXXXXXXXXXXXX"
        }
    }
		
	#匹配跨域请求
	@hs-options {
		host 服务器域名
		method OPTIONS
	}
	@hs-other {
		host 服务器域名
	}
	
	#处理跨域请求
	handle @hs-options {
		header {
			Access-Control-Allow-Origin "http://<服务器 IP>:3000"
			Access-Control-Allow-Headers *
			Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE"
			Access-Control-Allow-Credentials true
		}
		respond 204 
	}
	
	handle @hs-other {
	    header Access-Control-Allow-Origin "http://<服务器 IP>:3000"
        header Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE"
		header Access-Control-Allow-Headers *
		header Access-Control-Allow-Credentials true
		
		reverse_proxy http://localhost:8080
	}
}
3112 次点击
所在节点    服务器
21 条回复
nunterr
2025 年 6 月 25 日
@liuzimin 找宽带服务商开启外网访问服务。应该就可以了,我当初就找了移动宽带开通后就全部打通了,还有 tailscale 打洞成功概率确实比 head 好很多

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1116908

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX