分类 默认分类 下的文章

比如:小米路由器的局域网网段是 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"

编辑 /etc/sysctl.conf 文件并添加

net.ipv4.ip_forward = 1
安装nftables

apt install -y nftables
编辑nftables配置文件
vim /etc/nftables.conf

创建一个名为 "foward2jp" 的表,用于转发流量

table ip foward2jp {

    # 在 prerouting 链中配置 DNAT(目的地址转换)
    chain prerouting {
        # 设置该链的类型为 NAT(网络地址转换),并在 prerouting 阶段生效
        type nat hook prerouting priority -100;  # priority -100 表示较早匹配规则

        # 将所有目标端口为 1234 的 TCP 和 UDP 流量的目的地址重定向到 JP 服务器 () 的 17443 端口
        tcp dport 1234 dnat to 目的机器的ip:17443
        udp dport 1234 dnat to 目的机器的ip:17443
        # 上述两行规则会将访问本机 1234 端口的 TCP/UDP 流量重定向到指定的远程服务器端口
    }

    # 在 postrouting 链中配置 SNAT(源地址转换)
    chain postrouting {
        # 设置该链的类型为 NAT,并在 postrouting 阶段生效
        type nat hook postrouting priority 100;  # priority 100 表示在路由后生效

        # 使用 masquerade(伪装)机制,将流向 JP 服务器 (目的机器的ip) 的流量的源地址转换为本机的出站 IP 地址
        ip daddr 目的机器的ip masquerade
        # masquerade 的效果是隐藏本地 IP,使目标服务器 (JP 服务器) 看到的是中转机的外网 IP,而非局域网 IP
    }
}

重启nftables
sudo systemctl restart nftables
sudo nft -f /etc/nftables.conf

常见区域旗帜表

区域旗帜代码备注来源解释
中国香港hkHong Kong取自英文 Hong Kong 的缩写
中国澳门moMacao取自英文 Macao 的缩写
中国台湾twTaiwan取自英文 Taiwan 的缩写
英国gbGreat Britain (UK)取自英文 Great Britain 的缩写
美国usUnited States取自英文 United States 的缩写
加拿大caCanada取自英文 Canada 的缩写
澳大利亚auAustralia取自英文 Australia 的缩写
新西兰nzNew Zealand取自英文 New Zealand 的缩写
日本jpJapan取自英文 Japan 的缩写
韩国krSouth Korea取自英文 Korea 的缩写
德国deGermany来自德语 Deutschland 的缩写
法国frFrance取自英文 France 的缩写
意大利itItaly取自英文 Italy 的缩写
西班牙esSpain来自西班牙语 España 的缩写
俄罗斯ruRussia取自英文 Russia 的缩写
印度inIndia取自英文 India 的缩写
巴西brBrazil取自英文 Brazil 的缩写
南非zaSouth Africa来自荷兰语 Zuid-Afrika 的缩写
新加坡sgSingapore取自英文 Singapore 的缩写

使用说明

  • 旗帜代码:依据国际标准 ISO 3166-1 Alpha-2 分配。
  • 来源解释:大多数国家代码基于英文名称缩写,少数基于本地语言(如德国、南非、西班牙)。