更新:自定义端口部署方法
tailscale部署私有中继服务器-docker部署+自定义端口
安装golang环境
tailscale项目使用的golang环境比较新,部署自定义derper服务要求golang版本1.16以上。推荐尽可能安装最新的版本,本文安装目前最新版本
1.17.1。
1. 下载
golang官网在国外,直接从官网下载会比较慢,可以选择国内镜像站下载,如
wget https://studygolang.com/dl/golang/go1.17.1.linux-amd64.tar.gz
注意选择服务器的架构,本文中选择的是amd64架构也就是x86的64位处理器,系统Linux。
2. 解压安装
tar -C /usr/local -xzf go1.17.1.linux-amd64.tar.gz
3. 设置环境变量
编辑 /etc/profile文件,添加如下内容。编辑文件可以使用vim或者宝塔等其他工具。
export GOROOT=/usr/local/go
export GOPATH=/root/go
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOROOT/bin
export PATH=$PATH:$GOPATH/bin
保存退出后,执行以下命令使环境变量生效
source /etc/profile
4. 检查golang是否安装成功
go -version
查看golang版本,如果有相应信息返回,则说明golang环境安装成功。
安装derper服务
1. 下载
安装derper服务,执行以下命令
go install tailscale.com/cmd/derper@main
等待下载安装完成,查看是否安装成功
2. 检查
derper -h
如果有以下提示信息
Usage of derper:
-a string
server address (default ":443")
-bootstrap-dns-names string
optional comma-separated list of hostnames to make available at /bootstrap-dns
-c string
config file path
-certdir string
directory to store LetsEncrypt certs, if addr's port is :443 (default "/root/.cache/tailscale/derper-certs")
-dev
run in localhost development mode
-hostname string
LetsEncrypt host name, if addr's port is :443 (default "derp.tailscale.com")
-logcollection string
If non-empty, logtail collection to log to
-mesh-psk-file string
if non-empty, path to file containing the mesh pre-shared key file. It should contain some hex string; whitespace is trimmed.
-mesh-with string
optional comma-separated list of hostnames to mesh with; the server's own hostname can be in the list
-stun
also run a STUN server
-verify-clients
verify clients to this DERP server through a local tailscaled instance.
则说明derper安装成功
3. 启动服务
启动derper服务,执行以下命令即可。在此之前你需要完成以下准备:
- 拥有一个域名,解析到服务器ip(国内则需要先备案)
- 服务器安全组和系统防火墙放开443端口、3478端口
推荐腾讯云,新用户优惠力度还是比较大的,在带宽上感觉也比阿里云要慷慨一些。优惠链接
derper -c=$HOME/derper.conf -hostname=yourhostname.com -stun
当看到以下返回信息,则说明derper服务成功了
2021/09/18 15:04:31 derper: serving on :443 with TLS
2021/09/18 15:04:31 running STUN server on [::]:3478
443端口比较宝贵,芒果测试了使用其他端口,但只能链接上节点,无法进行stun服务器的中转,暂时还找不到解决办法,后续解决后再更新。
4. derper进程守护
我们希望derper服务一直在线,则需要用进程守护工具。这里推荐使用宝塔的应用管理器插件。
配置如下:
名称:derper
执行文件:derper
命令参数:-c=/root/derper.conf -hostname=yourhostname.com -stun
配置控制台节点信息
"ACLs": [
// Match absolutely everything. Comment out this section if you want
// to define specific ACL restrictions.
{ "Action": "accept", "Users": ["*"], "Ports": ["*:*"] },
],
"derpMap": {
"Regions": { "900": {
"RegionID": 900,
"RegionCode": "myderp",
"Nodes": [{
"Name": "1",
"RegionID": 900,
"HostName":"yourhostname.com",
}]
}}
}
重启客户端服务
以windows为例,重启服务可以打开任务管理器-服务,找到tailscale服务,右键选择重启启动即可。
重启后,如果一切按步骤没问题,在控制台的设备详细页面就会看到已经链接上自建的节点。
可以看到延迟相比官方的国外节点低很多。
节点分享
自建的中继节点服务器是可以分享给他人使用的,芒果这里就将自建的节点分享出来,以方便没有条件或者不方便自建中继服务器的朋友,在控制主页填入一下配置信息即可
// Example/default ACLs for unrestricted connections.
{
// Declare static groups of users beyond those in the identity service.
"Groups": {
"group:example": [ "user1@example.com", "user2@example.com" ],
},
// Declare convenient hostname aliases to use in place of IP addresses.
"Hosts": {
"example-host-1": "100.100.100.100",
},
"ACLs": [
// Match absolutely everything. Comment out this section if you want
// to define specific ACL restrictions.
{ "Action": "accept", "Users": ["*"], "Ports": ["*:*"] },
],
"derpMap": {
"Regions": { "900": {
"RegionID": 900,
"RegionCode": "mangoderp",
"Nodes": [{
"Name": "1",
"RegionID": 900,
//本节点由mangoroom.cn提供,请勿滥用。详情访问https://mangoroom.cn/tools/tailscale-custom-derper-servers.html
"HostName":"tailscalederper.mangoroom.cn",
"DERPPort":8082
}]
}}
}
}
节点为腾讯云广州节点,带宽有限,请勿滥用,如果想支持本节点可双击下方点赞或者请芒果喝一杯奶茶
多节点配置
- 写法一
"Nodes": [{
"Name": "1",
"RegionID": 900,
"HostName":"node1.com",
},
{
"Name": "2",
"RegionID": 900,
"HostName":"node2.com",
}]
- 写法二
{
"ACLs":
"Action":"accept","Users":["∗"],"Ports":["∗:∗"]
,
"derpMap": {
"OmitDefaultRegions": false,
"Regions": { "900": {
"RegionID": 900,
"RegionCode": "HK",
"Nodes":
"Name":"HKPROXY","RegionID":900,"IPv4":"x.x.x.x","DERPPort":666//自定义端口
},"901": {
"RegionID": 901,
"RegionCode": "EU",
"Nodes":
"Name":"FARM","RegionID":900,"IPv4":"x.x.x.x","DERPPort":666//自定义端口
}
}
}
}
本文由芒果浩明发布,转载请注明出处。
本文链接:https://mangoroom.cn/tools/tailscale-custom-derper-servers.html
Windows 10Chrome 110.0.0.0
我成功搭建起来了,所有机器也都连上了,但是可能校园网环境太恶劣了,用手机流量打洞打不通。非443端口也不走中转,tailscale ping也ping不通。
mangoroom.cn
Mac OS X 10_15_7Chrome 99.0.4844.51
博主我用了你的derper地址,netcheck可以看到你的relay地址,但是两个节点之间为啥ping不通呢?
可能是太多人用或着腾讯云的问题,中断一段时间后就恢复了
嗯嗯,我发现自己也连不上了。不知道出了啥问题
Windows 10Chrome 97.0.4692.99
另外 多节点如何判断是否生效 自定义节点在 Relays里只显示一个
Relay #900: 37.48 ms
没有显示另外两个自定义节点 怎么判断另外两个是否生效?
非443端口部署方法更新
https://mangoroom.cn/tools/tailscale-custom-derper-servers-custom-derpport-base-docker.html
暂时不知道如何判断两个节点都生效了,只能单独一个一个判断,但是多节点的配置写法我是参考官方的默认节点写的应该没问题
Mac OS X 10_15_7Chrome 98.0.4758.109
{
"ACLs": [{ "Action": "accept", "Users": ["*"], "Ports": ["*:*"] }],
"derpMap": {
"OmitDefaultRegions": false,
"Regions": { "900": {
"RegionID": 900,
"RegionCode": "HK",
"Nodes": [{
"Name": "HK_PROXY",
"RegionID": 900,
"IPv4": "x.x.x.x",
"DERPPort": 666 //自定义端口
}]
},"901": {
"RegionID": 901,
"RegionCode": "EU",
"Nodes": [
{
"Name": "FARM",
"RegionID": 900,
"IPv4": "x.x.x.x",
"DERPPort": 666 //自定义端口
}]
}
}
}
}
-----------------
作者这种写法是, 每个region都相当于一个节点组,自动连接组内延时最低derper node. 两个region仅有一个node时,显示当前relay延时
对的,这种多个region的配置可以方便查看连接的是哪个节点
Windows 10Chrome 97.0.4692.99
客户端升级到1.20.2后 三台设备都识别不到自建节点 博主有这个情况么?
我还没升级客户端,未遇到
Windows 7Chrome 88.0.4324.150
请问下怎么编写 连续添加多个中继节点呀?
非443端口部署方法更新
https://mangoroom.cn/tools/tailscale-custom-derper-servers-custom-derpport-base-docker.html
已更新添加多节点的配置方法,刷新一下就有了
Mac OS X 10_14_6Chrome 93.0.4577.63
这几天在申请443了,其他端口怎么测试都不行
非443端口部署方法更新:https://mangoroom.cn/tools/tailscale-custom-derper-servers-custom-derpport-base-docker.html
443端口一般都没什么问题,缺点就是服务器其他服务就用不了443端口
Mac OS X 10_14_6Chrome 93.0.4577.63
你的443端口是怎么设置的
本文记录的就是443端口的部署方式
Windows 10Firefox 91.0
发现自建的非443端口,无法中转,已放弃。用博主提供的derper了,感谢。
非443端口部署方法更新
https://mangoroom.cn/tools/tailscale-custom-derper-servers-custom-derpport-base-docker.html
Windows 10Firefox 91.0
博主你的derper是不是挂掉了?
没有,现在是非443端口了。需要看文章更新一下配置
我还正常连上,我估计是太多人用了。小水管服务器顶不住
Windows 10Firefox 91.0
昨天好用,今天好像又不好用了。
非443端口比较玄学,我也尝试了多种方法也未成功。评论区有成功的,如果还想继续折腾可以参考一下他们的方法
Windows 10Firefox 91.0
你提供的中继下行速度限速是2M吗?
带宽3M
Windows 10Chrome 96.0.4664.110
https://github.com/tailscale/tailscale/issues/3626
我已经提了issues 官方解决不了 好诡异 说是greatwall的问题
你们有没有遇到
非443端口部署方法更新
https://mangoroom.cn/tools/tailscale-custom-derper-servers-custom-derpport-base-docker.html
Android 12Chrome 89.0.4389.72
443端口是不是要网站备案 我用其他端口https访问 加了自己的ssl没问题
按照国内法律法来说,所有域名解析到大陆境内的服务器都需要备案的,web默认的80和443端口不备案肯定无法正常使用,其他端口我就不确定了
这个我并没有遇到过,可能确实比较少见
Windows 10Chrome 96.0.4664.110
Docker 腾讯云轻量服务器部署,6M广州 1T流量
"HostName":"derp.wokeroom.cn",
"IPv4":"159.75.67.244",
"DERPPort":8082
赞
Mac OS X 10_15_7Chrome 96.0.4664.110
请问出现下面的报错是为什么呢?
2021/12/27 16:40:10 derper: serving on :443 with TLS
2021/12/27 16:40:10 running STUN server on [::]:3478
2021/12/27 16:47:00 derp client 156.0.201.97:2056/6e6f64656b65793a6462383434626431636263393033333039356263613766326233613233373732313062323534633835643132323231643234383239313935633166623332: read EOF
2021/12/27 16:47:00 derp client 156.0.201.97:2056/6e6f64656b65793a6462383434626431636263393033333039356263613766326233613233373732313062323534633835643132323231643234383239313935633166623332: removing connection
这个错误我没有遇到过,看了一下我好像也没有能给到你有实际性的帮助。如果还是无法解决,我推荐你去tailscale官方的github去提issue。https://github.com/tailscale/tailscale/issues
Mac OS X 10_15_7Chrome 96.0.4664.110
为什么我按照博主的配置了,但是derp列表里就是不出现我添加的derp,用的也是腾讯云轻量应用服务器,但是使用国外的服务器同样配置却可以,是因为没有备案吗,还是tailscale被国内ban了
这个和tailscale没关系,域名只有备案了才能正常解析到国内的服务器,文中也提了国内服务器需要备案的域名
Mac OS X 10_15_7Chrome 96.0.4664.110
请问在国内服务器上搭建derp需要自己生成证书吗,怎么生成呢,还是说是derper自动生成letsencrypt证书?但是国内不是不支持letsencrypt证书吗
默认启用443端口启动就会自动生成的,无需自己申请配置
Android 12Chrome 89.0.4389.72
等待非443端口方法
非443端口建议可以尝试以下两种方法:
1. https://hub.docker.com/r/zouyq/derper
2. https://github.com/juanfont/headscale
方法1是基于docker的有人测试成功了,但我测试并未成功。方法2是使用第三方的服务实现脱离tailscale官方部署自己独立的局域网,我并未测试过。
Android 12Chrome 95.0.4638.74
我成功了https://blog.csdn.net/opopop880/article/details/122125430 谢谢
Windows 10Chrome 96.0.4664.110
该方法可行,我也ok了
Windows 10Chrome 96.0.4664.110
hallenge type found
2021/12/23 17:18:36 http: TLS handshake error from 59.172.250.106:51633: acme/autocert: missing certificate
2021/12/23 17:18:38 http: TLS handshake error from 59.172.250.106:51645: acme/autocert: missing certificate
2021/12/23 17:18:38 http: TLS handshake error from 59.172.250.106:51647: acme/autocert: missing certificate
2021/12/23 17:18:40 http: TLS handshake error from 59.172.250.106:51650: acme/autocert: missing certificate
2021/12/23 17:18:40 http: TLS handshake error from 59.172.250.106:51651: acme/autocert: missing certificate
2021/12/23 17:18:40 http: TLS handshake error from 59.172.250.106:51652: acme/autocert: missing certificate
2021/12/23 17:18:40 http: TLS handshake error from 59.172.250.106:51653: acme/autocert: missing certificate
2021/12/23 17:18:40 http: TLS handshake error from 59.172.250.106:51654: acme/autocert: missing certificate
2021/12/23 17:18:40 http: TLS handshake error from 59.172.250.106:51655: acme/autocert: missing certificate
2021/12/23 17:18:41 http: TLS handshake error from 59.172.250.106:51656: acme/autocert: missing certificate
2021/12/23 17:18:41 http: TLS handshake error from 59.172.250.106:51657: acme/autocert: missing certificate
2021/12/23 17:18:41 http: TLS handshake error from 59.172.250.106:51658: acme/autocert: missing certificate
2021/12/23 17:18:41 http: TLS handshake error from 59.172.250.106:51659: acme/autocert: missing certificate
2021/12/23 17:18:41 http: TLS handshake error from 59.172.250.106:51660: acme/autocert: missing certificate
2021/12/23 17:18:41 http: TLS handshake error from 59.172.250.106:51661: acme/autocert: missing certificate
启动成功访问https域名报错
提示证书丢失了,你是用的默认443端口启动的吗
Windows 10Firefox 93.0
我那方法中转节点能用,但是ping不了nat中的机器,不知道要怎么调
ping不了nat中的机器?意思是指两个客户端连上你的服务器中继节点后,两个客户端之间互相ping不通吗?
Windows 10Firefox 93.0
我今天折腾tx的gz中转弄好了,不需要证书,不需要443
acl那边不需要指定端口,官方知道端口
我用的docker方案,但是转发感觉还不行,不之道怎么优化
命令参考
docker run --sysctl net.ipv4.ip_forward=1 --restart unless-stopped --name derper -p 8866:8866 -p 3478:3478/udp -d -t chestnutprog/derper -hostname 123.com -stun -a 0.0.0.0:8866
你这个方案在禁用官方节点后还能正常使用吗?
Windows 10Firefox 93.0
测试结果,我的方案是无效的,任何节点无法ping通,应该是证书这块的问题
Windows 10Firefox 93.0
未测试
那我还是不太明白你说的ping不通具体是指什么意思,我的理解是自建中继就是为了防止两个客户端无法p2p打洞成功而做转发的。建议你禁用掉官方节点,只采用自己的节点测试两个客户端是否正常联通。
Windows 10Firefox 93.0
有搞定非443端口吗
我用docker也不行
非443端口部署方法更新
https://mangoroom.cn/tools/tailscale-custom-derper-servers-custom-derpport-base-docker.html
暂时没有,具多位网友反馈也是不行。倒是v站的一个大佬貌似使用境外的服务器是支持非433端口,个人猜测要么是目前的derper程序已经更新不支持,要么是境内服务器的原因。若想使用非433端口唯一的尝试可以试试找v站的sekai大佬要一份他的derper部署代码,如果也不行那就是境内服务器的原因了。v站讨论链接https://www.v2ex.com/t/791876
Mac OS X 10_15_7Chrome 96.0.4664.55
derper -a :10443 --stun
Nodes里面Hostname可以用ip
添加一个参数:
"DERPPort": 10443
我测试该方法还是不行,现象是后台设备面板都显示客户端已经连上,但是只有同一个局域网下的两个客户端之间可以ping通,不在一个网络下就ping不通了。我的derper启动服务器是加了-c derper.conf参数的,不加无法启动
我也是iphone,测试可以的呀
LinuxChrome 96.0.4664.93
感谢大佬,已用上你分享的中继,但是为何ios手机4G连接时并没有连到你的中继节点?
感谢分享,我后面试试看
我的不添加-c参数无法启动derper程序
Mac OS X 10_15_7Chrome 96.0.4664.55
我不加-c derper.conf没问题啊。
直接运行derper -a :10443 --stun 3478
就可以了
Mac OS X 10_15_7Chrome 96.0.4664.55
可以使用非443端口
不需要ssl证书
晚点我找下资料。住院了一段时间,都忘记了。。。
希望到时候分享一下,老兄保重身体
Windows 10Chrome 95.0.4638.69
折腾半天,指定端口怎么搞都不行,好气哦
又没有北岸米,只能白票博主的
备案是有点麻烦,小水管,别滥用就好
Mac OS X 10_15_7Chrome 94.0.4606.61
请问derp.conf文件在哪里?没找到啊
在用户目录下,看看home或者root,假如你是root用户那应该就在root目录下面
Mac OS X 10_15_7Chrome 94.0.4606.61
no config path specified; using /var/lib/derper/derper.key
只有这个文件,没有找到derper.conf这个文件
好奇怪
不是derper.key,正常情况就在root或者用户目录,你可以查看$HOME变量是什么
Mac OS X 10Firefox 93.0
跟derper.key内容是一样的
derper文件里面是一个私钥,估计和域名绑定的,你可能用不了我的,不过你可以尝试看看。下载:https://mangoroom.lanzoui.com/i3hzevw8zhi 密码:7q05
Mac OS X 10_15_7Chrome 94.0.4606.61
golang是最新的1.17.2

