求问自建 derp 节点的问题

2023-06-30 10:17:07 +08:00
 mikaelson
https://icloudnative.io/posts/custom-derp-servers/#%E8%87%AA%E5%BB%BA%E7%A7%81%E6%9C%89-derp-server
按这个教程自己搭建了 derp 纯 IP 节点
直接在公网服务器上弄了 docker 搭建的


我看教程应该也就到这一步就结束了?剩下的就是客户端用 tailscale 去连接?
可是为啥我 tailscale netcheck 搜不到自己的节点呢

端口都打开了。

docker logs -f derper
Generating a RSA private key
.............................+++++
..+++++
writing new private key to '/app/certs/127.0.0.1.key'
-----
2023/06/30 02:11:01 no config path specified; using /var/lib/derper/derper.key
2023/06/30 02:11:01 derper: serving on :12345 with TLS
2023/06/30 02:11:01 running STUN server on [::]:3478
4375 次点击
所在节点    程序员
56 条回复
frankli0324
2023-06-30 15:22:40 +08:00
@mikaelson tailscale 控制面是整个网络的信任锚点,控制面负责 authenticate 各个节点(你的电脑、服务器等都是节点),headscale 就是将这个信任锚点掌握在你自己手里。
不过 tailscale 后来支持了使用已 authenticate 的 node 作为新的信任锚点,可以谷歌一下
frankli0324
2023-06-30 15:23:39 +08:00
mikaelson
2023-06-30 15:24:09 +08:00
@frankli0324 所以现在也没必要用 headscale 了?可以 tailscale 一整套?
frankli0324
2023-06-30 15:26:29 +08:00
控制面 authenticate 一个 node 的时候会把这个 node 的公钥分发给所有节点,所有节点以后就都信任这个公钥了,类比你在.ssh/authorized_keys 里加上你的 ssh pubkey 。这样的话假如 tailscale 偷偷给这个公钥列表里加上一个恶意 node 的公钥,你的内网 infrastructure 就暴露给这个恶意 node 了,如果你还配置了诸如 tailscale ssh 的东西那就影响面更大了
frankli0324
2023-06-30 15:27:01 +08:00
@mikaelson 其实。。也可以,不过如果想彻底杜绝外网流量也可以用 headscale ,毕竟节点需要和控制面通信
ZedRover
2023-06-30 15:30:06 +08:00
@mikaelson #18 开启 verify_clients 之后就行了,需要服务器上有 tailscale 并且登录自己的账号,这样别人就算能 在 acl 里加你的节点也没法用
mikaelson
2023-06-30 15:37:37 +08:00
@ZedRover 服务器上有 tailscale 并且登录自己的账号 这是什么意思?还得去注册官网的 tailscale 嘛?我现在拿来做 server 的服务器上装了 headscale+自建 docker 的 derp+tailscale 客户端。现在已经联通了几个节点了。不过好麻烦。。。我都是去各个 client 装 tailscale 然后 tailscale up xxxx 什么的,生成一串后,去浏览器拿到链接,再回来 server 端添加 node 。
mikaelson
2023-06-30 15:38:55 +08:00
@frankli0324 我现在把 server 和 client 都部署了 tailscale ,打算把一些业务转发到 server 上,然后映射 ip+端口出去访问。比如 ssh ,sftp 之类的。。。也没法给所有使用者都加 tailscale
root01
2023-06-30 15:43:54 +08:00
@mikaelson 来份教程
mikaelson
2023-06-30 15:47:48 +08:00
@ZedRover 有一个很奇葩的问题。我各个节点互 ping 都在 30ms 以内。
client1 的 ip 是 10.86.0.1
公网 server 是 10.86.2.1

