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

FreshTomato 路由器固件常见配置以及踩坑记录

本文首发于只抄博客,欢迎点击原文链接了解更多内容。

前言

在上一篇文章《网件 R6400 梅林固件恢复官方固件后刷入 FreshTomato》中,我将网件 R6400 刷入了 FreshTomato 固件,目前已经使用了大半个月了,稳定性比起 380.70_0-X7.9.1 版本的梅林固件要好很多,没有再出现过掉线断网了,基础功能上也比官方固件要丰富。

不过关于 FreshTomato 固件的配置,还是有一些坑的,在配置完成之后,功能上可以比肩梅林,稳定性上比肩官方固件。下面先来复习一下上一次已经提过的访问光猫和跑不满带宽的问题。

访问光猫

PPPoE 拨号勾选 Use DHCP,同时不要关闭光猫的 DHCP,这样可以直接访问光猫的后台,需要配置光猫的时候比较方便。

PPPoE

硬件加速

由于 FreshTomato 有 QoS 和限速功能并且默认开启,而这两个功能和硬件加速会冲突,导致千兆路由器只能跑 300M 出头,如果你是 500M 及以上的宽带,建议将 QoS 和 限速功能关闭,这样才能跑满带宽。

硬件加速

IPv6

FreshTomato 关于 IPv6 的设置比较分散,首先要在 Basic -> IPv6 中选择对应的 IPv6 Service Type,一般路由器拨号的选择 DHCPv6 with Prefix Delegation

IPv6

然后点击页面下方的 Notes 中的 DHCP/DNS 超链接跳转到 Advanced -> DHCP/DNS/TFTP,由于安卓不支持有状态 IPv6,个人习惯是只勾选 SLAAC,同时勾选 Fast RA mode,当 IPv6 前缀变动时,可以及时的获取到新的公网 IPv6 地址

SLAAC 和 Fast RA mode

但是关于 IPv6 前缀变动,FreshTomato 貌似有个小 bug ?

正常情况下在首页通过 Disconnect 和 Connect 重新拨号,造成 IPv6 前缀变动后,会自动清理旧的前缀,局域网设备能够正确获取到新的公网 IPv6,并且旧的 IPv6 地址也被设置成 0s 了,到此为止一切正常。

如果直接在 Basic -> Network 中修改配置并保存等意外情况下导致 IPv6 前缀变动后,FreshTomato 并不会清理旧的前缀,局域网的设备会同时拥有旧的 IPv6 地址和新的 IPv6 地址,而此时旧地址已经无法使用会造成 IPv6 断网。

通过 SSH 连接到路由器,查看 /etc/dnsmasq.conf 文件可以看到默认租期是 172800s,也就是说只有当 2 天后旧的 IPv6 地址过期,才能够正常使用 IPv6 上网。

ra-param=br*, mtu:1492, 15, 600
dhcp-range=::, constructor:br*, ra-names, ra-stateless, 64, 172800s

局域网内的 Linux 设备可以通过以下命令强制清除所有 IPv6 地址并重新获取新的地址来恢复 IPv6

ip -6 addr flush dev eth0 && systemctl restart NetworkManager

有没有什么更好的解决方法呢?在刚才的设置页面继续往下翻,可以看到 Custom configuration,我们可以通过这里的设置覆盖掉 FreshTomato 默认的设置。租期最低可以填 120s,我这里参考原来梅林的习惯填写的 600s。这样即便发生意外导致旧地址没被清理,最长 10 分钟就可以恢复。不知道有没有更完美的解决方案,欢迎评论区分享一下。

直接修改 /etc/dnsmasq.conf 文件是不生效的

ra-param=br*, mtu:1492, 15, 600
dhcp-range=::, constructor:br*, ra-names, ra-stateless, 64, 600s

Dnsmasq

IPv6 防火墙

