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

使用Go调用NFTables创建表失败的问题排查求助

NFTables Go脚本创建表失败排查求助

我正在开发一个通过Go脚本与NFTables交互创建、管理防火墙规则的程序,但在创建新表时持续失败。已经排查了表名冲突、权限等常见问题,脚本仍然无法成功创建新表。

核心脚本代码

package main

import (
    "fmt"
    "log"
    "os"

    "github.com/google/nftables"
)

func main() {
    conn, err := nftables.New()
    if err != nil {
        log.Fatalf("Error creating NFTables connection: %v", err)
    }

    // Attempting to create a new table with a unique name
    tableName := "test_nft_table"

    // Check if the table already exists
    tables, err := conn.ListTables()
    if err != nil {
        log.Fatalf("Error listing tables: %v", err)
    }
    exists := false
    for _, t := range tables {
        if t.Name == tableName {
            exists = true
            break
        }
    }

    if exists {
        fmt.Printf("Table '%s' already exists.\n", tableName)
    } else {
        // Create the table
        table := &nftables.Table{
            Family: nftables.TableFamilyIPv4,
            Name:   tableName,
        }
        if err := conn.AddTable(table); err != nil {
            log.Fatalf("Error adding table '%s': %v", tableName, err)
        }
        fmt.Printf("Table '%s' created successfully.\n", tableName)
    }

    if err := conn.Flush(); err != nil {
        log.Fatalf("Error applying changes: %v", err)
    }
}

错误信息

执行脚本后收到的错误:

Error adding table 'test_nft_table': &{test_nft_table 0 0 2}

该错误信息过于通用,无法提供有效排查线索。

已尝试的排查步骤

  • 检查表名是否存在冲突
  • 确保脚本以超级用户权限运行
  • 测试不同的表族(IPv4和INet)
  • 将脚本简化至最基础形式以隔离问题

运行环境

(请填写操作系统版本、Linux内核版本、NFTables版本等信息)

恳请提供可能的问题原因分析或额外排查步骤建议,感谢帮助!

内容的提问来源于stack exchange,提问作者Reinaldo Saraiva

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 12:52:52