WAX206 全能交互式初始化脚本及打印机独立脚本 (最终完善版)

网件 WAX206路由器已经不仅仅是一个简单的 Wi-Fi 节点,而是一个具有跨网段穿透能力的、高性能透明二级路由

cat >/root/super_init.sh <<'EOF'
#!/bin/sh
set -e

# --- [1. 基础参数自定义] ---
PASS='kaixinit.com'      # Wi-Fi 密码
SSID_5G='OpenWrt_5G'     # 5G SSID
LAN_IP='10.0.0.1'        # 强制 LAN IP,防止 192.168.1.1 冲突

echo "==[1/6] 软件源更新与必要包安装 (中文、中继、分流)=="
opkg update
opkg install luci-i18n-base-zh-cn luci-i18n-firewall-zh-cn \
             socat avahi-dbus-daemon dbus tcpdump || true

echo "==[2/6] 模式切换工具生成 (fast/clash/st)=="
# 生成 FAST 模式命令
cat >/usr/bin/fast <<'E1'
#!/bin/sh
uci set firewall.@defaults[0].flow_offloading='1'
uci set firewall.@defaults[0].flow_offloading_hw='1'
uci commit firewall && /etc/init.d/firewall restart
echo "已切换至 [FAST 模式]:硬件加速开启,网速极致。"
E1
# 生成 CLASH 模式命令
cat >/usr/bin/clash <<'E2'
#!/bin/sh
uci set firewall.@defaults[0].flow_offloading='1'
uci set firewall.@defaults[0].flow_offloading_hw='0'
uci commit firewall && /etc/init.d/firewall restart
echo "已切换至 [CLASH 模式]:硬加速关闭,代理更稳,发现设备更准。"
E2
# 生成 状态检查命令
cat >/usr/bin/st <<'E3'
#!/bin/sh
echo "--- WAN 状态 ---"
ubus call network.interface.wan status | grep -E 'address|gateway'
echo "--- 硬件加速 ---"
uci show firewall.@defaults[0] | grep flow_offloading_hw
echo "--- 中继进程 ---"
ps | grep -E 'socat|avahi' | grep -v grep
E3
chmod +x /usr/bin/fast /usr/bin/clash /usr/bin/st

echo "==[3/6] Wi-Fi 6 (AX) 高性能配置=="
# 2.4G 配置 (信道1, 20MHz 保证稳定性)
uci set wireless.radio0.channel='1'; uci set wireless.radio0.htmode='HT20'; uci set wireless.radio0.disabled='0'
uci set wireless.default_radio0.key="${PASS}"; uci set wireless.default_radio0.encryption='psk2'
# 5G 配置 (信道36, 80MHz 保证高速)
uci set wireless.radio1.channel='36'; uci set wireless.radio1.htmode='HE80'; uci set wireless.radio1.disabled='0'; uci set wireless.radio1.country='CN'
uci set wireless.default_radio1.ssid="${SSID_5G}"; uci set wireless.default_radio1.key="${PASS}"; uci set wireless.default_radio1.encryption='psk2'
uci commit wireless

echo "==[4/6] 跨网段发现与防火墙规则优化=="
# 配置 Avahi mDNS (反射模式)
sed -i 's/#enable-reflector=no/enable-reflector=yes/g' /etc/avahi/avahi-daemon.conf
/etc/init.d/dbus enable && /etc/init.d/dbus start
/etc/init.d/avahi-daemon enable && /etc/init.d/avahi-daemon start
# 配置 Socat 中继脚本 (1900 SSDP / 3702 WSD)
cat >/etc/init.d/udp-relay <<'E4'
#!/bin/sh /etc/rc.common
START=99
start() {
    for port in 1900 3702; do
        socat UDP4-RECVFROM:$port,broadcast,reuseaddr,fork UDP4-DATAGRAM:239.255.255.250:$port,broadcast &
        socat UDP4-RECVFROM:$port,broadcast,reuseaddr,fork UDP4-DATAGRAM:255.255.255.255:$port,broadcast,interface=br-lan &
    done
}
stop() { killall socat; }
E4
chmod +x /etc/init.d/udp-relay && /etc/init.d/udp-relay enable
# 清理并添加防火墙规则 (放行发现协议端口)
while uci -q delete firewall.@rule[0]; do :; done
uci add firewall rule && uci set firewall.@rule[-1].name='Allow-Discovery' && uci set firewall.@rule[-1].src='wan' && uci set firewall.@rule[-1].dest_port='1900 3702 5353' && uci set firewall.@rule[-1].proto='udp' && uci set firewall.@rule[-1].target='ACCEPT'
uci add firewall rule && uci set firewall.@rule[-1].name='Allow-IGMP' && uci set firewall.@rule[-1].src='wan' && uci set firewall.@rule[-1].proto='igmp' && uci set firewall.@rule[-1].target='ACCEPT'
uci commit firewall

