Перехоплення DNS (DNS hijacking)
Вступ
- У цьому посібнику описано спосіб перехоплення DNS-трафіку в OpenWrt.
- Можна комбінувати з VPN або шифруванням DNS для захисту DNS-запитів.
Мета
- Замінити попередньо налаштований DNS-провайдер для клієнтів у LAN.
- Запобігти витоку DNS-запитів під час використання VPN або шифрованого DNS.
Налаштування через веб-інтерфейс
Налаштуйте файрвол для перехоплення DNS-запитів:
- Перейдіть до LuCI → Network → Firewall → Port Forwards
- Натисніть Add і вкажіть:
- Назва:
Intercept-DNS - Обмежити сімейство адрес: IPv4 та IPv6
- Протокол: TCP, UDP
- Зона джерела:
lan - Зовнішній порт:
53 - Зона призначення: не вказується
- Внутрішня IP-адреса: будь-яка
- Внутрішній порт: будь-який
- Натисніть Save, потім Save and apply
Налаштування через командний рядок
Налаштуйте файрвол для перехоплення DNS-запитів:
# Перехоплення DNS uci -q del firewall.dns_int uci set firewall.dns_int="redirect" uci set firewall.dns_int.name="Intercept-DNS" uci set firewall.dns_int.family="any" uci set firewall.dns_int.proto="tcp udp" uci set firewall.dns_int.src="lan" uci set firewall.dns_int.src_dport="53" uci set firewall.dns_int.dest_port="53" uci set firewall.dns_int.target="DNAT" uci commit firewall service firewall restart
Перевірка
Встановіть різні DNS-провайдери на клієнті та маршрутизаторі. Переконайтесь, що виявлений DNS-сервер збігається лише з тим, який налаштовано на маршрутизаторі.
Вирішення проблем
Зберіть і проаналізуйте таку інформацію:
# Журнал і статус service firewall restart # Поточна конфігурація nft list ruleset # Постійна конфігурація uci show firewall
Додатково
DNS через HTTPS (DoH)
Використовуйте banIP для блокування DoH-трафіку, змушуючи клієнтів у LAN використовувати незашифрований DNS.
DNS через TLS (DoT)
Налаштуйте файрвол для блокування DoT-трафіку, змушуючи клієнтів у LAN використовувати звичайний DNS:
# Блокування DoT uci -q delete firewall.dot_fwd uci set firewall.dot_fwd="rule" uci set firewall.dot_fwd.name="Deny-DoT" uci set firewall.dot_fwd.src="lan" uci set firewall.dot_fwd.dest="wan" uci set firewall.dot_fwd.dest_port="853" uci set firewall.dot_fwd.proto="tcp udp" uci set firewall.dot_fwd.target="REJECT" uci commit firewall service firewall restart
Переспрямування DNS (DNS forwarding)
Налаштуйте переспрямування DNS до локального DNS-сервера за допомогою Dnsmasq. Припускається, що локальний DNS-сервер у тій же підмережі. Налаштуйте файрвол, щоб уникнути циклічної маршрутизації.
# Файрвол uci set firewall.dns_int.src_mac="!11:22:33:44:55:66" uci commit firewall service firewall restart
Перенаправлення DNS (DNS redirection)
Не використовуйте Dnsmasq. Налаштуйте файрвол для перенаправлення DNS-трафіку на локальний DNS-сервер. Перенесіть DNS-сервер у окрему підмережу, щоб уникнути маскарадингу:
# Файрвол uci set firewall.dns_int.name="Redirect-DNS" uci set firewall.dns_int.family='ipv4' uci set firewall.dns_int.dest_ip="192.168.2.2" uci set firewall.dns_int.src_ip='!192.168.2.2' uci commit firewall service firewall restart # Мережа uci add_list network.lan.ipaddr="192.168.2.1/24" uci commit network service network restart