Debian Bookworm中nftables国家白名单规则配置求助
解决方案
以下是符合需求的完整/etc/nftables.conf配置,包含白名单集合填充、规则匹配及计数器关联:
完整配置代码
#!/sbin/nft -f flush ruleset # 定义全局统计计数器 counter CNT_WHITE_LISTED_COUNTRIES{} counter CNT_BLACK_LISTED_COUNTRIES{} table inet filter { set countries-allowed { type ipv4_addr; flag interval; policy performance; # 替换为你需要白名单的国家IPv4 CIDR段,示例为部分IP段 elements = { 1.0.0.0/8, 2.0.0.0/8, 101.0.0.0/16 } } chain input { type filter hook input priority 0; policy drop; # 匹配白名单国家IP,接受数据包并统计 ip saddr @countries-allowed counter name CNT_WHITE_LISTED_COUNTRIES accept # 拒绝非白名单来源的IPv4数据包并统计 ip protocol ip counter name CNT_BLACK_LISTED_COUNTRIES drop } chain forward { type filter hook forward priority 0; policy drop; } chain output { type filter hook output priority 0; policy accept; } }
关键配置说明
- 填充白名单IP段:在
countries-allowed集合的elements字段中,添加目标国家的完整IPv4 CIDR段列表。 - 规则顺序:必须先设置白名单接受规则,再设置非白名单拒绝规则,否则白名单IP会被提前拦截。
- 默认策略:将
input和forward链的默认策略设为drop,确保未匹配规则的数据包全部被拒绝;output链默认设为accept允许出站流量,可根据需求调整。 - 计数器关联:通过
counter name直接绑定全局计数器,后续可执行nft list counters查看统计数据。
验证步骤
- 重启nftables服务:
systemctl restart nftables - 查看当前规则与计数器状态:
nft list ruleset - 测试连接:使用白名单内/外的IP访问服务器,检查计数器数值变化验证规则生效。
内容的提问来源于stack exchange,提问作者DieterH
相关产品推荐
相关产品推荐

