我已使用 iptables PREROUTING 表成功将传入请求从端口 53 重定向到 3053
我已经使用 iptables OUTPUT 表成功将本地请求从端口 53 重定向到 3053,只要它们使用环回接口
但使用 eth0 IPv4 地址的本地请求会忽略这两个重定向。如何解决?
我尝试过 DNAT,指定目标 IP、接口,但都不起作用
sudo iptables-save
# Generated by iptables-save v1.8.9 (nf_tables) on Sun Feb 23 21:29:58 2025
*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
*nat
:PREROUTING ACCEPT [3765:300383]
:INPUT ACCEPT [3760:298404]
:OUTPUT ACCEPT [54136:75736197]
:POSTROUTING ACCEPT [54072:75544537]
-A PREROUTING -p udp -m udp --dport 53 -j REDIRECT --to-ports 3053
-A OUTPUT -o lo -p udp -m udp --dport 53 -j REDIRECT --to-ports 3053
COMMIT
如何使用容器重现错误
FROM alpine:latest
RUN apk add --no-cache iptables netcat-openbsd socat
podman build -t udp-redirect .
podman run --rm -it --privileged --sysctl net.ipv4.conf.all.route_localnet=1 --name udp-redirect udp-redirect sh
socat -T 1 UDP-LISTEN:3053,fork EXEC:"echo -n 'Hello world'" &
iptables -t nat -A PREROUTING -p udp --dport 53 -j DNAT --to 127.0.0.1:3053
echo -n "Test1" | nc -u -w1 10.0.2.100 53