created by Dave on 23Jan.2025
阿里云,昨天刚充值,今天就断网。
在写这个文章时,什么也没做主机挂了。
环境:
出口节点(Exit Node)要求:
- Linux 系统 (阿里云 vpm.jp)
- 启用 IP 转发
- 配置正确的 NAT 规则
其它非出口节点要求:
- 能安装 Tailscale 的操作系统
- 在安装了 Tailscale 的系统中指定 “出口节点” 即可
默认系统有安装 curl 工具。
所需知识:路由
路由:在计算机网络中负责数据包转发的核心,它决定了数据从源地址到目标地址的传输路径。在 ISO/OSI 参考模型里的第三层:网络层,进行数据包转发。它是基于 IP 地址工作的,特点:
- 根据目标(目的地址)IP 决定转发路径
- 可以跨网段通信
- 有一个叫 “路由表” 的文件在内存中,系统凭 “路由表” 中设定的规则来转发数据包。
完整配置步骤:
一、安装 Tailscale
在 Debian/Ubuntu 系统上安装
1)添加 Tailscale 的 GPG 密钥
命令:
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/jammy.noarmor.gpg | sudo tee /usr/share/keyrings/tailscale-archive-keyring.gpg >/dev/null
解释:
1. curl -fsSL
执行下载:
- f: 失败时静默
- s: 静默模式
- S: 显示错误
- L: 跟随重定向
2. | sudo tee
通过管道,将输出传递并写入文件 /usr/share/keyrings/tailscale-archive-keyring.gpg
3. >/dev/null
输出不在终端显示
以上,可以参考官网:
https://pkgs.tailscale.com/stable/
2)添加 Tailscale 的软件源
命令:
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/jammy.tailscale-keyring.list | sudo tee /etc/apt/sources.list.d/tailscale.list
3) 更新软件包列表并安装
命令:
sudo apt-get update
sudo apt-get install tailscale
二、配置出口节点 (主机 jpn)
在阿里 vpm.jp上:
1) 基本设置
a. 启用 IP 转发,并让系统重新加载内核参数
命令:
echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
b. 验证 IP 转发状态
命令与正常返回:
root@jpn:~# cat /proc/sys/net/ipv4/ip_forward
1
2) 配置 NAT (路由)
要使用的工具是 iptables-persistent, 用于保存和恢复 iptables 规则,确保系统重启后防火墙规则不会丢失。
a. 安装 iptables-persistent
sudo apt install iptables-persistent
b. 清除现有规则
sudo iptables -t nat -F ts-postrouting
sudo iptables -t filter -F ts-forward
清空 NAT 表中的 ts-postrouting 链儿
清空 filter 表中的 ts-forward 链儿
c. 添加 NAT 规则
sudo iptables -t nat -A ts-postrouting -o eth0 -j MASQUERADE
从 tailscale 到外网的流量进行地址伪装
d. 添加转发规则
sudo iptables -t filter -A ts-forward -i tailscale0 -o eth0 -j ACCEPT
sudo iptables -t filter -A ts-forward -i eth0 -o tailscale0 -m state --state
允许从 tailscale 接口到外网接口的流量 (单向)
允许已建立连接的返回流量 (双向)
注: tailscale0 eth0 是主机网口
e. 保存 iptables 规则
sudo netfilter-persistent save
永久保存规则,重启后也会生效
3) 启用出口节点
sudo tailscale up
sudo tailscale up --advertise-exit-node
启用,配置为出口节点
三、配置客户端节点 (主机 ub3)
1)安装 Tailscale
同上述安装步骤
2)连接网络、查看网络状态
sudo tailscale up
tailscale status
3)使用出口节点
sudo tailscale up --exit-node=jpn --exit-node-allow-lan-access
我用的是主机名:jpn ,也可以用 IP 地址。
4) 校验连接
curl ifconfig.me
四、故障排查命令
1) 检查连接状态
tailscale status
2) 网络接口状态
ip a
3) 路由表查看命令
ip route show
4)NAT 规则查看命令 (在出口节点)
sudo iptables -t nat -L
5) 可能的问题
a. 连接失败:
- 检查防火墙设置
- 确认 IP 转发状态
- 验证 NAT 规则
b. 路由有关:
- 备份当前路由表:
ip route show > route_backup.txt
- 恢复默认路由:
sudo dhclient
c.
备份 iptables 规则
sudo iptables-save > iptables_backup.txt
6)软件更新
sudo apt update
sudo apt install tailscale
7)监控
a. 监控网络流量
sudo tcpdump -i tailscale0
b.查看连接日志
sudo journalctl -u tailscaled
五、网络优化(实践扩展)
1)使用子网路由
a. 配置 Tailscale 子网路由
在出口节点 jpn 上操作,比如 jpn 有连接到网段 192.168.0.0./24
sudo tailscale up --advertise-routes=192.168.19.0/24
解释:
在出口节点 jpn 上宣告它可以路由到 192.168.0.0/24 网段,允许其他 Tailscale 节点通过此节点访问该子网。
b. 接受来自出口节点通告的路由
sudo tailscale up --accept-routes
解释:
在客户端上接受来自出口节点通告的路由,使客户端可以通过出口节点访问其子网。默认客户端不会自动接受路由,需要启用
2)增强安全性
控制 Tailscale 的网络访问权限
sudo tailscale up --exit-node=jpn --exit-node-allow-lan-access=false
解释:
阻止通过出口节点访问本地网络。防止未授权访问 LAN。
这里会使用在 Tailscale 控制台配置的 ACL(访问控制列表),具体见官网。
六、日常维护建议(尤其是商业使用)
- 定期更新系统和 Tailscale
- 监控网络性能和连接状态
- 维护日志
- 定期备份配置
- 使用标签管理设备权限
总结:
之前发小文章有些凌乱,也可能是很久没有写作。这篇详细介绍 Tailscale 的安装配置、出口节点设置、安全和如何排查故障等内容。
按照文章的配置,可以构建安全、高效的私有网络,灵活的路由控制。
如果有网络环境的变化,建议定期检查配置、更新系统,并根据实际需求调整网络策略等。
最重要的是:安全性与可用性是同等重要的,在部署时要考虑两者之间的平衡。一个好的定期维护计划,平时的监控记录是网络稳定运行的关键。
之前写的有关文章:
< OS 有关 > 阿里云:轻量应用服务器 的使用 配置 tailscale 出口_warning: udp gro forwarding is suboptimally config-优快云博客
< OS 有关 > 阿里云:轻量应用服务器 的使用 安装 Tailscale 后DNS 出错, 修复并替换 apt 数据源_tailscale dns unavailable-优快云博客
<OS 有关>Ubuntu 24 安装 openssh-server, tailscale+ssh 慢增加-优快云博客
<QNAP 453D QTS-5.x> 日志记录:利用 tailscale app 让个人的设备在 internet 上,组成私有网络-优快云博客