rshun
V2EX  ›  问与答

nftable 防火墙问题

By rshun at 2023 年 1 月 1 日 · 2051 次点击

路由器版本:openwrt 22.03
nftables 版本:v1.0.2 (Lester Gooch)

现在想法: 指定局域网内某个特定 IP 不允许访问百度, 但使用下面的 nftable 配置后, 该 IP 依旧能够访问

#!/usr/sbin/nft -f

flush ruleset

table inet mytable {
    chain filter{
        type filter hook output priority 0; policy accept;
        ip saddr {192.168.0.10/32} ip daddr {180.97.34.94,180.97.34.96} drop
    }
}

但是如果我把 ip saddr 这个特定 IP 去掉之后,所有局域网都无法访问 baidu 了,感觉 nftable 不能针对某个特定 IP 做控制

#!/usr/sbin/nft -f

flush ruleset

table inet mytable {
    chain filter{
        type filter hook output priority 0; policy accept;
        ip daddr {180.97.34.94,180.97.34.96} drop
    }
}
10 条回复  •  2023-01-02 10:38:41 +08:00
old9
   1
old9  
   2023 年 1 月 1 日
hook forward chain?
rshun
   2
rshun  
OP
   2023 年 1 月 1 日   ❤️ 1
forward 和 input 都试过了,都不生效
lekai63
   3
lekai63  
   2023 年 1 月 1 日 via iPhone
你那个特定 ip 是否通过代理访问了百度
rshun
   4
rshun  
OP
   2023 年 1 月 1 日
本机没有使用代理,在路由器上我把相关代理配置全部删除了,只保留上述的 nft 配置。
ysc3839
   5
ysc3839  
   2023 年 1 月 1 日 via Android
既然是 OpenWrt ,又没用到 ipset 之类的功能,为什么不用 OpenWrt 自带的防火墙呢?
vmebeh
   6
vmebeh  
   2023 年 1 月 1 日 via iPhone
自带防火墙切到 nft 了
old9
   7
old9  
   2023 年 1 月 1 日
```
chain FORWARD {
type filter hook forward priority 0; policy accept;
ip saddr {192.168.0.10/32} ip daddr {180.97.34.94,180.97.34.96} drop
}
```
lovelylain
   8
lovelylain  
   2023 年 1 月 1 日 via Android
换 lean 的 lede ,继续用 iptables
tony1016
   9
tony1016  
   2023 年 1 月 1 日
你的 openwrt 是不是有 clash tun 啊,被压到 tun 里去了
rshun
   10
rshun  
OP
   2023 年 1 月 2 日
我大概知道是怎么回事了,hook output 是针对本机的,也就是路由器自身的 IP ,所以 ip saddr 指定是不生效的。
只能放到 forward 里面,但是这个 forward 是在 nat 的 prerouting 后面生效,所以如果走域名方式依然不生效,如果在浏览器中输入 IP 地址就生效了
© 2026 V2EX · 35ms · 3.9.8.5