IPv6 防火墙的设置和梅林的写法类似,可以直接参考《梅林、Padavan 和 OpenWrt 设置 IPv6 防火墙并开放指定端口》中梅林的写法,在 Port Forwarding -> Basic IPv6 中放行需要的目标地址及端口

IPv6 防火墙

LED 灯

用过梅林的应该都知道,网件 R 系列几款路由器刷完梅林后长按 WPS 键,可以把所有的 LED 指示灯关闭,而 FreshTomato 默认是没有这功能的,并且在后台界面中也不能设置关闭所有 LED 指示灯。

但在设置界面的 Notes 中得知,LED 灯可以直接通过命令进行控制,而 FreshTomato 又提供了长按 WPS 键执行自定义脚本的功能,我们可以通过自定义脚本的形式来控制 LED 灯的开关。

Other hints - LED function and blink support is router dependent. Check command led [LED_NAME/help] [on/off] for advanced LED control, see Web Shell.

首先在 Administration -> Scripts 的 Init 中填写以下命令,通过 ledstatus.txt 文件来记录下当前 LED 灯状态

touch /tmp/ledstatus.txt
echo "on" > /tmp/ledstatus.txt

Init Scripts

然后来到 Administration -> Buttons/LED 中,将下面的命令填写到 Custom Script 中,并且在上面选择 Run Custom Script

read -r LEDS <  /tmp/ledstatus.txt
if [ "$LEDS" = "off" ]
then
  # 开灯:
  led wlan on
  led 5g on
  # led aoss on
  led bridge on
  echo "on" > /tmp/ledstatus.txt

else
  # 关灯:
  # 无线
  led wlan off
  led 5g off
  led aoss off
  # 电源
  led diag off
  # WPS
  led dmz off
  # 网络
  led bridge off
  echo "off" > /tmp/ledstatus.txt
fi

Buttons/LED

这样设置之后,默认开机 LED 灯会正常亮起,长按 WPS 键后会关闭 LED 灯,再次长按则又亮起,具体需要开关哪些灯可以根据注释修改。如果你需要定时开关 LED 灯,也可以将上面的命令修改之后,填到 Scheduler 中定时执行。


http://www.kler.cn/a/465919.html

相关文章:

  • numpy数组学习
  • 【蓝桥杯研究生组】第14届Java试题答案整理
  • 【C++】矩阵转置问题详解与优化
  • 联邦学习中LLM分割的主流方法
  • Elasticsearch Serverless中的数据流自动分片深度解析
  • 【2025最新计算机毕业设计】基于Spring Boot+Vue影院购票系统(高质量源码,提供文档,免费部署到本地)
  • PyQt5:自定义QListView显示
  • 高质量C++小白教程:2.10-预处理器简介
  • GIT 企业级开发学习 1
  • Emacs折腾日记(七)——布尔变量、逻辑运算符与位运算
  • token、cookie和session
  • 【AIGC】 ChatGPT实战教程:如何高效撰写学术论文引言
  • MR30分布式IO模块助力PLC,打造高效智能仓储系统
  • [redux] useDispatch的两种用法
  • OCR图片中文字识别(Tess4j)
  • Lua开发环境如何安装?保姆级教程
  • 大数据-268 实时数仓 - ODS层 将 Kafka 中的维度表写入 DIM
  • Java编程规约:集合处理
  • 线性变换在机器学习中的应用实例
  • 深入AIGC领域:ChatGPT开发者获取OpenAI API Key的实用指南
  • 公司一个bug引出的对象判空、空指针异常话题之NUll、isEmpty()和“”区别
  • 【华为OD-E卷 - Linux发行版的数量 100分(python、java、c++、js、c)】
  • 【开源免费】基于SpringBoot+Vue.JS保密信息学科平台(JAVA毕业设计)
  • 电脑文件msvcp110.d丢失的解决方法
  • Transformer算法实现IMDB文本分类任务和WMT14机器翻译任务
  • 数据库进阶教程之存储过程(万字详解)