Запросы DNS перенаправления с OpenWrt

Я принес беспроводной маршрутизатор в свой офис, потому что нет никакого свободного сетевого сокета около моего места. Каждый нормальный компьютер, который подключен через кабель Ethernet обычно, получает IP и адреса сервера DNS от маршрутизатора предприятия DHCP.

Наша организация имеет некоторые внутренние адреса, которые имеют их собственные URIs, которые разрешены локальным сервером DNS. Теперь я могу получить доступ к ним IP-адресом, но не URI, поскольку "хост неизвестен".

В разделе DHCP и DNS LuCI (webinterface OpenWrt) под опцией DNS Forwardings Я указал адреса серверов предприятия DNS (они статичны), но без успеха.

Как я могу заставить OpenWrt передать все запросы DNS, которые он не может разрешить сам к этим серверам предприятия или просто всему трафику DNS к этому серверы?

6
задан 24 January 2016 в 00:02
3 ответа

Не утруждайтесь переадресацией DNS или внутренним DNS-сервером OpenWrt, просто обслуживайте существующие DNS-серверы непосредственно своим DHCP-клиентам. Вы можете сделать это, установив DHCP опцию 6, которая будет отформатирована в web-интерфейсе следующим образом:

6,192.168.32.35,192.168.48.35

Вы можете получить доступ к соответствующей части web-интерфейса в LuCI, пройдя через Network --> Interfaces --> LAN --> Scroll down to bottom --> "Advanced Settings" tab:

LuCI DHCP configuration

Я также должен напомнить вам сделать это только с явным знанием и одобрением сетевого администратора вашей компании, IT-отдела и т.д.

.
9
ответ дан 3 December 2019 в 00:02

В качестве альтернативы использованию DHCP-опции 6 вы можете напрямую изменить DNS-серверы, которые использует OpenWrt. Для этого перейдите под веб-интерфейсом LuCI к

Сеть Интерфейсы WAN Редактировать Расширенные настройки

и снимите отметку с опции Использовать DNS-серверы, объявленные партнером . Затем должно появиться новое поле параметра Использовать настраиваемые DNS-серверы , где вы можете ввести адреса одного или нескольких DNS-серверов по вашему выбору.

Снимок экрана: настраиваемые DNS-серверы в OpenWrt

Of Конечно, если ваш WAN-интерфейс имеет другое имя (например, потому что вы подключены через IPv6), вам необходимо вместо этого изменить эти настройки для этого интерфейса.

Этот метод имеет общее преимущество, так как OpenWrt использует ваши собственные DNS-серверы для поиска любых неизвестный адрес, он по-прежнему действует как DNS-сервер для подключенных клиентов. Таким образом, на DNS-запросы самого OpenWrt также отвечают ваши пользовательские DNS-серверы (может быть важно, если вас беспокоит конфиденциальность и, следовательно, вы хотите полностью избежать использования DNS-серверов вашего интернет-провайдера, например).

Другие преимущества включают это. Кэш DNS используется для всех клиентов (кеш DNS OpenWrt), и вы все еще можете использовать файл OpenWrt hosts для добавления пользовательских записей и т. Д.

Я тестировал этот метод только в OpenWrt 15.05 Chaos Calmer, но Думаю, это должно работать так же и в предыдущих версиях.

8
ответ дан 3 December 2019 в 00:02

Надежная альтернатива — установить правило брандмауэра, чтобы весь DNS-трафик направлялся на ваш локальный DNS-сервер.

Поместите следующий скрипт в Сеть > Брандмауэр > Пользовательские правила (после замены 192.168.1.2 фактическим IP-адресом вашего DNS-сервера)

# DNSHIJACKv4
# Log and redirect DNS Traffic
iptables -t nat -N dnshijack
iptables -t nat -I dnshijack -j LOG --log-prefix "dnshijack4 "
iptables -t nat -A dnshijack -j DNAT --to-destination 192.168.1.2
# anything else is hijacked
iptables -t nat -A prerouting_lan_rule -p udp --dport 53 -j dnshijack
iptables -t nat -A prerouting_lan_rule -p tcp --dport 53 -j dnshijack
# fix "reply from unexpected source"
iptables -t nat -A postrouting_lan_rule -d 192.168.1.2 -p tcp -m tcp --dport 53 -m comment --comment "!fw3: DNS Pi-hole MASQUERADE" -j MASQUERADE
iptables -t nat -A postrouting_lan_rule -d 192.168.1.2 -p udp -m udp --dport 53 -m comment --comment "!fw3: DNS Pi-hole MASQUERADE" -j MASQUERADE

