标题: 纯小白在轻型云主机上安装tailscale中断器derper各种遇坑经验
cjc


软件作者



UID 1
精华 18
积分 2773
帖子 1467
威望 2773
金钱 72
阅读权限 200
注册 2002-5-7
发表于 2023-7-8 13:57  资料  个人空间  短消息  加为好友 
纯小白在轻型云主机上安装tailscale中断器derper各种遇坑经验

纯小白在轻型云主机上安装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

顶部
 



当前时区 GMT+8, 现在时间是 2024-5-6 23:19

粤ICP备2021113670号
访问量: - 清除 Cookies - 联系我们 - CJC学习与技术分享