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

本文详细介绍了如何在云服务器上通过Tailscale实现NAT穿透,包括前期准备、安装Go语言、下载并配置tailscalederper、自签名域名、设置DERP服务、防火墙配置以及防白嫖措施。
摘要由CSDN通过智能技术生成

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

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

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


前期准备:

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

root账户登录


更新软件包

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

  


下载GO

  • 安装依赖
apt install -y wget git openssl curl

  • 拉取 “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


修改证书 

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


编译derper

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

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

  • 验证是否编译成功

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


自签域名

  • 设置域名信息,域名可以是自己瞎编的
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 <<EOF
[Unit]
Description=TS Derper
After=network.target
Wants=network.target
[Service]
User=root
Restart=always
ExecStart=/etc/derp/derper -hostname derp.myself.com -a :33445 -http-port 33446 -certmode manual -certdir /etc/derp
RestartPreventExitStatus=1
[Install]
WantedBy=multi-user.target
EOF
  • 全部复制记事本里的代码,“ Ctrl + Shift + V ” 粘贴到finalshell的命令窗口(不是输入框)
  • 云服务器里开放TCP“自己改的端口”和UDP“3478”这两个端口

启用DERP

  •   重新加载DERP服务
systemctl daemon-reload
  • 重启DERP服务
systemctl restart derp
  •  设置开机自启
systemctl enable derp

检查DERP服务器状态

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


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,
					},
				],
			},
		},
	},

 


检查DERP服务器是否接入

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

  • 再执行命令“tailscale status”

  • 未报错

  • 报错 

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

  • 解决ping不通的问题

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

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

       2、检查防火墙设置

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

 

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

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

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

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

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

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


防白嫖设置 

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

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

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

 

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

  • 重新加载DERP服务
systemctl daemon-reload
  • 重启DERP服务
systemctl restart derp

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


END

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值