最可靠方式是运行 nft list ruleset 查看内存中生效的完整规则集;修改配置文件后需手动加载或重启服务,否则不生效。

怎么快速查看当前 nftables 规则并确认是否生效
直接运行 nft list ruleset 是最可靠的方式,它输出当前内存中加载的完整规则集,不是配置文件里的静态内容。很多人误以为改了 /etc/nftables.conf 就自动生效,其实必须手动 nft -f /etc/nftables.conf 加载,或重启 nftables 服务(但后者可能清空临时规则)。
- 如果命令报错
Error: Could not fetch rule set: No such file or directory,说明内核没启用 nftables 模块,检查lsmod | grep nf_tables -
nft list tables只显示表名,nft list chain inet filter input可单独看某条链,适合调试时缩小范围 - 输出里带
@handle的规则是动态添加的(比如用nft add rule临时加的),重启后会丢失
nftables 配置文件写错导致加载失败的常见原因
语法比 iptables 更严格,缩进、分号、括号缺一不可,且不支持注释跨行。最常踩的坑是忘记在 chain 块末尾加右花括号,或把 tcp dport 22 accept 写成 tcp dport 22; accept(分号位置错)。
- 使用
nft -c -f /etc/nftables.conf先做语法校验,返回 0 才表示可安全加载 - 表名(如
inet filter)必须和nft list tables输出一致,大小写敏感 - 地址族类型写错:用
ip却匹配 IPv6 地址,或用ip6却写192.168.1.1,会静默跳过该规则
如何安全地临时添加/删除一条规则而不影响现有策略
用 nft add rule 或 nft delete rule 操作 handle 最稳妥,避免靠顺序编号(比如 position 3)——因为规则增删后位置会变,容易误删。
系统特点: 商品多级分类检索、搜索,支持同一商品多重分类,自由设置显示式样 自由设置会员类型,自由设置权限项目,自由分配每种会员类型和每个会员的权限 灵活的商品定价,最多12级价格自由分配给各种会员类型或会员,也可针对单会员单商品特殊定价 强大的会员管理、帐户管理、订单管理功能和一系列帐务查询统计功能 灵活的会员积分系统,自由设置每个积分事件的积分计算方法 灵活的网站内容发布、管理系统,每个栏目可
- 先查目标链的规则和 handle:
nft -a list chain inet filter input(加-a显示 handle) - 添加规则到链首:
nft insert rule inet filter input position 0 tcp dport 8080 accept - 删除指定 handle 的规则:
nft delete rule inet filter input handle 12 - 所有临时操作都不会写入配置文件,关机即丢,别指望它们“持久化”
为什么 reload 配置后连接突然断了
典型原因是默认策略(policy drop)太激进,而新配置里漏写了允许 established/related 流量的规则。nftables 不像 iptables 默认隐含某些状态跟踪,你得明写。
- 必须在 filter 表的 input 链开头加:
ct state established,related accept - 如果用了
jump到自定义链,要确保那个链里也有对应规则,否则跳过去就直接走到默认策略 - SSH 断连后无法恢复?提前在 crontab 或 screen 里留个
sleep 30 && nft -f /etc/nftables.conf.bak回滚脚本
规则顺序、状态匹配、默认策略三者咬合紧密,少一个环节就可能卡住连接。别依赖“应该没问题”,每次改完都用 curl -v 或 nc 实测目标端口通不通。









