nftables 与 nftlb 协同构建安全边界防护体系:nftables 负责 L3/L4 层访问控制与前置防护,nftlb 专注流量分发;二者基于统一 Netfilter 框架集成,支持双栈、透明模式及原子化策略更新。

边界防护中集成负载均衡,nftables 本身不直接提供应用层负载均衡能力,但它能高效支撑底层流量分发所需的网络层控制——特别是与专用负载均衡器(如 nftlb)协同工作时,可构建安全、高性能的边界防护体系。
明确角色分工:nftables 做策略网关,nftlb 做流量分发
nftables 的核心职责是边界访问控制:过滤非法请求、限制连接速率、封禁恶意 IP、启用连接跟踪等。它不替代 HAProxy 或 Nginx 这类七层负载均衡器,也不内置加权轮询或健康检查逻辑。但它的表链结构和高效匹配机制,非常适合为上游负载均衡服务提供“前置守门”能力。
- nftables 处理 L3/L4 层策略:例如只允许特定源段访问 VIP、强制开启 conntrack、丢弃无状态碎片包
- nftlb(或类似基于 nftables 的 LB 工具)负责将入向流量按规则分发到后端真实服务器(RS),其自身通过 nft API 动态生成 DNAT 规则
- 两者共用同一套内核 Netfilter 框架,避免 iptables + userspace LB 的多层拷贝开销
关键集成点:用 nftables 强化 nftlb 的边界安全性
部署 nftlb 时,若缺少外围防护,VIP 可能暴露在扫描、SYN Flood 或连接耗尽攻击之下。此时应在同一主机上用 nftables 构建防护层:
-
入口限速:对 VIP 的新建连接做速率限制,防暴力探测
nft add rule inet filter input ip daddr 203.0.113.10 tcp dport {80, 443} ct state new limit rate 100/second accept -
源地址净化:结合 set 或 map 实时拦截已知威胁 IP(可由 SIEM 或蜜罐自动注入)
nft add set inet filter blacklisted_ips { type ipv4_addr\; flags dynamic\; }
再在 input 链头部添加:nft add rule inet filter input ip saddr @blacklisted_ips drop -
连接状态强化:拒绝非 ESTABLISHED/RELATED 的返回包,防止伪造响应
nft add rule inet filter input ct state invalid drop -
转发链隔离:若 nftlb 在本机做 DNAT 后转发至后端,需显式放行 FORWARD 链中的合法会话
nft add rule inet filter forward ct state established,related accept
双栈与透明模式下的配置要点
现代边界设备常需同时处理 IPv4/IPv6 流量,并支持透明代理或旁路部署。nftables 的 inet 地址簇天然适配双栈,而 nftlb 默认支持 -6 参数启用 IPv6。集成时注意:
- 统一使用
inet表而非分开定义 ip/ip6 表,减少维护复杂度 - nftlb 的 VIP 若为 IPv6 地址,需确保 nftables 规则中
ip6 daddr或ip daddr判断逻辑覆盖对应协议 - 透明模式下(如 TPROXY),需启用
net.ipv4.conf.all.route_localnet=1并在 prerouting 链中设置 redirect 或 meta mark,nftables 支持直接操作 packet meta 数据,比 iptables 更简洁
运维协同:动态策略同步与原子更新
nftables 的 nft -f 命令支持原子加载完整规则集,这对边界防护至关重要——策略变更不能出现中间态敞口。可将 nftlb 的后端伸缩事件(如节点上线/下线)触发 nftables 规则热更新:
- 编写 JSON 配置脚本,当新增 RS 时,自动向 nftables 的
backend_serversset 中添加 IP - 利用 systemd 服务依赖或 inotify 监控,确保 nftables 规则重载与 nftlb 配置生效严格串行
- 所有规则保存为
/etc/nftables.conf,配合nftables.service实现开机自启,避免重启后防护失效

















