Tailscale 自建derp服务器 自定义端口 Ubantu 18.04

本文详细介绍了如何在服务器上配置derper,包括安装SSL证书、设置Golang环境、安装derper、编写启动和停止脚本,以及配置系统服务。此外,还涉及了Tailscale的AccessControls配置和云服务器的端口放行,以实现低延迟的远程桌面访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    如果使用tailscale只是用来远程桌面的,推荐使用Rustdesk来做,可以看我最新的博客,隧道代理也是可以,只是需要手动指定端口映射,不能想tailscale。

Rustdesk自建服务器 一分钟实现远程办公自由 流畅高清免费都有了

前提准备:

具有公网ip的服务器

域名(SSL证书,阿里云申请可申请免费证书)

以下默认自定义端口为81,需要自定义可以自行修改

配置SSL证书

通过ftp等方式,将SSL证书添加到/usr/local/cert,用于后面derper运行配置使用,此路径可自定义,但后面运行derper命令需对应修改。

默认使用crt后缀的文件,即下载apche证书,将key、crt结尾的文件都移到该目录,名字统一改为域名,即你使用的服务器对应的域名。

证书需要注意一点,你需要用哪个域名就要申请哪个域名,如你要用abc.com就用abc.com去创建证书,你要用123.abc.com就要申请123.abc.com的ssl证书,然后提交的key和crt,crt结尾有两个,只需要带public结尾的即可,即公钥。

安装golang环境

获取安装包并安装,此处安装包版本仅为示例,如果后续按照derper的时候提示使用什么版本,则使用什么版本。

wget https://studygolang.com/dl/golang/go1.20.0.linux-amd64.tar.gz

tar -C /usr/local -xzf go1.20.linux-amd64.tar.gz 

 配置环境变量

vi /etc/profile

在最开头添加

export GOROOT=/usr/local/go
export GOPATH=/usr/local/gopath
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOROOT/bin
export PATH=$PATH:$GOPATH/bin

保存退出,并更新环境变量

source /etc/profile

测试是否安装成功

go version

安装derper 

设置go的代理,如果不设置,可能因为网络问题执行下一行安装命令不成功

go env -w GOPROXY=https://goproxy.cn,direct

安装derper,此处如果go版本安装不满足要求,会提示使用什么版本,如果这里有提示,则相应重新安装go对应版本

go install tailscale.com/cmd/derper@main

# 检查结果是否有报错
derper -h

编写启动脚步

cd /usr/local/gopath/bin
vi runderper

脚本内容

#!/bin/sh
cd /usr/local/gopath/bin
nohup ./derper -hostname 你的域名 -c=derper.conf -a :81 -http-port -1 -certdir 你的SSL证书路径 -certmode manual -stun &
echo $! > app.pid

PS:在启动脚本增加 -verify-clients参数可以进行验证,但是需要在服务器端安装并登陆tailscale

nohup ./derper -hostname 你的域名 -c=derper.conf -a :81 -http-port -1 -certdir 你的SSL证书路径    -verify-clients -certmode manual -stun &

给文件执行权限

chmod +x runderper

编写停止脚本

vi stopderper.sh

脚本内容

#!/bin/sh
 
kill `cat /usr/local/gopath/bin/app.pid`
rm -rf /usr/local/gopath/bin/app.pid

 给文件执行权限

chmod +x stopderper.sh

配置系统服务,并使用自定义脚本处理

cd /etc/systemd/system
vi derper.service

文件内容

Description=derper服务
After=network.target
 
[Service]
Type=forking
ExecStart=/usr/local/gopath/bin/runderper
ExecStop=/usr/local/gopath/bin/stopderper.sh
 
[Install]
WantedBy=multi-user.target

 服务相关命令

# 查看derper服务状态
systemctl status derper.service
# 启动derper服务
systemctl start derper.service
# 停止derper服务
systemctl stop derper.service
# 设置开机自启
systemctl enable derper.service
# 重载配置
systemctl daemon-reload

 执行查看状态命令出现如下截图为正常,最后的error日志自测不影响远程桌面使用

 Tailscale 配置

进入Access Controls页面进行配置

// 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": {
    "OmitDefaultRegions": true,
    "Regions": {
      "900": {
        "RegionID": 900,
        "RegionCode": "myderp",
        "Nodes": [
          {
            "Name": "1",
            "RegionID": 900,
            "HostName": "你的域名",
			"DERPPort": 81
          }
        ]
      }
    }
  }
}

 此时,需要在云服务器网络安全组里面进行端口放行,tcp 81, udp 3478,注意两个端口配置的类型,不要配错。

到此所有步骤测完了,可以在Machines页面随便点一台在线的设备查看是否正常连接上了,查看测出是否和你配置的RegionID一致

 

使用cmd ping一下端口

此时响应延迟3ms,比用官方的延迟(100ms到300ms不等)起码低了几十倍,此时可以正常进行远程桌面了,高清且超低延迟,就好像自己在电脑前一般。此时我写完这篇文档,突然发现我是在用tailscale 自建derp服务器 来打洞远程桌面写的,非常丝滑。

参考:tailscale自建derper服务器中转,使用自定义端口_独步-的博客-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值