Примечание. Я не пробил дыру в брандмауэре, чтобы разрешить моему локальному DNS-серверу (adguard) общаться с Интернетом. Это связано с тем, что он делает это через TLS и, следовательно, использует другой порт.Если ваш локальный DNS-сервер использует простые текстовые запросы, вам необходимо добавить это в свой набор правил (не забывая изменить LOCAL_DNS_MAC_ADDRESS на фактический MAC-адрес вашего DNS-сервера):

iptables -t nat -A prerouting_lan_rule -m mac --mac-source LOCAL_DNS_MAC_ADDRESS -p udp --dport 53 -j ACCEPT
iptables -t nat -A prerouting_lan_rule -m mac --mac-source LOCAL_DNS_MAC_ADDRESS -p tcp --dport 53 -j ACCEPT

Context

Я использовал OpenWRT и пытается перенаправить весь DNS-трафик в AdGuard на отдельную машину. Я пробовал:

  1. Настроить DNS-интерфейс WAN для переадресации на мой сервер AdGuard
  2. Настроить DHCP с включенной опцией 6, чтобы клиенты использовали мой сервер AdGuard
  3. Настроить системный DNS OpenWRT для переадресации на мой сервер AdGuard

Все безуспешно . Затем я наткнулся на эту тему: https://forum.openwrt.org/t/redirect-all-outbound-dns-traffic-to-internal-ip/18783/11, где я нашел более полный набор правил:

# DNSHIJACKv4
# Log and hijack to Pihole
iptables -t nat -N dnshijack
iptables -t nat -I dnshijack -j LOG --log-prefix "dnshijack4 "
iptables -t nat -A dnshijack -j DNAT --to-destination 10.0.2.2
# allow Pihole to query internet
iptables -t nat -A prerouting_lan_rule -m mac --mac-source 00:11:22:33:44:55 -p udp --dport 53 -j ACCEPT
iptables -t nat -A prerouting_lan_rule -m mac --mac-source 00:11:22:33:44:55 -p tcp --dport 53 -j ACCEPT
# allow queries to OpenWrt
iptables -t nat -A prerouting_lan_rule -p tcp --dport 53 -d 10.0.2.1 -j ACCEPT
iptables -t nat -A prerouting_lan_rule -p udp --dport 53 -d 10.0.2.1 -j ACCEPT
# anything else is hijacked
iptables -t nat -A prerouting_lan_rule -p udp --dport 53 -j dnshijack
iptables -t nat -A prerouting_lan_rule -p tcp --dport 53 -j dnshijack
# other zones
iptables -t nat -A prerouting_guest_rule -p tcp --dport 53 -d 10.0.2.2 -j ACCEPT
iptables -t nat -A prerouting_guest_rule -p udp --dport 53 -d 10.0.2.2 -j ACCEPT
iptables -t nat -A prerouting_guest_rule -p udp --dport 53 -j dnshijack
iptables -t nat -A prerouting_guest_rule -p tcp --dport 53 -j dnshijack
iptables -t nat -A prerouting_iot_rule -p tcp --dport 53 -d 10.0.2.2 -j ACCEPT
iptables -t nat -A prerouting_iot_rule -p udp --dport 53 -d 10.0.2.2 -j ACCEPT
iptables -t nat -A prerouting_iot_rule -p udp --dport 53 -j dnshijack
iptables -t nat -A prerouting_iot_rule -p tcp --dport 53 -j dnshijack
# fix "reply from unexpected source"
iptables -t nat -A postrouting_lan_rule -d 10.0.2.2 -p tcp -m tcp --dport 53 -m comment --comment "!fw3: DNS Pi-hole MASQUERADE" -j MASQUERADE
iptables -t nat -A postrouting_lan_rule -d 10.0.2.2 -p udp -m udp --dport 53 -m comment --comment "!fw3: DNS Pi-hole MASQUERADE" -j MASQUERADE
2
ответ дан 29 December 2020 в 23:49

Теги

Похожие вопросы