为什么我在 -j REDIRECTed 数据包上看到 DST="127.0.0.53"?

Why i see DST="127.0.0.53" on -j REDIRECTed packets?

我对 NATed 网络中的情况感到困惑。我在路由器上启动 dnsmasq,DNS 端口有 listen-address=192.168.100.1-p 5353 选项。之后,我为该网络内的主机添加 iptables 规则:

iptables -t nat -I PREROUTING -s 192.168.100.0/24 \
    -d 192.168.100.1 -p udp --dport 53 -j REDIRECT --to-ports 5353

但这第一次不起作用,因为我的 INPUT 政策是 DROP:当我添加这条规则时,一切都开始起作用:

iptables -I INPUT -p udp --dport 53 -d 127.0.0.53 -j ACCEPT 

我在 INPUT 链上 -j LOG 的帮助下发现了这个地址,当 NATed 主机试图解析主机名时,我看到数据包像 SRC=127.0.0.1 DST=127.0.0.53 ... 一样被丢弃。

因为我正在编写生成正确的 netfilter 规则的自动脚本,所以我需要知道这个 127.0.0.53 可能来自哪里。

我在 /etc/resolv.conf 中看到相同的地址。但是我不明白是谁在 "redirected" 时将这个数据包路由到这个地址,即使接近理解发生了什么。

systemd-resolved 在 127.0.0.53:53

本地为 dns 请求设置存根监听器

尝试禁用它以继续sudo systemctl disable systemd-resolved