Tailscale 自建 Derp 中转服务器

文章目录

  • 为什么要建立 Derp 中转服务器?
  • 安装 Go 环境
  • 通过 Go 安装 Derp
  • 处理证书文件
  • 自签一个域名启动 Derp
  • IPV6 的支持
  • 防止 Derp 被白嫖
  • 以上的操作命令合集
  • 自建 Headscale 添加 Derp
  • 参考


为什么要建立 Derp 中转服务器?

Tailscale 使用的算法很有趣: 所有客户端之间的连接都是先选择 DERP 模式(中继模式),这意味着连接立即就能建立(优先级最低但 100% 能成功的模式),用户不用任何等待。然后开始并行地进行路径发现,通常几秒钟之后,我们就能发现一条更优路径,然后将现有连接透明升级(upgrade)过去,变成点对点连接(直连)

因此, DERP 既是 Tailscale 在 NAT 穿透失败时的保底通信方式(此时的角色与 TURN 类似),也是在其他一些场景下帮助我们完成 NAT 穿透的旁路信道。换句话说,它既是我们的保底方式,也是有更好的穿透链路时,帮助我们进行连接升级(upgrade to a peer-to-peer connection)的基础设施。

Tailscale 官方内置了很多 DERP 服务器,分步在全球各地,惟独不包含中国大陆,原因你懂得。这就导致了一旦流量通过 DERP 服务器进行中继,延时就会非常高。而且官方提供的 DERP 服务器是万人骑,存在安全隐患。

安装 Go 环境

apt update && apt upgrade

等了大半年终于安完了,然后安装所需的软件

apt install -y wget git openssl curl

在这里插入图片描述

然后安装 go 语言

wget https://go.dev/dl/go1.20.5.linux-amd64.tar.gz

我这里连不上网,所以在本地直接下载了,然后传到服务器上面

然后参考 go 官方的安装手册,运行这行代码

rm -rf /usr/local/go && tar -C /usr/local -xzf go1.20.5.linux-amd64.tar.gz 

这里的 go1.20.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

通过 Go 安装 Derp

安装 Derp 的时候报错了

在这里插入图片描述
在回去安装 go 的最新版本

在这里插入图片描述

可以看到直接生效的

在这里插入图片描述

之后接着运行下载 Derp 的命令

在这里插入图片描述

处理证书文件

之后看一下这个文件

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

自签一个域名启动 Derp

在这里插入图片描述

cat > /etc/systemd/system/derp.service <<EOF
[Unit]
Description=TS Derp
After=network.target
Wants=network.target
[Service]
User=root
Restart=always
ExecStart=/etc/derp/Derp -hostname derp.myself.com -a :33445 -http-port 33446 -certmode manual -certdir /etc/derp
RestartPreventExitStatus=1
[Install]
WantedBy=multi-user.target
EOF

把云服务的 tcp 33445 (HTTPS 需要)和 udp3478 (STUN需要)的端口打开

在这里插入图片描述

如果你是用 宝塔的话,不仅是云服务器那边需要开启相对应的端口,宝塔的安全也要开启相应端口!
之后再浏览器中输入https://your ip:33445/即可

在这里插入图片描述

在服务器安装 Tailscale

sudo apt install tailscale

如果下载太慢,参考这个解决apt install 下载速度太慢

在这里插入图片描述

检查网络

tailscale netcheck

在这里插入图片描述

然后可以用 tailscale status 查看状态,这里我的 linux 还没有登录 Tailscale

在这里插入图片描述

登录官网 tailscale ,在我组的网络中,添加一个 linux 设备

在这里插入图片描述
生成 install 的 script 然后返回 linux 中运行

IPV6 的支持

在这里插入图片描述

代码如下

network:version: 2tunnels:he-ipv6:mode: sitremote: 216.218.221.6local: 内网ipaddresses:- "2001:470:18:e6d::2/64"routes:- to: defaultvia: "2001:470:18:e6d::1"

