You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何使用Netfilter阻止本地IP范围及子网?

阻止IP子网/范围的常见实践与实现方法

嘿,这个问题问得很实在!其实拦截整个IP子网是网络运维和安全里的常规操作,你的思路方向没错,但不用自己手动去处理掩码清零的事儿——现成的工具和协议早就把这个逻辑封装好了,直接用就行~

下面是几种最常用的实现方式:

1. Linux系统用iptables(最常用)

iptables直接支持通过CIDR格式指定子网,它会自动帮你完成IP与子网掩码的比对,完全不用手动计算。比如要拦截所有来自192.168.1.0/24子网的入站流量:

iptables -A INPUT -s 192.168.1.0/24 -j DROP
  • -s 指定源IP/子网,如果要拦截目标子网(比如访问某个子网的流量),把-s换成-d即可
  • /24 是子网掩码的缩写,对应255.255.255.0,其他掩码比如/16对应255.255.0.0,以此类推
  • -j DROP 表示匹配到后直接丢弃数据包

如果要保存规则防止重启失效,不同发行版命令略有不同,比如Ubuntu用netfilter-persistent save,CentOS用service iptables save

2. Windows系统用防火墙

不管是图形界面还是命令行,Windows防火墙都支持子网级拦截:

图形界面方式

  • 打开「Windows Defender防火墙」→「高级设置」
  • 新建「入站规则」→ 选择「自定义」类型
  • 在「作用域」步骤,添加要阻止的子网(比如IP地址填192.168.1.0,子网掩码填255.255.255.0
  • 动作选择「阻止连接」,完成配置即可

命令行方式(用netsh)

netsh advfirewall firewall add rule name="Block 192.168.1.0/24" dir=in action=block remoteip=192.168.1.0/24
  • dir=in 表示入站流量,换成dir=out就是拦截出站到该子网的流量

3. 路由器/交换机用ACL(访问控制列表)

如果要在网络入口处拦截子网流量,路由器的ACL是更高效的选择,以Cisco路由器为例:

# 定义ACL,拒绝192.168.1.0/24子网的流量(这里用反掩码0.0.0.255,对应子网掩码255.255.255.0)
access-list 1 deny 192.168.1.0 0.0.0.255
# 允许其他所有流量(如果需要的话)
access-list 1 permit any
# 将ACL应用到入站接口
interface GigabitEthernet0/0
ip access-group 1 in

不同品牌的路由器配置语法略有差异,但核心逻辑都是通过子网掩码/反掩码匹配IP范围,然后执行拦截动作。

背后的核心原理

你之前想的「用子网掩码清零后比对」其实就是这些工具的底层逻辑:
当数据包到达时,工具会自动提取IP地址,用指定的子网掩码和IP做按位与运算得到网络地址,再和你要拦截的子网网络地址比对——如果一致,就执行丢弃/阻止动作。整个过程完全自动化,不用你手动操作数据包头部。

除了上面这些工具,像PfSense、Fortinet这类专业防火墙,或者Snort这类IDS/IPS系统,也都支持通过CIDR或子网掩码的方式配置子网拦截规则,操作逻辑大同小异。

内容的提问来源于stack exchange,提问作者Crumblez

火山引擎 最新活动