使用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
相关产品推荐
相关产品推荐