我用 firewall-cmd --add-forward-port=port=2244:proto=tcp:toaddr=10.86.0.1:toport=22 --permanent
映射到公网的 2244
我用公网的 ip+2244 访问成功,尝试着用 sftp 传文件,直接龟速(公网买的是 16 核 32G 20M 宽带的)只有 300k ,而且期间 ping 的延迟会变成几百。。。这是为啥。。。
mikaelson
2023-06-30 15:48:13 +08:00
@root01 千篇一律的,有用了也就一两分吧
GGC4
2023-06-30 15:59:04 +08:00
我那会儿也是绕进去了。如果你的要求和我一样简单,是不需要 headscale 的,只需要按照正常的 tailscale 流程使用,然后在 tailscale 官网的 access control 里写好:
"derpMap": {
"Regions": {"900": {
"RegionID": 900,
"RegionCode": "cn",
"Nodes": [{
"Name": "1",
"RegionID": 900,
"HostName": "x.x.x.x",
"IPv4": "x.x.x.x",
"DERPPort": 38800,
"InsecureForTests": true,
}],
}},
},
服务器防火墙端口记得开,就可以了
mikaelson
2023-06-30 16:01:51 +08:00
@GGC4 我因为有自己的公网服务器,所以想用自己搭建 derp 。我现在也成了。问题是,节点之间的延迟很一般,但是只要走公网转发后,直接就没速度了
frankli0324
2023-06-30 16:18:06 +08:00
@mikaelson @ZedRover 要搞清楚各个部分解决的是两个不同的问题
headscale 解决的是控制面通信问题,适用于无法与 tailscale 控制面通信的环境(当然最开始也是解决 tailscale 控制面可信问题),tailscale lock 解决的是 tailscale 控制面是否可信的问题,而 verify client 解决的是 derper 不允许其他用户通过你的 derper 握手和转发流量。derper 只是一个握手的协商者和*加密后*流量的转发者,并不涉及网络的可信问题,别人用你的 derper 顶多耗费你的流量。verify client 的行为是在协商前校验协商的二者的身份。
我觉得还是执行一个 step 之前先搞明白这个 step 的目的是什么吧(
frankli0324
2023-06-30 16:19:08 +08:00
* 校验协商的双方都和自己本机在同一个 tailnet 中
mikaelson
2023-06-30 16:25:10 +08:00
@frankli0324 谢谢您的热情回复。我去再了解一下。
有一个很奇葩的问题。我现在各个节点互 ping 都在 30ms 以内。
client1 的 ip 是 10.86.0.1
公网 server 是 10.86.2.1

我用 firewall-cmd --add-forward-port=port=2244:proto=tcp:toaddr=10.86.0.1:toport=22 --permanent
映射到公网的 2244
我用公网的 ip+2244 访问成功,尝试着用 sftp 传文件,直接龟速,甚至 ssh 连线直接断开(公网买的是 16 核 32G 20M 宽带的)只有 300k ,而且期间 ping 的延迟会变成几百。。。这是为啥。。。
包括之前用 tinc 也是这样,这也是我突然转移方案的原因,没想到不是 tinc 的问题。换一个方案,在用 add-forward-port 还是这样的情况
frankli0324
2023-06-30 16:25:26 +08:00
@mikaelson 300k/s 的问题听起来像是 SSH Protocol 的 overhead ,20M 的小水管本身也不快
mikaelson
2023-06-30 16:32:55 +08:00
@frankli0324 每秒能有 2M 还行了呀,用来转发一些服务不做大数据传输,我之前才 4M 的,这次换到 20M 了,从阿里迁移到腾讯,结果搞成这副模样,死活找不到原因。哎。
以前每次新加节点,也就是加入 tinc ,然后去云服务器转发端口,也没做其他的。。。
SoFarSoGood
2023-06-30 16:55:40 +08:00
@mikaelson tailscale 也是基于 wireguard 创建链接的,算不出正确的 mtu ,速度肯定慢。
blankmiss
2023-06-30 17:03:02 +08:00
只要知道 ip 换个端口 就能用你的 derp server 还是上个域名 开启客户端验证吧

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

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

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

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

© 2021 V2EX