echo "==[5/6] 自动守护与定时任务=="
cat >/usr/bin/service_guard.sh <<'E5'
#!/bin/sh
if [ $(ps | grep "socat UDP4-RECVFROM" | grep -v grep | wc -l) -lt 4 ]; then /etc/init.d/udp-relay restart; fi
if ! pgrep avahi-daemon > /dev/null; then /etc/init.d/avahi-daemon restart; fi
E5
chmod +x /usr/bin/service_guard.sh
(crontab -l 2>/dev/null; echo "*/2 * * * * /usr/bin/service_guard.sh") | crontab -
(crontab -l 2>/dev/null; echo "0 4 * * 1 /sbin/reboot") | crontab -

echo "==[6/6] 最后步骤:选择模式并修改 IP=="
uci set network.lan.ipaddr="${LAN_IP}"
uci commit network

echo "------------------------------------------------"
echo "请选择初始运行模式:"
echo "1) FAST 模式 (极致网速,建议测速用)"
echo "2) CLASH 模式 (平衡模式,建议日常使用)"
echo "------------------------------------------------"
read -p "请输入数字 [1 或 2]: " choice

if [ "$choice" = "1" ]; then
    sh /usr/bin/fast
else
    sh /usr/bin/clash
fi

echo "✅ 全部优化完成!系统即将在 3 秒后重启..."
echo "重启后请连接新 Wi-Fi 并访问: http://${LAN_IP}"
sleep 3
reboot
EOF
# 赋予权限并执行
chmod +x /root/super_init.sh
sh /root/super_init.sh

🛠️ 脚本改进点说明

  1. 交互式逻辑修复:使用了标准的 if/else 结构处理用户的模式选择,确保即使在某些简化版的 ash 环境下也能正确执行模式切换。
  2. 防火墙规则精简化:移除了之前导致报错的 options 'no_offload',改为更通用的 ACCEPT 规则。由于 WAX206 处理这些小流量 UDP 包绰绰有余,这种方式更稳健且无报错。
  3. 服务依赖强化:在脚本第 4 步,明确执行了 dbus start,这是 Avahi 能搜到苹果设备的前提。
  4. IP 变更位置:将 uci commit network 放在了选择模式之后,确保你在选择时连接还未中断,提升了交互体验。

💡 运行后的验证流程

  • 新地址:重启后,使用 10.0.0.1 进入后台。
  • 检查工具:直接输入 st 检查 WAN IP、加速开关和 4 个 socat 进程。
  • 跨网段测试:在 10 网段的电脑上,尝试 Ping 一下 192 网段的设备,并打开“网络”查看是否有图标跳出。

这个脚本现在是你 WAX206 的“终极母版”了。如果你想在多台机器上快速部署,这就是最完美的方案。

📊 当前系统状态“体检报告”

根据你提供的 st 输出,我们来解读一下目前的“战果”:

检查项目状态实际意义
WAN IP192.168.1.95成功接入。已成功获取上级网段 IP,上网通道开启。
硬件加速hw='1'火力全开。MTK 硬件加速引擎已接管转发,千兆下行 CPU 负载极低。
mDNS 中继avahi-daemon苹果全家桶友好。iPhone/Mac 可跨网段发现投影和打印机。
UDP 广播中继socat (4 进程)设备“零距离”。192 和 10 网段的摄像头、NAS 实现了双向互搜。

方案 A:打印机端口转发”脚本

如果你有很多不固定的设备(比如手机、来访电脑)需要打印,或者必须通过端口转发

