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) 및 두 번째(바이트) 열에 표시되어야 합니다.

대신에 무엇을 보셨나요?

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이고 대상 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을 통과하지 못합니다.

내가 뭘 잘못했는지 모르겠어요. 이 질문은 나를 미치게 만든다. 누군가 나를 도와줄까요?

어떤 조언이라도 대단히 감사하겠습니다.

많은 감사

관련 정보