【傻呱呱】Tailscale 搭建derp中继节点(无需域名)

首先感谢 @韩风 大佬提供的方法

大佬B站主页:韩风Talk的个人空间-韩风Talk个人主页-哔哩哔哩视频

打洞原理详解:[译] NAT 穿透是如何工作的:技术原理及企业级实践(Tailscale, 2020)


前期准备:

  • 云服务器一台
  • FinalShell或其他支持编辑主机内文件的ssh工具

root账户登录

  •  FinalShell用root账户登录云服务器 查看教程

更新软件包

  • 执行这行代码
apt update && apt upgrade

【傻呱呱】Tailscale 搭建derp中继节点(无需域名)_第1张图片  【傻呱呱】Tailscale 搭建derp中继节点(无需域名)_第2张图片

【傻呱呱】Tailscale 搭建derp中继节点(无需域名)_第3张图片


下载GO

  • 安装依赖
apt install -y wget git openssl curl
  • 去All releases - The Go Programming Language查看最新版本

【傻呱呱】Tailscale 搭建derp中继节点(无需域名)_第4张图片

  • 拉取 “go” 压缩包
wget https://go.dev/dl/go1.21.5.linux-amd64.tar.gz 
  • 解压 “go” 压缩包
rm -rf /usr/local/go && tar -C /usr/local -xzf go1.21.5.linux-amd64.tar.gz

  • 查看 “go” 版本信息(验证是否安装成功 )
export PATH=$PATH:/usr/local/go/bin
go version
  • 添加环境变量
echo "export PATH=$PATH:/usr/local/go/bin" >> /etc/profile
source /etc/profile

安装tailscale derper

  • 国内云服务器设置加速下载
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
  • 拉取 “tailscale derper”
go install tailscale.com/cmd/derper@main

【傻呱呱】Tailscale 搭建derp中继节点(无需域名)_第5张图片

【傻呱呱】Tailscale 搭建derp中继节点(无需域名)_第6张图片


修改证书 

  • 从FinalShell的文件管理界面打开cert.go文件
  • 文件夹路径:/root/go/pkg/mod/tailscale文件夹一般在最下面/cmd/derper

【傻呱呱】Tailscale 搭建derp中继节点(无需域名)_第7张图片

【傻呱呱】Tailscale 搭建derp中继节点(无需域名)_第8张图片

【傻呱呱】Tailscale 搭建derp中继节点(无需域名)_第9张图片


编译derper

  • 复制cert.go文件所在的路径 

【傻呱呱】Tailscale 搭建derp中继节点(无需域名)_第10张图片

  • cd 到刚才复制的路径
cd 刚才复制的路径
  • 开始编译derper
go build -o /etc/derp/derper
  • 若像下面这样报错,就是cd路径错了

【傻呱呱】Tailscale 搭建derp中继节点(无需域名)_第11张图片

  • 验证是否编译成功

  • 先cd到根目录
cd
  • 再执行下面验证代码 
ls /etc/derp

【傻呱呱】Tailscale 搭建derp中继节点(无需域名)_第12张图片


自签域名

  • 设置域名信息,域名可以是自己瞎编的
openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes -keyout /etc/derp/derp.myself.com.key -out /etc/derp/derp.myself.com.crt -subj "/CN=derp.myself.com" -addext "subjectAltName=DNS:derp.myself.com"

配置DERP

  • 将下面的代码复制到记事本里,修改 "33445" 这个端口为另外的,自己随便想一个
cat > /etc/systemd/system/derp.service <
  • 全部复制记事本里的代码,“ Ctrl + Shift + V ” 粘贴到finalshell的命令窗口(不是输入框)
  • 云服务器里开放TCP“自己改的端口”和UDP“3478”这两个端口

启用DERP

  •   重新加载DERP服务
systemctl daemon-reload
  • 重启DERP服务
systemctl restart derp
  • 再重启一下云服务器
reboot


检查DERP服务器状态

  • 浏览器访问:云服务器的IP地址+端口号(“自己改的端口”)

