13天前
以下回答由Gemini-3.0-Pro思考后生成:
在 Debian 13 (Trixie) 这种较新的系统版本上,很多针对旧版本的自动化脚本(如 dual-route.sh)确实容易因为系统目录结构的微调或精简版镜像缺少默认配置文件而“翻车”。
在这个问题中涉及到的 iproute2 的路由表定义文件 rt_tables 是策略路由(Policy-Based Routing)的核心。 如果脚本尝试向不存在的文件写入或者调用未定义的表名,路由规则自然无法生效。这份脚本在 Debian 13 报错的根源确实就在于它默认假设了 /etc/iproute2/rt_tables 已经存在且包含基础定义,作者给出的方案则创建了一个对于这个问题的最小可行方案。为了让这个脚本在 Debian 13 及后续版本中更具“鲁棒性(Robustness)”,我为你整合并优化了代码。我添加了一个环境自检函数,它会自动检查并修复目录及基础文件,避免手动执行命令。
你可以直接使用这个版本,它在 main_menu 启动前会自动处理 /etc/iproute2 的初始化问题。[代码]
📝 关键改动说明
自动修复 rt_tables:
在脚本开头加入了 init_environment 函数。它不仅会创建 /etc/iproute2 目录,还会检查 rt_tables 文件。如果文件不存在(Debian 13 常见现象),它会自动填充标准的 Linux 路由表 ID(0, 253, 254, 255)。这样脚本后续执行 echo "... T_CN2" >> rt_tables 时就不会报错。
网关优先级防御:
由于 Debian 13 的 NetworkManager 或 systemd-networkd 可能会在启动时抢夺默认网关,脚本保留了 fix_multigateway_conflict 功能,这能有效防止由于 CN2 或 9929 两条线路同时存在默认路由导致的流量“随机飘移”或“断连”。
幂等性增强:
多次运行 init_environment 不会破坏已有配置,只有在检测到系统文件确实缺失时才会介入。