可以看到已经可以直联了

还是根据视频的步骤来,但是我这里选择的 linux

在这里插入图片描述

然后大概长成这个样子:

在这里插入图片描述

然后保存, reboot 一下服务器

防止 Derp 被白嫖

进入服务器 /etc/systemd/system 路径下的

在这里插入图片描述

保存文件之后,重启一下 Derp

在这里插入图片描述

以上的操作命令合集

————局域网1设置部分tailscale up --netfilter-mode=off  --advertise-routes=局域网网段 --accept-routes————群晖设置部分sudo -iecho -e '#!/bin/sh -e \ninsmod /lib/modules/tun.ko' > /usr/local/etc/rc.d/tun.sh
chmod a+x /usr/local/etc/rc.d/tun.sh
/usr/local/etc/rc.d/tun.sh
ls /dev/net/tun参考ZeroTier群晖的安装
资料:https://docs.zerotier.com/devices/synologydocker run -d \--name=ts	\--restart=always	\-v /var/lib:/var/lib \-v /dev/net/tun:/dev/net/tun \--network=host	\--cap-add=NET_ADMIN	\--cap-add=NET_RAW	\--env TS_STATE_DIR=/etc/ts \--env TS_SOCKET=/var/run/tailscale/tailscaled.sock \--env TS_USERSPACE=false \--env TS_ROUTES=局域网网段  \--env TS_EXTRA_ARGS="--accept-routes --advertise-exit-node --reset" \--env TS_AUTHKEY=API密钥   \
tailscale/tailscaleiptables -I FORWARD -i eth0 -j ACCEPT
iptables -I FORWARD -o eth0 -j ACCEPT
iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
iptables -I FORWARD -i tailscale0 -j ACCEPT
iptables -I FORWARD -o tailscale0 -j ACCEPT
iptables -t nat -I POSTROUTING -o tailscale0 -j MASQUERADEsleep 1m————云服务器derp中转服务器搭建部分apt update && apt upgradeapt install -y wget git openssl curlwget https://go.dev/dl/go1.20.5.linux-amd64.tar.gzrm -rf /usr/local/go && tar -C /usr/local -xzf go1.20.5.linux-amd64.tar.gzexport PATH=$PATH:/usr/local/go/bin
go versionecho "export PATH=$PATH:/usr/local/go/bin" >> /etc/profile
source /etc/profilego env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,directgo install tailscale.com/cmd/Derp@maingo build -o /etc/derp/Derpls /etc/derpopenssl 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"cat > /etc/systemd/system/derp.service <<EOF
[Unit]
Description=TS Derp
After=network.target
Wants=network.target
[Service]
User=root
Restart=always
ExecStart=/etc/derp/Derp -hostname derp.myself.com -a :33445 -http-port 33446 -certmode manual -certdir /etc/derp
RestartPreventExitStatus=1
[Install]
WantedBy=multi-user.target
EOFsystemctl enable derp
systemctl start derp"derpMap": {"OmitDefaultRegions": true,"Regions": {"901": {"RegionID":   901,"RegionCode": "Myself","RegionName": "Myself Derp","Nodes": [{"Name":             "901a","RegionID":         901,"DERPPort":         33445,"IPv4":   "服务器IP","InsecureForTests": true,},],},},},"1":  null,"2":  null,"3":  null,"4":  null,"5":  null,"6":  null,"7":  null,"8":  null,"9":  null,"10": null,"11": null,"12": null,"13": null,"14": null,"15": null,"16": null,"17": null,"18": null,"19": null,"20": null,"21": null,"22": null,"23": null,"24": null,	"25": null,tailscale netchecktailscale statustailscale ping ping6 240C::6666tailscale down tailscale upcurl -fsSL https://tailscale.com/install.sh | shnano /etc/systemd/system/derp.service--verify-clientssystemctl daemon-reloadsystemctl restart derp————headscale搭建部分wget --output-document=headscale.deb \https://github.com/juanfont/headscale/releases/download/v0.22.3/headscale_0.22.3_linux_amd64.debsudo dpkg --install headscale.debsudo systemctl enable headscalenano /etc/headscale/config.yamlapt install -y nginxmap $http_upgrade $connection_upgrade {default      keep-alive;'websocket'  upgrade;''           close;
}
server {listen 3355;listen [::]:3355;server_name 云服务器IP;location / {proxy_pass http://127.0.0.1:8080;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection $connection_upgrade;proxy_set_header Host $server_name;proxy_buffering off;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;}location /web {index  index.html;alias  /var/www/web;}
}wget https://github.com/gurucomputing/headscale-ui/releases/download/2023.01.30-beta-1/headscale-ui.zipunzip -d /var/www headscale-ui.zipsystemctl start headscalesystemctl restart nginxheadscale apikeys create --expiration 9999dtailscale logout
tailscale up --login-server=http://云服务器IP:3355touch /var/www/derp.json{"Regions": {"901": {"RegionID":   901,"RegionCode": "Myself","RegionName": "Myself Derp","Nodes": [{"Name":             "901a","RegionID":         901,"DERPPort":         33445,"IPv4":   "IP地址","IPv6":    "IP地址","InsecureForTests": true}]}}
}server {listen 80;listen [::]:80;server_name 127.0.0.1;root /var/www;index index.html index.htm index.nginx-debian.html;location /d {alias   /var/www;autoindex on;}location / {try_files $uri $uri/ =404;}
}- http://127.0.0.1/d/derp.jsonsystemctl restart nginx
systemctl restart headscaletailscale logout
tailscale up --login-server=http://你的云服务器ip:端口————改善github下载速度慢的解决方案下面代码可以放到/etc/hosts文件的末尾,然后重启云服务器就可以20.205.243.166 github.com
159.24.3.173 gist.github.com
185.199.110.153 assets-cdn.github.com
185.199.110.153 raw.githubusercontent.com
185.199.110.153 gist.githubusercontent.com
185.199.110.153 cloud.githubusercontent.com
185.199.110.153 camo.githubusercontent.com
185.199.110.153 avatars0.githubusercontent.com
185.199.110.153 avatars1.githubusercontent.com
185.199.110.153 avatars2.githubusercontent.com
185.199.110.153 avatars3.githubusercontent.com
185.199.110.153 avatars4.githubusercontent.com
185.199.110.153 avatars5.githubusercontent.com
185.199.110.153 avatars6.githubusercontent.com
185.199.110.153 avatars7.githubusercontent.com
185.199.110.153 avatars8.githubusercontent.com不过需要注意,ip可能之后需要更新,可以去站长工具,ping后面的域名来获取。