【傻呱呱】Tailscale 搭建derp中继节点(无需域名)_第13张图片

【傻呱呱】Tailscale 搭建derp中继节点(无需域名)_第14张图片

【傻呱呱】Tailscale 搭建derp中继节点(无需域名)_第15张图片

【傻呱呱】Tailscale 搭建derp中继节点(无需域名)_第16张图片

【傻呱呱】Tailscale 搭建derp中继节点(无需域名)_第17张图片


ACL配置

  • 进入tailscale网页端 
  • 进入ACL界面添加以下代码

	"derpMap": {
		"OmitDefaultRegions": true,
		"Regions": {
			"901": {
				"RegionID":   901,
				"RegionCode": "Myself",
				"RegionName": "Myself Derper",
				"Nodes": [
					{
						"Name":             "901a",
						"RegionID":         901,
						"DERPPort":         33445,
						"IPv4":            "服务器IP",
						"InsecureForTests": true,
					},
				],
			},
		},
	},

 【傻呱呱】Tailscale 搭建derp中继节点(无需域名)_第18张图片


检查DERP服务器是否接入

  • 在一台已加入tailscale网络的设备上(最好Linux系统的设备)
  • 执行命令“tailscale netcheck”

【傻呱呱】Tailscale 搭建derp中继节点(无需域名)_第19张图片

  • 再执行命令“tailscale status”

  • 未报错

【傻呱呱】Tailscale 搭建derp中继节点(无需域名)_第20张图片

  • 报错 

【傻呱呱】Tailscale 搭建derp中继节点(无需域名)_第21张图片

  • 这时运行命令“tailscale ping 任意一台任意一台已加入tailscale网络的设备的IP”

【傻呱呱】Tailscale 搭建derp中继节点(无需域名)_第22张图片

  • 解决ping不通的问题

      1、经过测试发现如果云服务器是国内的

        初次打洞时要确保这两个客户端的网络也是国内的 反之亦然        

       2、检查防火墙设置

        如果还是ping不通 进入端口查询网站 检查所需端口是否真正放行

 【傻呱呱】Tailscale 搭建derp中继节点(无需域名)_第23张图片

        有些云服务商提供的云服务器服务有两层防火墙

        网页端的防火墙(安全组策略)和主机内的系统防火墙

        这时就要两层防火墙都放行所需端口才行

        例如:Debian系统放行 “33445” 端口命令:ufw allow 33445

        放行端口后可能需要重启一下服务器或DERP服务

  • 上面操作完成后就可以ping通了

【傻呱呱】Tailscale 搭建derp中继节点(无需域名)_第24张图片


防白嫖设置 

如果服务器IP地址和端口泄露了 那么是可以被别人白嫖的,为了防止白嫖

  • 在云服务器上安装tailscale客户端并加入到tailscale网络中
curl -fsSL https://tailscale.com/install.sh | sh

【傻呱呱】Tailscale 搭建derp中继节点(无需域名)_第25张图片

【傻呱呱】Tailscale 搭建derp中继节点(无需域名)_第26张图片

【傻呱呱】Tailscale 搭建derp中继节点(无需域名)_第27张图片

【傻呱呱】Tailscale 搭建derp中继节点(无需域名)_第28张图片

  • 修改DERP服务,开启连接验证
nano /etc/systemd/system/derp.service

 【傻呱呱】Tailscale 搭建derp中继节点(无需域名)_第29张图片

【傻呱呱】Tailscale 搭建derp中继节点(无需域名)_第30张图片

快捷键:Ctrl + X  ,输入 “y”,最后回车

【傻呱呱】Tailscale 搭建derp中继节点(无需域名)_第31张图片

  • 重新加载DERP服务
systemctl daemon-reload
  • 重启DERP服务
systemctl restart derp
  • 以防万一,再重启一下云服务器
reboot

好 这样操作完后 别人就无法白嫖了


END

你可能感兴趣的:(linux,运维,服务器,ssh)