%20%D0%BD%D0%B5%20%D0%BC%D0%BE%D0%B6%D0%B5%D1%82%20%D0%BE%D0%B1%D0%BD%D0%B0%D1%80%D1%83%D0%B6%D0%B8%D1%82%D1%8C%20%D1%82%D1%80%D0%B0%D1%84%D0%B8%D0%BA%20%D0%BF%D0%B0%D0%BA%D0%B5%D1%82%D0%BE%D0%B2%20UDP%20%D1%81%20%D0%BE%D0%B3%D1%80%D0%B0%D0%BD%D0%B8%D1%87%D0%B5%D0%BD%D0%B8%D1%8F%D0%BC%D0%B8%20%D0%BF%D0%BE%D1%80%D1%82%D0%B0%20%D0%BD%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D1%8F.png)
Информация об операционной системе.
Linux raspberrypi 4.14.98-v7+ или Linux debian-stretch-1 4.9.0-11-amd64
Что случилось?
Я запускаю службу (ss-redir), которая может перенаправлять UDP-трафик
Эта служба открывает порт 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, а 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
Я не знаю, что я сделал не так. Этот вопрос сводит меня с ума. Кто-нибудь мне поможет?
Любые советы высоко ценится.
Большое спасибо