自建 Headscale 添加 Derp

首先,nginx 需要配置一下

{"Regions": {"901": {"RegionID": 901,"RegionCode": "huawei","RegionName": "huawei Shanghai","Nodes": [{"Name": "901a","RegionID": 901,"DERPPort": 443,"HostName": "你的ip","IPv4": "你的ip","InsecureForTests": true}]}}
}

参考

  1. 官方自建 Derp
  2. 解决apt install 下载速度太慢
  3. Tailscale玩法之内网穿透、异地组网、全隧道模式、纯IP的双栈DERP搭建、Headscale协调服务器搭建,用一期搞定,看一看不亏吧?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/474026.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue实现展示并下载后端返回的图片流

// 点击下载 downLoadCode() {const image new Image();image.setAttribute("crossOrigin", "anonymous");image.onload () > {const canvas document.createElement("canvas");canvas.width image.width;canvas.height image.height;c…

Docker: ubuntu系统下Docker的安装

安装依赖 操作系统版本 Ubuntu Kinetic 22.10Ubuntu Jammy 24.04 (LTS)Ubuntu Jammy 22.04 (LTS)Ubuntu Focal 20.04 (LTS)Ubuntu Bionic 18.04 (LTS) CPU架构支持 ARMx86_64 查看我们的系统版本信息 uname -a通过该命令查得cpu架构是x86_64的&#xff1b; cat /etc/*re…

