创作不易,欢迎请作者喝杯咖啡☕☕☕
1. 前言
我们这期分享一下tailscale具体的玩法,本文内容细节会非常多,不仅包括了一些简单的玩法和技巧,也包括Tailscale异地组网的玩法,还有docker版的Tailscale玩法以纯IP双战中转服务器的搭建和headscale搭建的玩法等等内容相对来说已经很全了
2. Tailsclae安装方法
安卓,ios,windows,mac都有图形界面,我就不介绍了,大家自行在tailscale官网上下载安装客户端
2.1 openwrt安装
openwrt安装我用的是这个openwrt-tailscale-enabler这个项目,这里感谢作者分享
首先进入项目的releases页面中,复制项目下载地址
在openwrt中使用wget工具下载程序文件
使用ssh工具连接openwrt,然后复制这段代码下载程序文件
wget https://github.com/adyanth/openwrt-tailscale-enabler/releases/download/v1.36.1-fb2f6cf-autoupdate/openwrt-tailscale-enabler-v1.36.1-fb2f6cf-autoupdate.tgz
将 root 的内容提取到文件系统根目录
tar x -zvC / -f openwrt-tailscale-enabler-<tag>.tgz
安装 wget 和 tailscale 的先决条件
opkg update
opkg install libustream-openssl ca-bundle kmod-tun
第一次运行tailscale
/etc/init.d/tailscale start
tailscale up --accept-dns=false --advertise-routes=局域网网段/24
这两个命令都会下载 tailscale 包以将二进制文件保存到 /tmp。/etc/init.d/tailscale 将启动 tailscale 守护进程。下一个命令使用 tailscale CLI 配置登录并添加一些设置以防止 dns 更改和通告路由。使用打印的 URL 登录 tailscale。
此时会显示一条网址,复制到浏览器中打开,授权登录后就添加完成设备了
tailscale开启开机自启
/etc/init.d/tailscale enable
验证是否运行
ls /etc/rc.d/S*tailscale*
进入tailscale管理后台设置
默认情况下是有密钥过期的,一段时间之后你需要重新登录再进行授权,如何避免这个情况呢,很简单点击这个选项,这个就是进入密钥过期时间的选项
这样这个节点密钥就不会失效
进入openwrt后台创建接口及防火墙
这时候呢,外面的节点就可以跟局域网的设备进行互访了
补充:如果以上设置完还是不能异地访问,可以用一下命令打开ip转发
# 设置IP转发
cat >> /etc/sysctl.conf <<EOF
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
EOF
# 配置生效
sysctl -p /etc/sysctl.conf
2.2 群晖docker安装
获取sodu权限
sudo -i
输入密码
然后输入这两行代码
echo -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
然后复制这段代码
docker 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=局域网网段 \ #这里网段填写NAS局域网网段
--env TS_EXTRA_ARGS="--accept-routes --advertise-exit-node --reset" \ #--advertise-exit-node 如果你不希望NAS作为全隧道模式的出口
节点的话可以删掉,这里只是备用
--env TS_AUTHKEY=API密钥 \ Tailscale网络授权密钥
tailscale/tailscale
密钥如何获得呢
登录tailscale管理后台,操作如图
等待docker安装完成,输入这行命令查看ip情况
ip addr
看到这个接口,还有虚拟ip,这就说明成功授权了
然后和之前一样,登录tailscale管理后台把nas设备的子网打开,别忘了关闭密钥过期。
这时候你的NAS设备可以和其他设备互访了。
下面我要做的是NAS局域网内的设备和其他局域网内的设备互访,
命令行直接执行这行代码
iptables -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 MASQUERADE
3. DERP中转服务器部署
这里中转服务器的玩法还比较特别,因为中转服务器官方的方法是需要一个域名的,而在国内搭建域名是需要备案的,但是我没有备案的域名,所以这期我直接给大家分享一下不需要域名,纯IP的中转服务器的玩法。
3.1 操作环境
- 服务器:我搭建用的是腾讯轻量应用服务器 (最好是选 非大陆(香港)的服务器)如果是小白刚开始玩的话,还可以购买 Racknerd 的服务器(地区选美西),最低一年不到 100 块
- 系统:Debian 10 或以上。 DD 脚本 非必需 DD,用原来的系统也 OK,之后教程都是用 Debian 或者 Ubuntu 搭建~)
- 需要一个域名(域名购买参考:Namesilo 域名购买 )
- Docker 环境(具体看这篇:【Docker 系列】不用宝塔面板,小白一样可以玩转 VPS 服务器!)
3.2 操作步骤
远程登录云服务器 输入这行命令更新软件包
apt update && apt upgrade
安装需要的工具
apt install -y wget git openssl curl
下面我们需要安装一下go,输入这行命令(go的最新下载地址https://go.dev/dl/)
wget https://go.dev/dl/go1.21.2.linux-amd64.tar.gz
运行这行命令解压刚才下载的go
rm -rf /usr/local/go && tar -C /usr/local -xzf go1.21.2.linux-amd64.tar.gz
然后输入这两行命令
export PATH=$PATH:/usr/local/go/bin
go version
出现这行命令说明安装成功了
下面输入这两行命令,把go添加到环境变量当中方便之后使用
echo "export PATH=$PATH:/usr/local/go/bin" >> /etc/profile
source /etc/profile
下面我们再输入这两行命令,让go可以使用国内的代理源,提高go所需工具的下载速度,(我使用的国外的服务器,所以不需要了)
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
然后输入这行命令,开始拉取并编译Dope中转服务器
go install tailscale.com/cmd/derper@main
然后进入这个目录下面,编辑go文件
cd ~/go/pkg/mod/tailscale.com@v1.1.1-0.20231007034813-6f36f8842c3e/cmd/derper
打开cert.go文件,把这3行注释掉,并保存
输入这行命令,对derp进行编译,并输出到指定目录下
go build -o /etc/derp/derper
编译完成后cd到根目录
cd
输入这行命令,查看是否有derper文件
ls /etc/derp
下面我们自签一个域名启用derper
输入这行命令,这里说明一下derp.myself.com
这个域名是瞎编的,你自己也可以编一个,或者直接用我的。域名本身不会出现在网络上,只是用来启用derper的运行。
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"
下面我们把derper变成服务并启用derper,输入这部分代码
这里说明一下33445
是https协议用端口,33446
是HTTP协议用端口,这个端口主要是为了防止可能的端口冲突,没有实际的用途manual
然后这个参数的意思是证书采取手动指定的方式,后面这个目录就是证书的目录
顺便提一下,大家需要把云服务器的33445端口和3478端口打开
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
输入这行命令开启derp服务开机自启动并运行
systemctl enable derp
systemctl start derp
这时候浏览器输入云服务器的IP+33445端口,注意是HTTPS协议的会显示不安全,点击高级继续就可以,这样就能看到中转服务器在运行
然后再登录tailscale管理后台,进入ACL界面,添加我这段代码,注意:代码位置必须严格按照我截图中的位置,save保存
"derpMap": {
"OmitDefaultRegions": true,
"Regions": {
"901": {
"RegionID": 901,
"RegionCode": "Myself",
"RegionName": "Myself Derper",
"Nodes": [
{
"Name": "901a",
"RegionID": 901,
"DERPPort": 33445,
"IPv4": "服务器IP",
"InsecureForTests": true,
},
],
},
},
},
这时候我们去到一个Tailscale的Linux系统,客户端输入这行命令
tailscale netcheck
然后还需要输入这行命令,查看一下中转服务器是不是正常的状态
tailscale status
没有报错就是正常的情况。如果出现这样的信息,说明还是有问题的你需要找一下之前是不是哪一个步骤弄错了
这样,IPV4状态下的中转服务器就完成了。但这种情况下,支持公网IPV6的节点是没有办法进行直连的,因为目前他没有IPV6的中转服务器
下面我们要解决的是中转服务器对于IPV6中转的支持其实有两种办法
3.3 IPV6支持
3.3.1 方法一 利用官方IPV6中转服务器
ACL中代码修改
"derpMap": {
//"OmitDefaultRegions": true,
"Regions": {
"901": {
"RegionID": 901,
"RegionCode": "Myself",
"RegionName": "Myself Derper",
"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,
},
},
3.3.1 方法二 自己云服务器开启ipv6
现在一些云服务器商没有开启这个服务,但是我们可以借助he隧道来实现
让云服务器也有公网IPV6的目标
我们需要打开这个网址https://www.tunnelbroker.net/
这里需要自己注册一下我就不演示了
注册完之后登录进去
点击这里创建隧道,这里需要填你云服务器的公网IP,复制备用
云服务器输入这行代码,查看私网ip
ip addr
修改云服务器配置文件,帮刚才的代码复制进去
nano /etc/network/interfaces
按ctrl+x ,y,回车 保存
reboot重启云服务器,连接云服务
查看ipv6地址
ip addr
输入这行命令,查看ipv6是否可用
ping6 240C::6666
然后再ACL这里添加你云服务器的IPV6地址
暂无评论内容