腾讯云我已经安装了好几遍。
博主是否可以把derper.conf文件分享一下?
谢谢。
derper运行也正常,就是没这个文件。真的是奇了怪了
有没有可能是derper安装并未成功?golang版本尽量新一点,1.16以上。
我的就是腾讯云,ssh远程登录后,找了一下就在用户目录
[root@VM-8-10-centos ~]# find derper.conf
derper.conf
[root@VM-8-10-centos ~]#
Mac OS X 10_15_7Chrome 94.0.4606.61
重装系统试了,还是没有。真奇怪了。。。
我也是腾讯的轻量云,centos或者ubuntu都是正常的。你要不重新安装一下试试看
Mac OS X 10_15_7Chrome 94.0.4606.61
root@qqcloud:~# echo $HOME
/root
root@qqcloud:~# find / -name derper.conf
root@qqcloud:~#
没有这个文件。。。
就觉得好奇怪。还是腾讯轻量云系统的问题?
Windows 7Chrome 91.0.4472.124
网站每日ip 1千,交换友链,https://money1.us/521
看我友链格式,在自己网站添加完我网站友链告知我就行
Windows 7Chrome 91.0.4472.164
https://money1.us/502,内页友链
关键词:话费充值优惠
描述:充话费优惠
链接:https://money1.us/489
已添加友链
已修改
Windows 7Chrome 91.0.4472.164
链接是https://money1.us/489,不是https://money1.us/