自建 headscale 的一些问题

2023-09-21 09:58:07 +08:00
 her100
  1. L2TP/IPsec:公司电脑 ping nas ,延迟在 10ms 以内
  2. open vpn:手机连接公司 wifi ping nas ,延迟在 30ms 以内
  3. headscale:公司电脑 ping nas ,延迟在 200ms 左右
  4. headscale:公司电脑 ping 手机,延迟在 400-500ms 左右

本来是想用 L2TP/IPsec 的方式,和朋友联机玩局域网游戏,但是朋友上网一般是在网吧,网吧的电脑连接不上 L2TP/IPsec ,所以想自建 headscale 试试看,可是 headscale 的延迟为什么这么高?

2571 次点击
所在节点    宽带症候群
20 条回复
superchijinpeng
2023-09-21 09:58:56 +08:00
Headscale 和你的延迟有什么关系?
her100
2023-09-21 10:06:12 +08:00
@superchijinpeng 延迟和什么有关?请指教
DigitalG
2023-09-21 10:10:54 +08:00
之前做的时候,我记得,穿透成功的话,节点和节点能点对点链接,就只跟节点自己的上行速度有关了吧。如果穿透不成功,需要走 DERP 中继,这个时候跟中继节点的速度有关。
her100
2023-09-21 10:22:31 +08:00
@DigitalG DERP 中继我关掉了没开,穿透是成功的。可是如果是和设备的上行速度有关,为什么 L2TP 和 open vpn 的延迟会低一点。
tms
2023-09-21 10:39:10 +08:00
估计穿透没成功,自建 DERP 没开,会自动用公共 DERP ,同城我穿透成功基本都是个位数延迟。
her100
2023-09-21 11:00:43 +08:00
@tms 怎么看有没有穿透成功?或者怎么看是用的公共 DERP
her100
2023-09-21 11:07:34 +08:00
@tms 搜了一下,tailscale ping xx.xx.xx.xx ,使用这个命令能看是否打洞成功,延迟高的时候,确实是用了公共的 DERP
her100
2023-09-21 11:08:57 +08:00
@DigitalG 你说的是对的,是我之前的测试不对,我以为连接成功就是点对点了。现在测试出来,延迟高的时候是走了公共 DERP
kuaizi
2023-09-21 11:17:57 +08:00
tailscale status 看看状态
zyqv2
2023-09-21 11:18:53 +08:00
tailscale net check
tms
2023-09-21 21:35:55 +08:00
@her100 tailscale status 可以看是否直连,直连有 direct
lgapple
2023-09-22 14:45:01 +08:00
没有直连,我本来想建 headscale 的,后来直接用官方的就打洞成功了(前提是要开 ipv6 ),就没自己建 headscale 了
her100
2023-09-23 21:45:56 +08:00
@lgapple 是的,打洞成功之前都会优先连接 tailscale 的节点,我又自建了 DERP ,再禁用 tailscale 的节点,这样就能保证延迟降低了
TossPig
2023-09-24 03:56:19 +08:00
DERP 记得开认证,,,惨痛的教训/(ㄒoㄒ)/~~
her100
2023-09-25 13:56:51 +08:00
@TossPig 我想开,但我一直不成功。DERP 和 tailscale client 都是用 docker 建的,这两个都要连接到同一个 tailscaled.sock 我一直不会弄。
TossPig
2023-09-26 16:10:50 +08:00
两个容器共享目录`/run/tailscale`就可以了

`tailscaled.sock`是客户端生成监听,DERP 去通信,不同版本的客户端生成路径可能不一致,我这是 debian 的环境
her100
2023-09-27 08:50:36 +08:00
@TossPig docker tailscale client 的 tailscaled.sock 挂载到宿主机上失败,提示 tailscaled.sock 已存在。

version: '2.9'
services:
tailscaled:
container_name: client
image: tailscale/tailscale
network_mode: host
privileged: true
cap_add:
- net_admin
- sys_module
volumes:
- '/volume1/docker/headscale/client:/var/lib'
- '/dev/net/tun:/dev/net/tun'
- '/var/run/tailscale/tailscaled.sock:/var/run/tailscale/tailscaled.sock'
command: sh -c "mkdir -p /var/run/tailscale && ln -s /tmp/tailscaled.sock /var/run/tailscale/tailscaled.sock && tailscaled"
magicedy
2023-09-28 06:43:48 +08:00
@her100 直接用 headscale 自带的 derp 就好,把 derp.server.enabled 改为 true ,derp.server.urls 注释掉
her100
2023-09-28 09:21:30 +08:00
@magicedy 原来可以这样吗,那就不用再开一个 derp 的容器了?我之前还纳闷,derp.server.enabled 明明是 false 为什么还是用了 tailscale 的中继节点。这样怎么开客户端认证呢?
magicedy
2023-09-28 09:50:42 +08:00
我的理解是这个内嵌的 derp 也没有另外开放端口,不会被白嫖,也就不用加认证了把,都是容器内部的。derp.server.urls 注释掉后,就只剩内嵌这个了,不能直连就都走这个内嵌的 derp 中转了。
headscale 0.15.0 (2022-03-20) https://github.com/juanfont/headscale/releases/tag/v0.15.0 就已经加了内嵌的 derp ,不知道为啥网上大部分说 derp 的教程都是另外再搭一个,如果只是为了不能直连的时候不走境外 derp 中转,内置的就足够了吧

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

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

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

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

© 2021 V2EX