极速入门数模电路

一. 认识数模元器件 1.1 面包板 1.2 导线 一般使用红色导线表示正极&#xff0c;黑色导线表示负极。 1.3 纽扣电池 1.4 电池座 1.4 LED灯 1.5 数码管 1.6 有源蜂鸣器 1.7 扬声器 1.8 电容 电容接电池之后可以充电&#xff0c;充完电后电容接LED灯可以放电。 1.9 电阻 1.1…

如何合理设计一套springcloud+springboot项目中的各个微服务模块之间的继承关系的最优方案

文章目录 一、模块化设计所遵循的原则二、项目架构设计三、各个模块作用说明3.1 core 模块3.2 common 模块3.3 generatorcode模块3.4 business 模块3.5 web 模块3.6 admin 模块3.7 父pom 四、采用import引入SpringBoot 在springcloud微服务项目中经常用到多模块化的架构设计&am…

java版询价采购系统 招投标询价竞标投标系统 招投标公告系统源码

在信息化飞速发展的今天&#xff0c;电子招投标采购系统已成为企业运营中的重要一环。这一系统不仅优化了传统的招投标流程&#xff0c;还为企业带来了诸多显著的价值。 首先&#xff0c;电子招投标采购系统极大地提高了工作效率。传统招投标过程中&#xff0c;企业需要耗费大…

物联网——UNIX时间戳、BKP备份寄存器、RTC时钟

RTC时钟 Unix时间戳 UTC/GMT 时间戳转换 时间戳转换 BKP简介 RTC框图 RTC基本结构 硬件供电电路 RTC操作注意事项 接线图&#xff08;读写备份寄存器和实时时钟&#xff09;

系统思考—跳出症状看全局

在和企业创办人交流中&#xff0c;经常听到这样的疑问&#xff1a;“为什么我们试了这么多办法&#xff0c;问题却还是没有解决&#xff1f;”其实很多时候&#xff0c;根本原因并不在于对策不到位&#xff0c;而是连问题的本质都没找对。 曾经和一家企业合作&#xff0c;为了解…

RK3568平台开发系列讲解(platform虚拟总线驱动篇)实验:点亮一个LED

🚀返回专栏总目录 文章目录 一、设备树二、平台驱动三、应用沉淀、分享、成长,让自己和他人都能有所收获!😄 📢xxx 程序编写的主要内容为添加 LED 灯的设备树节点、在驱动程序中使用 of 函数获取设备节点中的属性,编写测试应用程序。 • 首先向设备树添加 LED 设备节点…

【售前方案】工业园区整体解决方案,智慧园区方案,智慧城市方案,智慧各类信息化方案(ppt原件)

基于云计算、物联网、移动通信计算的智慧园区集中运营管理平台是一个高度集成化、智能化的管理系统&#xff0c;它利用先进的技术手段对园区进行全方位的监控和管理。 软件资料清单列表部分文档清单&#xff1a;工作安排任务书&#xff0c;可行性分析报告&#xff0c;立项申请审…

Nacos 配置中心变更利器:自定义标签灰度

作者&#xff1a;柳遵飞 配置中心被广泛使用 配置中心是 Nacos 的核心功能之一&#xff0c;接入配置中心&#xff0c;可以实现不重启线上应用的情况下动态改变程序的运行期行为&#xff0c;在整个软件生命周期中&#xff0c;可以极大降低了软件构建及部署的成本&#xff0c;提…

两大新兴开发语言大比拼:Move PK Rust

