Iptables (mangle table) não pode detectar tráfego de pacotes UDP com restrições de porta de destino

Iptables (mangle table) não pode detectar tráfego de pacotes UDP com restrições de porta de destino

Informações do sistema operacional.

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

O que aconteceu?

Eu inicio um serviço (ss-redir) que pode redirecionar o tráfego udp

Este serviço abre a porta udp 1080

Quero redirecionar todas as consultas de DNS para a porta udp 127.0.0.1:1080

O que você fez?

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

O que você esperava ver?

Vários pacotes UDP passaram pela cadeia PREROUTING

A quantidade exata deve ser mostrada na primeira coluna (pacotes) e na segunda (bytes)

O que você viu em vez disso?

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

Configuração em detalhes.

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

este é o meu serviço

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

O que voce fez em seguida?

Parece que a porta de destino da consulta DNS não é 53, os pacotes foram capturados pelo wireshark indicam que o dport é 53 e o ip de destino é 8.8.8.8.

Então adicionei algumas outras regras antes daquela na cadeia 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

então corra

nslookup www.google.com

iptables -t mangle -L -nv

A saída é semelhante a esta:

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

Pacotes UDP ainda não passam por ss-redir

Não sei o que fiz de errado. Essa pergunta está me deixando louco. Alguém vai me ajudar?

Qualquer conselho é muito apreciado.

Muito obrigado

informação relacionada