2025年3月

比如:小米路由器的局域网网段是 192.168.31.0/255.255.255.0,下级路由:OpenWRT 的局域网网段是 192.168.168.0/255.255.255.0,而 OpenWRT 连接小米路由器的接口,及(相对于 OpenWRT 而言的)广域网接口,IP 地址是 192.168.31.254,正好就在小米路由器的局域网网段内。

  根据以上的信息,在小米路由器上,需要增加一条静态路由,目标是 192.168.168.0,掩码是 255.255.255.0 或者 /24,网关是 192.168.168.254。

通过路由器管理网页设定静态路由
  有了目的地网络、掩码和网关 IP 地址后,我们就可以来配置小米路由器了。我首先想到的是通过网页来配置,结果,我找遍了上网设置和高级设置,就是没有看到设置静态路由的地方。好吧,这种基础的功能在 TP-Link 几十元的路由器上都有提供。

通过命令设置静态路由
  小米的路由器提供了 SSH 服务,这样我们就可以通过命令行去添加静态路由。当然,SSH 服务默认是不开启的,需要在米家中开启。

  首先,我们通过 PuTTY 等 SSH 客户端软件连接到小米路由器,然后执行命令:route add -net 192.168.168.0/24 gw 192.168.31.254

让静态路由持续有效
  通过上面的方法配置静态路由,每次路由器重启后静态路由都会丢失,所以有人说通过 rc.local 让路由器开机时自动添加静态路由。rc.local 是一个脚本文件,系统启动时会执行该文件。小米 AX3000T 路由器比较特殊,每次修改完 /etc/rc.local 文件后,重启就会被恢复为默认值,所以修改这个文件没什么意义。这个文件也并未变成只读,背后的原因是 /etc 目录本身是一个内存文件系统。当路由器重启后,会从固件中读取放到内存盘的区域,所以修改 /etc 目录下的 rc.local 是没有意义的。

  实际上,小米路由器的固件是基于 OpenWRT 二次开发的,因此可以通过修改 OpenWRT 配置文件的方法来达到添加静态路由的目的。打开 /etc/config/network 文件,在 config interface ‘lan’ 配置块下方,及从 config interface ‘lan’ 开始,到下一个 config 之前的空航,添加如下配置:

=============== 从下一行开始 ===============

config route

option interface 'lan'
option netmask '255.255.255.0'
option gateway '192.168.31.254'
option target '192.168.168.0'

=============== 到上一行结束 ===============

修改并保存 network 后,在终端中重新启动小米路由器,看看能不能访问 OpenWRT 的局域网地址,例如 192.168.168.1。也可以进入小米路由器的 Shell,执行 route 命令来检查添加的静态路由是否存在。

后续步骤
  可以在 OpenWRT 等软路由的防火墙中,关闭 WAN 接口的“IP 动态伪装”和“MSS 钳制”,前者就是地址转换,而后者是自动匹配 MTU,局域网中没有必要启用这两者。为了 OpenWRT 的安全,不建议将 WAN 的“入栈数据”设为“允许”

来源:https://armstrong.viyf.org/articles/2025/03/set-static-route-in-xiaomi-router.shtml

debian/ubuntu系列

安装fail2ban

apt update && apt install fail2ban rsyslog -y

配置 your-key改为你的abuseipdb apikey

nano /etc/fail2ban/jail.local

[DEFAULT]
# 定义默认的 ban 和 unban 时间
bantime = 3600   # 1小时
findtime = 300   # 5分钟
maxretry = 2
ignoreip = 127.0.0.1/8 192.168.0.0/16 172.16.0.0/12 10.0.0.0/8 169.254.0.0/16 ::1

action = iptables-multiport[name="%(banaction)s", port="%(port)s", protocol="tcp"]
         abuseipdb[abuseipdb_apikey="your-key", abuseipdb_category="18,21,22"]

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = %(sshd_log)s
backend = %(sshd_backend)s
maxretry = 2
findtime = 3600
bantime = 604800 #如果之前有默认配置
mv /etc/fail2ban/jail.conf /etc/fail2ban/jail.conf.bak

重启fail2ban配置 如果没有错误就没问题

systemctl restart sshd
systemctl restart fail2ban
fail2ban-client reload
提示 fail2ban版本要大于0.10 fail2ban-client -V 查看版本

官方默认配置最新版

wget -O /etc/fail2ban/action.d/abuseipdb.conf https://github.com/fail2ban/fail2ban/raw/refs/heads/master/config/action.d/abuseipdb.conf
官方配置示例

https://www.abuseipdb.com/fail2ban.html

查看ssh日志是否存在

ls -l /var/log/auth.log
查看状态

systemctl status fail2ban
fail2ban-client status sshd
一键版本

curl -sSL https://gist.github.com/ylx2016/6407d74c4b7ac08548941eac7dffcdb9/raw/90608cd1d6c02aa401f072278d80408c7b67bd1a/fail2ban.sh | bash -s "apikey"