我正在根据这个问题的答案进行工作,man nft
以便dnat
在我的配置中创建一些规则nftables
。
相关配置摘录为:
define src_ip = 192.168.1.128/26
define dst_ip = 192.168.1.1
define docker_dns = 172.20.10.5
table inet nat {
map dns_nat {
type ipv4_addr . ipv4_addr . ip_proto . inet_service : ipv4_addr . inet_service
flags interval
elements = {
$src_ip . $dst_ip . udp . 53 : $docker_dns . 5353,
}
}
chain prerouting {
type nat hook prerouting priority -100; policy accept;
dnat to ip saddr . ip daddr . ip protocol . th dport map @dns_nat;
}
}
当我应用此规则时nft -f
,我没有看到任何命令输出,因此我认为它已成功。但是,当我使用规则检查规则集时,nft list ruleset
这些规则不存在。当该dnat to ...
行被注释掉时,规则似乎被应用,但是当该行存在时,规则不被应用。
prerouting
我试图替换的链中的规则集合是:
ip saddr $src_ip ip daddr $dst_ip udp dport 53 dnat to $docker_dns:5353;
...
版本信息:
# nft -v
nftables v1.0.6 (Lester Gooch #5)
# uname -r
6.1.0-11-amd64
为什么这可能不起作用?谢谢