ct helper
这是当前如何声明对象的工作示例nftables 文档
#!/usr/sbin/nft -f
add table filter_4 {
# TODO: Can helper object be declared outside the scope of table declaration scope?
# ct helper stateful object
# "ftp-standard" is the name of this ct helper stateful object
# "ftp" is the in-kernel name of the ct helper for ftp
ct helper ftp-standard {
type "ftp" protocol tcp;
}
}
然后该ct helper
对象用于 ex。如下:
add chain filter_4 new_out_4 {
comment "New output IPv4 traffic"
}
# FTP (active and passive)
# Rule for initial ftp connection (control channel), setting ct helper stateful object to use
# "ftp-standard" is the name of the ct helper stateful object
add rule filter_4 new_out_4 tcp sport >1023 tcp dport 21 ct helper set "ftp-standard" accept
我想要实现的是了解ct helper
在表外声明对象的语法,其方式与声明集合的方式类似。
有关如何在表声明范围之外声明集合的示例
add set filter_4 multicast_proto { type inet_proto; comment "IPv4 multicast protocols"; }
add element ip filter_4 multicast_proto { udp, igmp }
以类似的方式,我想声明ct helper
对象,例如:
# Table declaration
add table filter_4
# Declare ct helper separately
add ct helper ftp-standard {
type "ftp" protocol tcp;
}
这当然不行,ct helper
像这样添加\声明的语法是什么?
似乎ct helper
必须绑定到一个表(这是真的吗?),因此也许应该在上面的示例中指定表名称。
答案1
语法描述于nft(8)
:
add ct helper [family] table name { type type protocol protocol ; [l3proto family ;] }
delete ct helper [family] table name
list ct helpers
所以对于你的情况:
从 shell(包括
'
在适当的情况下使用正确的 shell 转义,nft
它本身并不关心:它解析参数相同,但它们是分开提供的):nft add ct helper filter_4 ftp-standard '{ type "ftp" protocol tcp; }'
或者如果已经在
nft
上下文中,只需:add ct helper filter_4 ftp-standard { type "ftp" protocol tcp; }