You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用nft在Linux网桥br0上阻止特定IP地址的访问?

如何使用nft在Linux网桥br0上阻止特定IP地址的访问?

没问题,针对你这个网桥场景,用nftables来实现IP拦截完全可行,而且比老的ebtables更灵活。我给你一步步讲清楚怎么做:

  1. 先确认nftables已安装
    Ubuntu默认应该已经预装了nftables,如果没装的话,执行这条命令安装:
    sudo apt update && sudo apt install nftables

  2. 创建网桥专用的nft表和链
    因为我们要处理网桥的转发流量,得用bridge族的表。先创建一个自定义表(比如叫br_filter),并启用forward链——网桥的转发流量默认走这个链:
    sudo nft add table bridge br_filter
    sudo nft add chain bridge br_filter forward { type filter hook forward priority 0 ; policy accept ; }

  3. 添加拦截规则
    你的需求是阻止PC(eth1接口)和1.1.1.1之间的所有通信,所以要加两条双向拦截规则:

  • 阻止PC发往1.1.1.1的流量:
    sudo nft add rule bridge br_filter forward iifname eth1 ip daddr 1.1.1.1 drop
  • 阻止1.1.1.1发往PC的流量:
    sudo nft add rule bridge br_filter forward oifname eth1 ip saddr 1.1.1.1 drop

简单解释下关键参数:

  • iifname eth1:匹配从eth1接口进来的流量(也就是PC发出来的数据包)
  • ip daddr 1.1.1.1:匹配目标IP是1.1.1.1的流量
  • drop:直接丢弃符合条件的流量,不让它通过网桥
  • oifname eth1:匹配要发往eth1接口的流量(也就是给PC的数据包)
  • ip saddr 1.1.1.1:匹配源IP是1.1.1.1的流量
  1. 验证规则生效
    执行sudo nft list ruleset,你应该能看到刚才添加的两条规则。然后从PC那边尝试ping 1.1.1.1,应该无法连通;同时访问其他外网IP正常,就说明规则生效了。

  2. 永久保存规则(可选)
    如果测试完想保留这个拦截规则,把当前规则导出到配置文件:
    sudo nft list ruleset > /etc/nftables.conf
    然后重启nftables服务让配置生效:
    sudo systemctl restart nftables
    这样系统重启后规则会自动加载。如果只是临时模拟故障测试,不用这一步——重启机器或者用nft delete rule命令删掉规则就能恢复正常。

备注:内容来源于stack exchange,提问作者Michael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 13:29:49