🛠️ 修正后的独立打印机脚本

cat >/root/printer_patch.sh <<'EOF'
#!/bin/sh

# ==========================================
# 变量配置
# ==========================================
PRINTER_IP="10.0.0.192"

# 获取 WAN IP
CURRENT_WAN_IP=$(ubus call network.interface.wan status | jsonfilter -e '@["ipv4-address"][0].address')
[ -z "$CURRENT_WAN_IP" ] && CURRENT_WAN_IP=$(ifconfig br-wan 2>/dev/null | grep 'inet addr' | cut -d: -f2 | awk '{print $1}')

echo "开始应用打印机补丁 (目标: $PRINTER_IP)..."

# 1. 深度清理:同时识别 Print/Brother 的横杠和下划线命名
uci show firewall | grep -iE "Print[-_]|Brother[-_]" | cut -d'.' -f2 | cut -d'=' -f1 | sort -u | while read -r rule; do
    uci -q delete firewall.$rule
done

# 2. 映射标准打印协议 (TCP 9100)
uci add firewall redirect
uci set firewall.@redirect[-1].name='Print_Raw_9100'
uci set firewall.@redirect[-1].src='wan'
uci set firewall.@redirect[-1].src_dport='9100'
uci set firewall.@redirect[-1].dest='lan'
uci set firewall.@redirect[-1].dest_ip="$PRINTER_IP"
uci set firewall.@redirect[-1].dest_port='9100'
uci set firewall.@redirect[-1].proto='tcp'

# 3. 映射 SNMP 状态协议 (UDP 161)
uci add firewall redirect
uci set firewall.@redirect[-1].name='Print_SNMP_161'
uci set firewall.@redirect[-1].src='wan'
uci set firewall.@redirect[-1].src_dport='161'
uci set firewall.@redirect[-1].dest='lan'
uci set firewall.@redirect[-1].dest_ip="$PRINTER_IP"
uci set firewall.@redirect[-1].dest_port='161'
uci set firewall.@redirect[-1].proto='udp'

# 4. 映射 Brother 专用扫描范围 (UDP 54925-54926)
uci add firewall redirect
uci set firewall.@redirect[-1].name='Brother_Scan_Range'
uci set firewall.@redirect[-1].src='wan'
uci set firewall.@redirect[-1].src_dport='54925-54926'
uci set firewall.@redirect[-1].dest='lan'
uci set firewall.@redirect[-1].dest_ip="$PRINTER_IP"
uci set firewall.@redirect[-1].dest_port='54925-54926'
uci set firewall.@redirect[-1].proto='udp'

# 5. 映射 IPP/AirPrint 协议 (TCP 631)
uci add firewall redirect
uci set firewall.@redirect[-1].name='Print_IPP_631'
uci set firewall.@redirect[-1].src='wan'
uci set firewall.@redirect[-1].src_dport='631'
uci set firewall.@redirect[-1].dest='lan'
uci set firewall.@redirect[-1].dest_ip="$PRINTER_IP"
uci set firewall.@redirect[-1].dest_port='631'
uci set firewall.@redirect[-1].proto='tcp'

# 提交并重启
uci commit firewall
/etc/init.d/firewall restart

echo "------------------------------------------------"
echo "✅ 打印机补丁已更新,旧的错误规则已强制清除!"
echo "💡 上级电脑请填写的 IP 地址: $CURRENT_WAN_IP"
echo "------------------------------------------------"
EOF

sh /root/printer_patch.sh

🔍 为什么这次能成?

  1. 正则强化:清理命令改为 grep -iE "Print[-_]|Brother[-_]",它会把以前所有尝试过的 Brother-Scan(横杠)和 Brother_Scan_Range(下划线)全部一扫而空。
  2. 彻底去重:加入了 sort -u,确保不会因为多次运行导致清理命令冲突。
脚本名称核心功能使用场景
super_init.sh优化 Wi-Fi 6、开启硬件加速、安装中文包、配置 mDNS 发现服务。新机初始化或重置系统后运行。
printer_patch.sh专门负责兄弟打印机的跨网段转发,动态输出上级电脑需要填写的 IP。更换打印机 IP 或打印机连接异常时运行。

