#!/bin/bash # ================================================================= # 🐧 FNOS (标准 Linux) Tailscale 满血部署脚本 # 核心功能:官方源安装 + 内核转发 + Taildrop 大硬盘重定向 # ================================================================= # --- ⚠️ 用户配置区 (请根据实际情况修改) --- # 1. 你要宣告的内网网段 (比如 192.168.2.0/24) ADVERTISE_ROUTES="192.168.2.0/24" # 2. Taildrop 文件接收路径 (NAS 大硬盘路径) # 注意:FNOS 的路径通常包含中文和空格,一定要保留双引号! STORAGE_PATH="/vol1/1000/存储空间1/Tailscale File" # ================================================================= # 定义颜色 GREEN='\033[0;32m' YELLOW='\033[1;33m' RED='\033[0;31m' NC='\033[0m' echo -e "${YELLOW}>>> [1/4] 正在配置 Linux 内核转发...${NC}" # 开启 IP 转发 (标准 Linux 方式) # 使用 grep 检查防止重复写入 if ! grep -q "net.ipv4.ip_forward = 1" /etc/sysctl.conf; then echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.conf echo " - IPv4 转发已添加" fi if ! grep -q "net.ipv6.conf.all.forwarding = 1" /etc/sysctl.conf; then echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.conf echo " - IPv6 转发已添加" fi # 立即生效 sudo sysctl -p > /dev/null 2>&1 echo -e "${GREEN}✅ 内核转发配置完成${NC}" echo -e "${YELLOW}>>> [2/4] 调用官方脚本安装 Tailscale...${NC}" # 官方一键脚本 (自动处理 GPG、APT 源、Systemd) curl -fsSL https://tailscale.com/install.sh | sh if [ $? -ne 0 ]; then echo -e "${RED}❌ 安装失败,请检查网络连接!${NC}" exit 1 fi echo -e "${YELLOW}>>> [3/4] 配置 Taildrop 存储重定向 (核心步骤)...${NC}" echo " - 目标路径: ${STORAGE_PATH}" # 1. 自动创建大硬盘目录 (如果不存在) if [ ! -d "${STORAGE_PATH}" ]; then echo " - 目录不存在,正在创建..." mkdir -p "${STORAGE_PATH}" # 赋予权限,防止无法写入 (FNOS 可能会有权限问题,给 777 最稳) chmod 777 "${STORAGE_PATH}" fi # 2. 处理软链接 # 只有当 /var/lib/tailscale/files 不是软链接时,才执行替换 if [ ! -L "/var/lib/tailscale/files" ]; then echo " - 正在建立软链接..." # 停止服务以释放占用 sudo systemctl stop tailscaled 2>/dev/null # 删除默认的文件夹 (注意:这是删系统盘里的空文件夹,不是删你的数据) sudo rm -rf /var/lib/tailscale/files # 建立链接:让系统盘指向大硬盘 sudo ln -s "${STORAGE_PATH}" /var/lib/tailscale/files # 重启服务 sudo systemctl start tailscaled echo -e "${GREEN}✅ 重定向成功!文件将直接存入大硬盘。${NC}" else echo -e "${GREEN}✅ 检测到已经是软链接,跳过配置。${NC}" fi echo -e "${YELLOW}>>> [4/4] 启动并配置参数...${NC}" echo " - 宣告网段: ${ADVERTISE_ROUTES}" echo " - 开启 Exit Node (出口节点)" echo " - 开启 Accept Routes (接收路由)" # 开启自动更新 sudo tailscale set --auto-update=true # 启动命令 (如果未登录,这里会打印登录链接) sudo tailscale up \ --advertise-routes=${ADVERTISE_ROUTES} \ --advertise-exit-node \ --accept-routes \ --reset echo "" echo -e "${GREEN}🎉 FNOS Tailscale 部署完成!用 Tailscale 网内设备传送一个文件到此 NAS ,并在以下文件夹查看!${NC}" echo -e "📂 Taildrop 存储位置: ${YELLOW}${STORAGE_PATH}${NC}"