纯小白在轻型云主机上安装tailscale中断器derper各种遇坑经验
*** 先进入宝塔面板,在面板里可以进行 终端操作 / 服务器文件编辑 / 文件上传 ***
在终端里,输入 bt 14 可查看宝塔面板地址和帐号
1. 安装 Go 语言。
***********************************************************
因为 derper 是依赖 go install 实现分发,所以要先安装 Go 语言 SDK。
(如果不想自己安装go语言与derper,可以安装别人打包好的docker版的derper, 参考后面docker版安装)
用以下命令安装goLang
cd /root
wget
https://mirrors.ustc.edu.cn/golang/go1.10.5.linux-amd64.tar.gz
sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.10.5.linux-amd64.tar.gz
*** 如果下载超时,也可以通过以下2个网址找到对应的安装包,进行下载, 下载后,通过宝塔面板里的文件管理上传安装包,再用宝塔面板里终端进行安装
https://go.dev/dl/
https://mirrors.ustc.edu.cn/golang/
安装完成后,需要设置环境变量
echo "export GOROOT=/usr/local/go" >> /etc/profile
echo "export GOPATH=$HOME/go" >> /etc/profile
echo "export PATH=$GOPATH/bin:$GOROOT/bin:$PATH" >> /etc/profile
也可以在 宝塔面板的文件管理里,直接编辑 /etc/profile 文件,在末尾添加如下内容
# /usr/local/go/bin 为go安装目录的bin目录,系统所有账户可以使用bin下的命令进行执行
export PATH=$PATH:/usr/local/go/bin
# /home/go 为go工作空间的目录,可自行修改
export GOPATH=/home/go/
# /usr/local/go 为go的安装目录
export GOROOT=/usr/local/go
改完配置后,必执行以下语句让环境变量生效:
source /etc/profile
完成后,能过以下语句检查 go 是否安装正常
go version
如果提示: -bash: aa: command not found , 表示环境变量没设置好,需检查 /usr/local/go 下面是否有安装好的文件, 用 echo $GOROOT 及 echo $PATH 检查环境变量是否已经设好。
检查 /etc/profile 里的内容没错的话,再执行一次 source /etc/profile
2. 安装derper服务
***********************************************************
go install tailscale.com/cmd/derper@main
*** 如果安装失败,可以换国内镜像安装:
go env -w GOPROXY=https://goproxy.cn,direct
go install tailscale.com/cmd/derper@main
derper安装成功后,前面环境变量 GOPATH 指定的位置: /home/go/bin 上,应该有 derper 的文件:
cd /home/go/bin
ls
完成后,还不能直接启动derper, 需要先设置防火墙放行以及 域名证书
3. 设置防火墙
***********************************************************
由于轻主机一般用作网站,80, 443端口已经被用了,需要让 derper 使用别的端口, 这里我使用 8443
在防火墙里,需要开放以下2个端口
8443 : derper的侦听端口 (tcp)
3478 : STUN 端口(udp)
***** 遇坑: 轻主机里有2个设置防火墙的地方,一个是 轻主机的控制台里,另一个在宝塔面板的安全分页里
需要在控制台的服务器里,点 更多->查看详情, 在防火墙分页里,添加规则,允许以上2个端口
原来一直测试derper不通,就是因为这个防火墙里没放行
至于宝塔面板里的防火墙是否需要同步设置,我不了解,我把那个防火墙关闭了。
腾讯轻主机的控制台网址:
https://console.cloud.tencent.com/lighthouse
注意: 如果所选端口值小于1024, 是需要特别授权的。 授权命令: sudo setcap CAP_NET_BIND_SERVICE=+eip 全路径文件名
4. 申请SSL证书
***********************************************************
免费证书,我使用的是 Let's Encrypt
先确定你要使用的2级域名, 比如 derper.xxx.net,
如果你原来已经申请过 xxx.net 的证书,那么就不需要重新申请了, 跳过这步
进宝塔面板 -> 网站 -> php 项目 -> 添加站点
创建站点,在 域名里输入 derper.xxx.net , 然后 提交
点新创建站点右边的 设置 , 选 SSL -> 选 Let's Encrypt,
进行如下设置:
DNS验证(支持通配符) -> 手动解释 -> 勾选域名 derper.xxx.net, 然后点 申请
然后,会自动创建订单,要求你在dns解释上添加一条记录,大致内容如下:
_acme-challenge.derper.xxx.net pOLcaL8zDmdH6pQhhFiiWtk0s4JmMWSjCVldytn6yN0 TXT 是
这个时候,你不要点 验证 !! 先到你的域名管理网站 (如果你用的是腾讯的DNS解释,那网站是这个:
https://console.cloud.tencent.com/domain/all-domain )
在DNS解释里,添加一条记录:
主机记录: _acme-challenge.derper.xxx.net
记录类型: TXT
记录值: pOLcaL8zDmdH6pQhhFiiWtk0s4JmMWSjCVldytn6yN0
然后,点确定
完成添加后,等候2分钟,先在命令行输入CMD 里用以下命令检查一下上面设置的dns是否已经生效
ipconfig /flushdns
nslookup -qt=TXT _acme-challenge.xxx.net 223.5.5.5
如果有结果返回,则回到 宝塔面板,点击 验证, 正常下,会成功申请到证书。
5. 下载及安装SSL证书
***********************************************************
进宝塔面板 -> 网站 -> php 项目
找到你刚申请成功证书的 derper 域名(如果有根名证书,就找到根域名), 点击右边的 设置 -> SSL -> 下载证书 -> 保存
打开下载好的证书zip文件,找到 Apache 文件把,把里面的2个文件拷贝出来: domain.crt, private.key
然后,把这2个文件分别改名为你的域名文件名,derper.xx.net.crt, derper.xx.net.key
到宝塔面板 -> 左边 文件 标签 -> 文件管理里浏览到 /home/go/bin (注: 前面安装 derper 的目录)
然后,把这个2证书文件上传
至此,证书安装完成。
6. 设置与启动derper
***********************************************************
进宝塔面板 -> 网站 -> 其他项目 -> 添加通用项目, 添加如下内容:
项目执行文件: /home/go/bin/derper
项目名称:derper
项目端口:8443
执行命令:/home/go/bin/derper -a :8443 -hostname derper.xxx.net -c=derper.conf -certdir /home/go/bin -certmode manual -http-port -1
运行用户:www (注: 如果后面启动服务时提示权限不够,可改为root用户,或在终端里给derper天加侦听权限: sudo setcap CAP_NET_BIND_SERVICE=+eip /home/go/bin/derper)
开机启动:打勾
绑定域名:derper.xxx.net:8443 (注: 这里要加上端口,否则会默认用80)
保存后,在服务状态里,点 启动. 如果没有报错,表示启动成功
几种报错可能:
a: 80 端口bind失败,检查上面的执行命令后面是否有 -http-port -1 , 要禁止derper使用80端口。
b: 证书失败, 看提示信息,看是证书域名不匹配还是没找到证书
c: 8443 端口被占用,可以用 isof -i:8443 查看是被哪个进程占用,杀进程或更换端口
7. 修改tailscale配置
***********************************************************
打开 tailscale 管理网站:
https://login.tailscale.com/admin/acls/file
在 Access Controls 最下面最后一个花括号之前,添加以下内容:
"derpMap": {
// 这个是设置不使用官方默认的derp节点
"OmitDefaultRegions": false,
"Regions": {
"900": {
"RegionID": 900,
"RegionCode": "CN",
"RegionName": "China",
"Nodes": [
{
"Name": "derper",
"RegionID": 900,
"HostName": "derper.xxx.net",
"DERPPort": 8443,
},
],
},
},
保存
8. 验证derper
***********************************************************
在 cmd 里,输入以下命令验证: tailscale netcheck (如果提示找不到 tailscale, 请到 tailscale 安装目录下再运行)
结果:
Report:
* UDP: true
* IPv4: yes, 223.xx.xx.xx:xxx (注: 这里能正常显示出IP,表示网络正常)
* IPv6: yes, [2488:1122:330:33:455:7342323:342346:a32421]:5530
* MappingVariesByDestIP: false
* HairPinning: false
* PortMapping: UPnP
* CaptivePortal: false
* Nearest DERP: China
* DERP latency:
- CN: 16.4ms (China) (注: 这个显示为China 的站点如果有时间,表示derper连接成功)
- hkg: 51.8ms (Hong Kong)
至此,所有步骤完成,可以通过 tailscale status 命令查看各组网设备的连接情况
如果能ping通里面列出的主机ip, 表示网络正常
9. Docker版安装
***********************************************************
证书的获取文法同前面步骤, 先准备好证书,再进行以下操作
安装docker, 在终端, 一键安装命令:
curl -sSL
https://get.daocloud.io/docker | sh
安装他人制作的derper镜像
sudo docker pull zouyq/derper
sudo docker run -it -d -p 8443:8443 -p 3478:3478/udp --name derper -v /certpath:/home/go/bin zouyq/derper /derper -hostname derper.xxx.net -stun -a :8443 -certmode manual -certdir /home/go/bin -http-port -1
docker相关命令:
docker ps -a (注:列出所有安装好的docker镜像)
dockert start docker镜像id (启动一个 docker镜像)
dockert stop docker镜像id (停止一个 docker镜像)
docker logs docker镜像id (注: 查看docker运行记录)
dockert rm docker镜像id (删除一个 docker镜像)
docker --help
更令docker说明:
https://www.runoob.com/docker/docker-container-usage.html
如果提示无docker命令, 用以下命令启动docker
systemctl start docker
10. 参考命令
***********************************************************
增加端口侦听权限: sudo setcap CAP_NET_BIND_SERVICE=+eip /home/go/bin/derper
启动docker命令: systemctl start docker
列出当前进程: ps (或 ps -a)
杀掉进程: kill 进程ID
列出活动端口: lsof -i:端口号
列出文件: ls
删除文件: rm
移动文件: mv
拷贝文件: cp
查看文件内容: more 文件名
显示环境变量: echo 变量名
运行批命令: sh
更新环境设置: source 文件名
编辑文件: vim 文件名 (Insert开始插入, ESC退出编辑状态, :wq 存盘退出)
进程守护: 安装supervisord服务,
https://www.cnblogs.com/laoliere ... ith_supervisor.html