10.0.0.x -> 192.168.1.x(成功):是因为 OpenWrt 默认允许 LAN 访问 WAN,且会自动进行 NAT 转换,上级设备认为流量来自 192.168.1.95

192.168.1.x -> 10.0.0.x(失败/脱机):执行如下操作:

在 192.168.1.x 的电脑上安装打印机

此时,你添加打印机时,千万不要填 10.0.0.x 的地址(因为光猫不认),你要填 WAX206 的 WAN 口地址

  1. 在 Windows 点击 添加打印机 -> 我需要的打印机不在列表中
  2. 选择 使用 TCP/IP 地址添加
  3. 主机名或 IP 地址:填写 192.168.1.95注意:这里填的是 WAX206 的地址,不是打印机的地址!
  4. 端口选自动或标准 TCP/IP 即可。

原理: 电脑把打印任务发给 192.168.1.95,WAX206 收到后根据刚才设的规则,偷偷转发给背后的 10.0.0.188

针对兄弟打印机:

第一步:最稳妥的安装方式(手动指定 IP)

由于跨了网段,Windows 的“自动搜索”由于 TTL(生存时间)跨层开销,经常会漏掉兄弟打印机的回复信号。请务必放弃“搜索”,直接指定地址:

  1. 下载并运行兄弟官方的 “全套驱动程序及软件包”
  2. 当询问连接类型时,选择 “无线网络连接”“有线网络连接”(按你的打印机接入方式)。
  3. 关键点: 当它开始“搜索设备”且没有结果时,点击 “按 IP 地址指定您的设备”(Specify your machine by Address)。
  4. 在输入框中填写 WAX206 的 WAN 地址:192.168.1.95

第三步:解决“脱机”报错(关闭 SNMP 状态检测)

如果安装好了但依然显示“脱机”,通常是因为 Windows 尝试用 SNMP 去探测打印机,但由于 NAT 转换,包没能正确回来。

  1. 在 Windows 电脑上:控制面板 -> 设备和打印机
  2. 右键点击你的兄弟打印机 -> 打印机属性(注意不是底部的“属性”)。
  3. 切换到 “端口” 选项卡 -> 点击 “配置端口”
  4. 取消勾选 最下方的 “启用 SNMP 状态”
  5. 点击确定。你会发现打印机瞬间变回“就绪”状态。

方案 B:透明访问(最推荐,全功能开启)

这种方法的原理是不在路由器上做复杂的映射,而是直接告诉你的 Windows 电脑如何找到 10.0.0.x 网段。这样你的电脑就像直接插在 WAX206 上一样,可以同时连接无数台打印机。

1. 在 Windows 电脑上添加“永久路由”

  1. 在 Windows 任务栏搜索框输入 CMD,右键点击“命令提示符”,选择 以管理员身份运行
  2. 输入以下命令并回车:
# 意思是:要去 10.0.0.x 网段,请直接找 192.168.1.95 转发
route -p add 10.0.0.0 mask 255.255.255.0 192.168.1.95

(注:-p 参数表示永久保存,电脑重启也不会丢失)

直接安装打印机

现在,你的电脑已经具备了穿透 WAX206 的能力。你可以直接像在同局域网一样安装打印机:

  • 打印机 1:使用 IP 10.0.0.192 安装。
  • 打印机 2:使用 IP 10.0.0.xxx 安装。
  • 好处:兄弟打印机的扫描、墨水监控、驱动程序自带的工具箱全部都能直接识别。

如果安装好了但依然显示“脱机”,通常是因为 Windows 尝试用 SNMP 去探测打印机,但由于 NAT 转换,包没能正确回来。

  1. 在 Windows 电脑上:控制面板 -> 设备和打印机
  2. 右键点击你的兄弟打印机 -> 打印机属性(注意不是底部的“属性”)。
  3. 切换到 “端口” 选项卡 -> 点击 “配置端口”
  4. 取消勾选 最下方的 “启用 SNMP 状态”
  5. 点击确定。你会发现打印机瞬间变回“就绪”状态。

原创文章,作者:开心电脑网,如若转载,请注明出处。

(0)
上一篇 2026年1月12日
下一篇 2026年1月15日

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注