当前位置: 首页 > news >正文

小米AX6000上安装tailscale

在之前的文章中,已经介绍了如何解锁ax6000的ssh,以及必坑指南。
今天突发奇想,为了不让我的nas天天开着tailscale,所以我想让我的tailscale运行在路由器,这样完美实现穿透。
首先,通过ssh登录ax6000,发现ax6000可用闪存奇小。很是无语。
在这里插入图片描述
如上图所示,最大的192MB是在tmpfs中,不是非易失存储。重新上电就会被擦除。

不过还是有办法的,继续看吧。

1.确认ax6000的linux架构

uname -a
Linux XiaoQiang 4.4.60 #0 SMP PREEMPT Mon Mar 22 06:59:08 2021 aarch64 GNU/Linux

aarch64

2.从tailscale官方下载

curl --cacert /etc/curlssl/cacert.pem -O https://pkgs.tailscale.com/stable/tailscale_1.80.3_arm.tgz

这里下载时,需要添加证书,cacert.pem需要从curl官网下载 。
然后通过scp导入到/etc/curlssl/

3.解压

tar -xzf tailscale_1.80.3_arm.tgz

4.第一次运行

cd tailscale_1.80.3_arm
./tailscaled
tailscale up --advertise-routes=192.168.0.0/24

执行后,会生成一个网站,复制打开,登录tailscale,然后连接,就可以添加成功了

===============================================
以上是手动开启的方法,tailscale_1.80.3_arm.tgz解压有50MB+,根本无法保存在ax6000闪存中。

  • 所以怎么办?

有了,我们可以每次开机后,执行shell脚本,然后进行下载到/tmp目录,然后解压重新启动。

  • 但是每次重启后,需要重新登录,怎么办?
    有了,我们可以把第一次手动登录后的缓存存起来,下次开机可以复用。

开整:

1.先将之前的tailscale缓存到/etc目录

cp /var/lib/tailscale /etc/tailscale/cache

2.编写脚本

vi /etc/tailscale/tailscale_install.sh
#!/bin/sh

# Define log file path
LOG_DIR="/tmp/tailscale"
LOG_FILE="$LOG_DIR/install_tailscale.log"

# Create log directory
mkdir -p "$LOG_DIR" || { echo "Failed to create log directory $LOG_DIR"; exit 1; }

# Clear log file (if it exists)
> "$LOG_FILE"

# Function: Print log and write to file
log() {
    echo "$1"
    echo "$1" >> "$LOG_FILE"
}

# Check if 8.8.8.8 is in /etc/resolv.conf, if not, append it
if ! grep -q "8.8.8.8" /etc/resolv.conf; then
    log "Adding Google DNS (8.8.8.8) to /etc/resolv.conf..."
    echo "nameserver 8.8.8.8" >> /etc/resolv.conf
    if [ $? -eq 0 ]; then
        log "Google DNS added successfully."
    else
        log "Failed to add Google DNS. Please check permissions."
        exit 1
    fi
else
    log "Google DNS (8.8.8.8) is already in /etc/resolv.conf."
fi

# Enter /tmp directory
cd /tmp || { log "Failed to enter /tmp directory"; exit 1; }

# Create tailscale directory
mkdir -p tailscale || { log "Failed to create tailscale directory"; exit 1; }
cd tailscale || { log "Failed to enter tailscale directory"; exit 1; }

# Download Tailscale package
MAX_RETRIES=3
RETRY_COUNT=0
DOWNLOAD_SUCCESS=false

while [ $RETRY_COUNT -lt $MAX_RETRIES ]; do
    log "Attempting to download Tailscale package (Attempt $((RETRY_COUNT + 1))..."
    curl --cacert /etc/curlssl/cacert.pem -O https://pkgs.tailscale.com/stable/tailscale_1.80.3_arm.tgz >> "$LOG_FILE" 2>&1
    if [ $? -eq 0 ]; then
        log "Download successful!"
        DOWNLOAD_SUCCESS=true
        break
    else
        log "Download failed, retrying..."
        RETRY_COUNT=$((RETRY_COUNT + 1))
    fi
done

if [ "$DOWNLOAD_SUCCESS" = false ]; then
    log "Download failed. Please check your network connection or the URL."
    exit 1
fi

# Check if the file exists
if [ ! -f tailscale_1.80.3_arm.tgz ]; then
    log "File tailscale_1.80.3_arm.tgz not found. Please check if the download was successful."
    exit 1
fi

# Extract the package
log "Extracting Tailscale package..."
tar -xzf tailscale_1.80.3_arm.tgz >> "$LOG_FILE" 2>&1 || { log "Extraction failed. Please check if the file is complete."; exit 1; }

# Recover cache
cp /etc/tailscale/cache /var/lib/tailscale -r
# Enter the extracted directory
cd tailscale_1.80.3_arm || { log "Failed to enter tailscale_1.80.3_arm directory"; exit 1; }

# Start Tailscale and set up routing
log "Starting Tailscale..."
/tmp/tailscale/tailscale_1.80.3_arm/tailscaled >> "$LOG_FILE" 2>&1 &
if [ $? -ne 0 ]; then
    log "Failed to start tailscaled. Please check permissions or dependencies."
    exit 1
fi

log "Setting up Tailscale routes..."
/tmp/tailscale/tailscale_1.80.3_arm/tailscale up --advertise-routes=192.168.0.0/24 >> "$LOG_FILE" 2>&1 &
if [ $? -ne 0 ]; then
    log "Failed to set up Tailscale routes. Please check the configuration."
    exit 1
fi

log "Tailscale installation and startup completed!"
log "Log saved to: $LOG_FILE"

注意/etc/resolve.conf中没有注释的8.8.8.8,如果被注释了,可能无法下载。

3.添加脚本到开机启动

vi /etc/rc.local
/etc/tailscale/tailscale_install.sh

重启试试?

相关文章:

  • 【机器学习】机器学习工程实战-第2章 项目开始前
  • Lineageos 22.1(Android 15)制定应用强制横屏
  • Redis Cluster 详解
  • 维普AIGC降重方法有哪些?
  • 查找重复代码[A卷-hw_od]
  • 冒排排序相关
  • dubbo版本与分组
  • 大模型-提示词链
  • 【前端工程化】
  • 【嵌入式学习2】C语言 - VScode环境搭建
  • UE AI 模型自动生成导入场景中
  • 安装过程中,如何防止丝杆推入支撑座时损坏油封?
  • 【算法工程】大模型开发之windows环境的各种安装
  • 2300年直线公理使数学一直存在尖锐自相矛盾
  • 【大模型】什么是循环神经网络(RNNs)
  • 政安晨【超级AI工作流】—— 使用Dify通过工作流对接ComfyUI实现多工作流协同
  • 一道积分_2
  • PostgreSQL:数据类型与运算符
  • JDBC 连接字连接 KingbaseES支持主从负载均衡参数说明。
  • 人是怎么变强的?
  • 国防部:“台独”武装摆练纯属搞心理安慰,怎么演都是溃败的死局
  • 生态环境部谈拿手持式仪器到海边测辐射:不能测量水中放射性核素含量
  • 秭归“橘颂”:屈原故里打造脐橙全产业链,创造12个亿元村,运输用上无人机
  • 研讨会|中国古代石刻与历史研究的多重图景
  • 王珊珊读《吾自绝伦》|摘掉皮普斯的“假发”
  • 神二十6个半小时到站