![OpenWrt 和屏蔽来自中国的地址](https://linux22.com/image/1350697/OpenWrt%20%E5%92%8C%E5%B1%8F%E8%94%BD%E6%9D%A5%E8%87%AA%E4%B8%AD%E5%9B%BD%E7%9A%84%E5%9C%B0%E5%9D%80.png)
我在路由器上运行 OpenWrt,我很喜欢它。我的问题是如何阻止所有中国地址连接到路由器防火墙的 22 端口?99.9999% 的未经授权的 ssh 连接都来自那里。
/K
答案1
答案2
就像你屏蔽其他人一样。当然,你需要中国 IP 屏蔽列表。你可以在这里获取它们:http://www.nirsoft.net/countryip/cn.html
然后您需要将其转换为 iptables 格式(除非列表已经有这种格式)。
具体过程取决于您使用的防火墙。但一般来说,您将创建一个新的 ssh 链,并将所有访问发送到端口 22。如果您有一个包含 iptables 格式的地址的文件(1.2.3.4/24),那么您可以使用 shell 命令
while read network; do
iptables -A ssh -s "$network" -j DROP
done < china-networks.txt
iptables -A ssh -j ACCEPT
可以通过接受关闭中国境外的几个地址并将小型网络合并为大型网络来优化这一点,从而减少要检查的规则数量。如果是 UCI 防火墙,可以从 /etc/firewall.user 中执行此操作。
答案3
使用ipset用于匹配大型 IP 地址列表。
创建集合:
ipset -N myset iphash
while read network; do
ipset -A myset ${network}
done < china-networks.txt
丢弃流量:
iptables -A INPUT -m set --set myset src -j DROP