了解 Move 和 Rust 的差异有助于开发者根据项目的具体需求选择最合适的语言。选择不恰当的语言可能会导致项目后期出现技术债务。不同语言有其独特的优势。了解 Move 和 Rust 的差异可以帮助开发者拓展技术视野&#xff0c;发现不同语言在不同领域的应用潜力。 咱们直奔主题&a…

【大语言模型】ACL2024论文-16 基于地图制图的罗马尼亚自然语言推理语料库的新型课程学习方法

【大语言模型】ACL2024论文-16 基于地图制图的罗马尼亚自然语言推理语料库的新型课程学习方法 目录 文章目录 【大语言模型】ACL2024论文-16 基于地图制图的罗马尼亚自然语言推理语料库的新型课程学习方法目录摘要&#xff1a;研究背景&#xff1a;问题与挑战&#xff1a;如何解…

面试题:Kafka(一)

1. Kafka如何保证消息不丢失 生产者发送消息到Brocker丢失 设置异步发送 消息重试 消息在Brocker中存储丢失 发送确认机制acks 消费者从Brocker接收消息丢失 Kafka 中的分区机制指的是将每个主题划分成多个分区&#xff08;Partition&#xff09;topic分区中消息只能由消费者…

基于多模板配准的心腔分割算法

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;编程探索专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年11月18日20点09分 神秘男子影, 秘而不宣藏。 泣意深不见, 男子自持重, 子夜独自沉。 论文链接 点击开启你的论文编程之旅…

ScubaGear:用于评估 Microsoft 365 配置是否存在安全漏洞的开源工具

ScubaGear 是由网络安全和基础设施安全局 (CISA) 创建的开源工具&#xff0c;用于自动评估 Microsoft 365 (M365) 配置中是否存在潜在的安全漏洞。 ScubaGear 分析组织的 M365 租户配置&#xff0c;提供可操作的见解和建议&#xff0c;以帮助管理员解决安全漏洞并加强 Microso…

PgSQL汇总

SQL sql执行顺序 1.from 2.on 3.join 4.where 5.group by(开始使用select中的别名&#xff0c;后面的语句中都可以使用) 6. avg,sum.. 7.having 8.select 9.distinct 10.order by 11.limit⭐流程控制语句 CASE 写法一&#xff1a; CASE case_valueWHEN when_value THENsta…

.NET 简介

文章目录 一、组件二、免费且开源三、支持四、.NET 生态系统 .NET 是一个免费的跨平台开放源代码开发人员平台&#xff0c;用于生成多种类型的应用程序。 .NET 可以运行使用多种语言编写的程序&#xff0c;其中 C# 是最常用的语言。 .NET 依赖于许多大规模应用在生产中使用的高…

Linux之vim模式下全选命令

在Linux系统中&#xff0c;使用Vim编辑器进行全选操作可以通过以下几种方式实现&#xff1a; 1.使用键盘快捷键 按下 ”ggVG”&#xff08;先按下”g”&#xff0c;再按下”g”&#xff0c;再按下”V”&#xff0c;最后按下”G”&#xff09;可以全选当前文件内容。其中 ”g…

【学习笔记】大模型调优(llms_tuning)

项目地址&#xff1a;GitHubchunhuizhang/llms_tuning 文章目录 01 TRL SFTTrainer 中的 formatting_func 与 DataCollatorForCompletion02 accelerate ddp 与 trl SFTTrainer03 finetune_llama3_for_RAG04 optimizer Trainer 优化细节&#xff08;AdamW&#xff0c;grad clip、…

剧本杀门店预约小程序,解锁沉浸式推理体验

一、开发背景 剧本杀作为一种热门娱乐游戏&#xff0c;深受大众的欢迎&#xff0c;但随着市场的快速发展&#xff0c;竞争也在不断加大&#xff0c;对于剧本杀线下商家来说面临着发展创新。 剧本杀线下门店数量目前正在逐渐增加&#xff0c;竞争激烈&#xff0c;而门店的获客…