easytier在华硕路由器AX86u Pro上的安装避坑教程

easytier在华硕路由器AX86u Pro上的安装避坑教程

前言

  1. easytier是一款神奇的组网软件,可实现点对点、点对网、网对网的互联互通。项目地址:https://github.com/EasyTier/EasyTier。不需要公网地址,就能访问内网所有服务。比如,在家中路由器运行easytier,手机或笔记本上也运行easytier,配置好,手机和笔记本就能在外也能访问家中服务了。
  2. 本文适合的对象:对easytier已有一定了解,恰好又有一个华硕路由器。

准备工作

  1. 华硕路由器1台,这里用的是AX86u Pro。
  2. 对应的梅林固件(https://fw.koolcenter.com/)。。)
  3. U盘1个,2G以上即可,必须靠谱。
  4. 一台windows电脑、diskgeniusMobaXterm

开始

  1. 将路由器固件升级为梅林固件:路由器管理页面(默认为192.168.50.1)→系统管理→固件升级→手动固件更新,点击上传,选中对应的梅林固件。等待刷新完毕。
  2. 开启路由器SSH登录:路由器管理页面→系统管理→系统设置→启用SSH,选择LAN only,端口22,其它默认,应用本页面设置。
  3. 在电脑上用diskgenius将U盘格式化成EXT4格式后插入路由器。
  4. 路由器管理页面→软件中心→全部软件,安装USB2JFFS和Entware。
  5. 打开USB2JFFS,挂载。打开Entware,安装。
  6. 路由器管理页面→USB相关应用→服务器中心→网络共享(Samba)/云端硬盘,启用启用网上邻居共享为ON,允许访客登入为ON,测试一下,资源管理器里输入\192.168.50.1,看看能不能看到挂在的U盘,一般可以看到sda1。这个sda1实际是/tmp/mnt/sda1,
  7. 在sda1下创建文件夹temp,你既可以用MobaXterm来创建,也可以在windows资源管理器中创建。
  8. 查看架构:uname -m,AX86u Pro是aarch64,去easytier(https://github.com/EasyTier/EasyTier/releases/tag/v2.2.4)下载easytier-linux-aarch64-v2.2.4.zip,解压到temp下。目录绝对路径为"/tmp/mnt/sda1/temp/easytier-linux-aarch64/easytier-core"。
  9. 去(https://easytier.cn/web/index.html#/config_generator)生成easytier的配置文件保存成test.toml,确保代理本地子网192.168.50.0/24,放入/tmp/mnt/sda1/temp/easytier-linux-aarch64/下。
  10. 用MobaXterm进入/tmp/mnt/sda1/temp/easytier-linux-aarch64/
    ./easytier-core -c ./test.toml
    确保能正常运行。

重点

  1. 开机启动:创建"/tmp/mnt/sda1/entware/etc/init.d/S99easytier.sh"
#!/bin/sh

# 脚本基础配置
NAME="easytier"
ENABLED=yes
PROG="/tmp/mnt/sda1/temp/easytier-linux-aarch64/easytier-core"
CONFIG="/tmp/mnt/sda1/temp/easytier-linux-aarch64/test.toml"
LOGFILE="/tmp/mnt/sda1/temp/easytier-linux-aarch64/easytier.log"
PIDFILE="/var/run/easytier.pid"

# 依赖环境(等待USB挂载完成)
START_WAIT=5

start() {
  # 加载 tun 模块
  if ! lsmod | grep -q tun; then
    insmod /lib/modules/$(uname -r)/kernel/drivers/net/tun.ko
    echo "[$(date)] tun已加载" >> /tmp/mnt/sda1/temp/S99easytier.log
  fi
  
  if [ -z "$ENABLED" ] || [ "$ENABLED" != "yes" ]; then
    echo "$NAME is disabled. Check script configuration."
    exit 1
  fi

  if [ -f "$PIDFILE" ] && ps | grep -q "$(cat $PIDFILE)"; then
    echo "$NAME is already running."
    exit 0
  fi

  echo "Starting $NAME..."
  sleep $START_WAIT  # 等待USB设备挂载完成
  $PROG -c $CONFIG >> $LOGFILE 2>&1 &
  PID=$!
  echo $PID > $PIDFILE
  echo "Started $NAME with PID $PID"
}

stop() {
  if [ -f "$PIDFILE" ]; then
    PID=$(cat $PIDFILE)
    kill $PID
    rm -f $PIDFILE
    echo "Stopped $NAME (PID $PID)"
  else
    echo "$NAME is not running."
  fi
}

restart() {
  stop
  sleep 2
  start
}

case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  restart)
    restart
    ;;
  *)
    echo "Usage: $0 {start|stop|restart}"
    exit 1
    ;;
esac

# 添加防火墙规则
iptables -I INPUT -i tun+ -j ACCEPT && echo "[$(date)] 防火墙规则1已添加" >> /tmp/mnt/sda1/temp/S99easytier.log
iptables -I FORWARD -i tun+ -j ACCEPT && echo "[$(date)] 防火墙规则2已添加" >> /tmp/mnt/sda1/temp/S99easytier.log
iptables -I FORWARD -o tun+ -j ACCEPT && echo "[$(date)] 防火墙规则3已添加" >> /tmp/mnt/sda1/temp/S99easytier.log

exit 0

梅林固件会开机启动S99easytier.sh,这段启动脚本主要是(1)加载tun,因为梅林固件默认没有加载。(2)启动easytier。(3)打开防火墙,添加3条规则,接受所有接口为tun0的流量,否则代理本地子网会阻塞。这里用了tun+,生怕启动了多个easytier进程。
12. 本来到这儿就结束了,实际有个坑。就是在路由器管理页面中随意找个页面保存,防火墙会重启,然后把3条防火墙规则丢了。解决方法接着看。
13. 创建"/tmp/mnt/sda1/.koolshare_jffs/scripts/firewall-start"

#!/bin/sh

# 记录脚本执行时间
echo "[$(date)] firewall-start triggered" >> /tmp/mnt/sda1/temp/firewall.log

# 添加防火墙规则
iptables -I INPUT -i tun+ -j ACCEPT && echo "INPUT rule added" >> /tmp/mnt/sda1/temp/firewall.log
iptables -I FORWARD -i tun+ -j ACCEPT && echo "FORWARD-in rule added" >> /tmp/mnt/sda1/temp/firewall.log
iptables -I FORWARD -o tun+ -j ACCEPT && echo "FORWARD-out rule added" >> /tmp/mnt/sda1/temp/firewall.log

当防火墙重启时,添加这3条规则。
15. 特别提示:
(1)这里sda1因人而异,一般是sda1,也可能是你自己起的一个u盘名字,那么上面代码中把sda1换一下就ok了。
(2)路由器重启后,可以用ps | grep easytier,查看是否有easytier进程,通常会有。
(3)如果发现没有easytier进程,请尝试第二种方法:把S99easytier.sh去掉后缀(.sh),再执行一下/opt/etc/init.d/S99easytier enable(别怀疑路径,其实是同一个路径),重启后查看是否有easytier进程。
祝大家玩的愉快!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值