iptables(mangle table) 無法偵測目標連接埠限制的 udp 封包流量

iptables(mangle table) 無法偵測目標連接埠限制的 udp 封包流量

作業系統資訊。

Linux raspberrypi 4.14.98-v7+ 或 Linux debian-stretch-1 4.9.0-11-amd64

發生了什麼事?

我啟動一個可以重定向 udp 流量的服務(ss-redir)

該服務開放udp 1080端口

我想將所有 dns 查詢重定向到 udp 127.0.0.1:1080 端口

你做了什麼?

ip route add local default dev lo table 100
ip rule add fwmark 1 lookup 100
iptables -t mangle -A PREROUTING -p udp --dport 53 -j TPROXY --on-port 1080 --tproxy-mark 0x01/0x01
nslookup www.google.com

您希望看到什麼?

多個 UDP 封包已通過 PREROUTING 鏈

確切的金額應顯示在第一(pkts)和第二(bytes)列中

你看到了什麼?

pkts bytes target     prot opt in     out     source               destination         
    0     0 TPROXY     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp dpt:53 TPROXY redirect 0.0.0.0:1080 mark 0x1/0x1

配置詳細。

root@User:~# cat /etc/resolv.conf
nameserver 8.8.8.8

這是我的服務

root@User:~# netstat -ntulp 
udp        0      0 0.0.0.0:1080            0.0.0.0:*                           3771/ss-redir

然後你做了什麼?

看來DNS查詢目的埠不是53,wireshark抓包顯示dport是53,dest ip是8.8.8.8。

因此,我在 PREROUTING 鏈中的規則之前添加了一些其他規則:

iptables -t mangle -I PREROUTING --prot udp -d myserverip/32 -j RETURN
iptables -t mangle -I PREROUTING --prot udp -d 192.168.128.10/32 -j RETURN
iptables -t mangle -I PREROUTING --prot udp -d 127.0.0.0/24 -j RETURN

然後運行

nslookup www.google.com

iptables -t mangle -L -nv

輸出如下圖所示:

Chain PREROUTING (policy ACCEPT 90 packets, 6699 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0   RETURN     udp  --  *      *       0.0.0.0/0             myserverip  
    1    29   RETURN     udp  --  *      *       0.0.0.0/0            127.0.0.0/24        
    0     0   RETURN     udp  --  *      *       0.0.0.0/0            192.168.128.10      
    0     0   TPROXY     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp dpt:53 TPROXY redirect 0.0.0.0:1080 mark 0x1/0x1

UDP封包仍然沒有通過ss-redir

我不知道我做錯了什麼。這個問題快把我逼瘋了。有人會幫助我嗎?

任何意見都是極大的讚賞。

非常感謝

相關內容