小米AX6000上安装tailscale
在之前的小米AX6000解锁ssh避坑笔记中,已经介绍了如何解锁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; thenlog "Adding Google DNS (8.8.8.8) to /etc/resolv.conf..."echo "nameserver 8.8.8.8" >> /etc/resolv.confif [ $? -eq 0 ]; thenlog "Google DNS added successfully."elselog "Failed to add Google DNS. Please check permissions."exit 1fi
elselog "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=falsewhile [ $RETRY_COUNT -lt $MAX_RETRIES ]; dolog "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>&1if [ $? -eq 0 ]; thenlog "Download successful!"DOWNLOAD_SUCCESS=truebreakelselog "Download failed, retrying..."RETRY_COUNT=$((RETRY_COUNT + 1))fi
doneif [ "$DOWNLOAD_SUCCESS" = false ]; thenlog "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 ]; thenlog "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 ]; thenlog "Failed to start tailscaled. Please check permissions or dependencies."exit 1
filog "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 ]; thenlog "Failed to set up Tailscale routes. Please check the configuration."exit 1
filog "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
重启试试?
添加tailscale monitor
在小米AX6000中添加tailscale monitor