0

在 cisco 路由器中,它们似乎能够独立于 udp 更改 DNS 的 NAT 转换超时。

配置端口转换后,可以更好地控制转换条目超时,因为每个条目都包含有关使用它的流量的更多上下文。非 DNS UDP 转换 5 分钟后超时;DNS 在 1 分钟后超时。TCP 转换在 24 小时后超时,除非在流上看到 RST 或 FIN,在这种情况下它会在 1 分钟内超时。

来自:https ://community.cisco.com/t5/networking-documents/quot-ip-nat-translation-timeout-quot-command/ta-p/3137012

我怎么能在Linux上做到这一点?

当我这样做时,sysctl net.netfilter我可以找到每个协议的 conntrack timeout 可行的,例如

net.netfilter.nf_conntrack_udp_timeout = 30
net.netfilter.nf_conntrack_udp_timeout_stream = 120

但我找不到任何 DNS 设置。

有没有办法独立于其他 udp 流量更改 DNS conntrack 超时?


如果通过更改 conntrack 设置无法做到这一点,我该如何更改 DNS conntrack 超时?(我只是想为了好玩而尝试这个没有什么大的原因)我是否应该编写一些 C 代码来检查每个使用 netfilter 通过 NAT 的 udp 数据包,然后使用 conntrack 将其添加到具有不同超时变量的表中?

我正在使用 Ubuntu 20.04

4

1 回答 1

0

我能够使用nfct更改 DNS 超时

首先创建一个特殊的跟踪超时策略:

sudo nfct add timeout dns-timeout-test inet udp unreplied 20 replied 20

然后参考这个关于 DNS 包的政策:

iptables -I PREROUTING -t raw -p udp --dport 53 -j CT --timeout dns-timeout-test

然后检查带有 dport 53 的数据包的 DNS conntrack 条目conntrack -E 将超时 20 而不是默认的 30。

[NEW] udp      17 20 src=someaddress dst=someaddress sport=someport dport=53 [UNREPLIED] src=someaddress dst=someaddress sport=53 dport=someaport
于 2021-12-19T05:42:21.367 回答