Wi-CAT LLC

Wireless Comprehensive Advanced Technology. Build your network now.

Wi-CAT LLC
Навигация Форума
Вы должны войти, чтобы создавать сообщения и темы.

(решено) Как настроить Google DNS для внешки и локальный DNS для ресурсов провайдера?

Собственно встала задача сделать так, чтобы все клиенты роутера для внешних ресурсов использовали Google/Yandex DNS (или любой другой, заданный ручками), а для внутренних ресурсов прова вида xxx.имя_провайдера.com использовался локальный DNS прова - 10.4.0.1

Подключение - статика на WAN (локальные ресурсы прова) плюс PPPoE для выхода в глобальную сеть.

Прошивка последняя  - 7.5.21

Для решения этой задачи на предыдущем роутере снимал в вэб-интерфейсе галку в VPN-подключении с "Автоматического получения DNS" и прописывал нужные DNS вручную и добавлял в конфиг dnsmasq.conf строчку вида: server=/10.4.0.1/имя_провайдера.com

Попробовал по аналогии на wive сделать подобное, но немного по другому, потому как отсутствуют нужные поля в вэб-интерфейсе, но не прокатило. В STATIC WAN выбрал мануал DNS - Google, в VPN подключении снял галку с "Peer DNS", в dnsmasq.conf дописал заветную server=/10.4.0.1/имя_провайдера.com, fs save, затем ребут, но... локальные ресурсы прова не стали резолвиться через 10.4.0.1

Как всё это поправить?

Открываем dnsmasq.conf.example и смотрим:

# Add other name servers here, with domain specs if they are for
# non-public domains.
#server=/localnet/192.168.0.1

# Example of routing PTR queries to nameservers: this will send all
# address->name queries for 192.168.3/24 to nameserver 10.1.2.3
#server=/3.168.192.in-addr.arpa/10.1.2.3

# Add local-only domains here, queries in these domains are answered
# from /etc/hosts or DHCP only.
#local=/localnet/

# Add domains which you want to force to an IP address here.
# The example below send any host in double-click.net to a local
# web-server.
#address=/double-click.net/127.0.0.1

Т.е. формат записи для опции server == /имя/адрес сервера а не наоборот.

Как бы dnsmasq тут самый обычный без каких-либо правок, так что смело смотрим его документацию и действуем. dnsmasq.conf не перезаписывается скриптами т.к. всё что нужно прошивке передаётся опциями. А значит его смело можно править и сохранять модификации в rwfs.

Да, по dnsmasq немного попутал, писал по памяти. В конфиге всё правильно  server=/имя/адрес

Пришлось применить "грубый" костыль и поправить ip-up скрипт:

--- ip-up.orig	2018-09-16 15:46:01.718538359 +0600
+++ ip-up	2018-09-16 15:24:09.000000000 +0600
@@ -11,7 +11,7 @@
 PPP_IPPARAM="$6"
 LOG="logger -t pppd"
 
-eval `nvram_buf_get 2860 vpnNAT vpnDGW vpnPeerDNS PortForwardEnable upnpEnabled parproutedEnabled`
+eval `nvram_buf_get 2860 vpnNAT vpnDGW vpnPeerDNS PortForwardEnable upnpEnabled parproutedEnabled vpn_primary_dns vpn_secondary_dns`
 
     #export for webui and vpnhelper
     echo -n "$PPP_IFACE" > /tmp/vpn_if_name
@@ -84,11 +84,24 @@
 	# read for all write by root
 	chmod 644 /etc/resolv.conf > /dev/null 2>&1
     else
-	##########################################################
-	# Regenerate resolv only if wan_static_dns on		 #
-	##########################################################
-	if [ "$wan_static_dns" = "on" ]; then
-	    service resolv start
+	if [ "$vpnPeerDNS" = "off" ]; then
+	$LOG "Replace DNS from user set"
+	cp -f /etc/resolv.conf /tmp/resolv.conf.tmp.$PPP_IFACE
+	if [ "$vpn_primary_dns" != "" ] || [ "$vpn_secondary_dns" != "" ]; then
+	    echo "nameserver $vpn_primary_dns" > /etc/ppp/resolv.conf
+	    echo "nameserver $vpn_secondary_dns" >> /etc/ppp/resolv.conf
+	fi
+	cat /etc/ppp/resolv.conf /etc/resolv.conf  > /tmp/resolv.$PPP_IFACE
+	cp -f /tmp/resolv.$PPP_IFACE /etc/resolv.conf
+	# read for all write by root
+	chmod 644 /etc/resolv.conf > /dev/null 2>&1
+	else
+	    ##########################################################
+	    # Regenerate resolv only if wan_static_dns on		 #
+	    ##########################################################
+	    if [ "$wan_static_dns" = "on" ]; then
+	        service resolv start
+	    fi
 	fi
     fi

Буду признателен, если есть более изящное решение.

Ну дык выше.

Нет ну если и грубый напильнинг устраивает то проще было положить свой скрипт в /etc/ppp/ip-up.d и из него перезаписать /etc/resolv.conf дабы не трогать системную логику вообще. А в нём хоть вообще статикой прибить что и куда.

И такую правку можно будет смело оформлять в виде пакета rwfs не боясь, что совместимость сломается.

Ну либо разбирайтесь таки с dnsmasq. Я не вижу особых причин почему из него не должно заработать.  Как бы включить отладку dnsmasq и проанализировать вывод он всяко рассказывает почему игнорит опцию.

Тут вопрос скорее в удобстве конфигурации роутера под свои нужды (которые у всех разные), но я не вижу причин не вынести замену VPN DNS на пользовательские в вэб-рожу, как у многих роутеров. Это было бы неплохо для штатного функционала. ИМХО.

Зато я вижу. =) Тут уже и так стоны на тему "ваши дебильные настройки". А предлагается ещё наворотить страшную опцию. =))))

А учитывая, что за 12 лет вы первый кто решил вот так подвывернуться.... Так что это тот случай, когда возможно полезная опция не появиться в роже т.к. массы пугают "лишние" крутилки.

Для того что бы не обижать тех кто с руками, wive позволяет править всю свою логику конфигура без перепрошивки, и оформлять в виде пакетов rwfs что бы не  ковыряться руками после каждого обновления.

P.S. Удобство конфигурирования обеспечивается провайдером в виде IPOE+DHCP на доступе и локальными ресурсами на белых адресах, резолвящиеся везде включая гуглоднсы, которые так же являются публичными сервисами. Все костыльные схемы с туннелями на доступе (не важно какими) заведомо неудобны для конфигурирования конечником. =)

Ясно... Нет, так нет.

PS. Мне проще один раз поправить в сырцах и потом уже собирать с нужными опциями, чем каждый раз с rwfs  запариваться. :)

Вот кстати  в туду есть управление локальными зонами через dnsmasq (отдельной страницей без усложнения страниц для обычных порошков) вот туда можно будет добавить реплэйс зон, как вы изначально и делали. Вопрос лишь в том, почему не заработало. Разберётесь - добавлю в ToDo, мне сейчас откровенно некогда этим заниматься в силу аврального допила пары сервисов для MT7615.

Цитата: RoxsAndy от 16/09/2018, 15:11

PS. Мне проще один раз поправить в сырцах и потом уже собирать с нужными опциями, чем каждый раз с rwfs  запариваться. :)

Ну эт каждому своё. Сырцы внезапно для этого и публикуются. Многим проще просто после обновления с официальной сборки следом залить через рожу пакетик добавляющий нужное в rwfs. Тут уже на вкус и цвет.

 

Кстати, что за провайдер-то? Я уже лет 5ть не видел провайдеров которые жопятся на белые адреса для 1,5 своих сервисов и не анонсят их в DNS. Как бы даже корбилайн от этого отошёл уже.

Аж вынтересно. Хотя вобще локальные сервисы почти у всех повымирали напрочь на самом-то деле.

Провайдер местный EsilNet (esilnet.com), он так и не запустил мультикаст, и IPTV работает по http протоколу и не резолвится через внешний шлюз. Поэтому при смене dns приходится делать "извраты", а гуглевские DNS нужны для Xbox One и андроидов. Не знаю в чём причина, но без них х-коробок еле-еле качает игры и обновления, а на дроидах периодические траблы с плеймаркетом (но походу это местные проблемы с DPI).

Как-то так.

PS. //tssss

Аж интересно стало =)) Полез к ним на форум.

forum.esilnet.com ошибка базы данных
Возникла ошибка при работе с базой данных.
К сожалению, на данный момент из-за технических проблем с базой данных, форум не может обработать ваш запрос. О проблеме уже сообщено администрации форума. 

Приносим свои извинения за причиненные неудобства. 

Вы можете попробовать обновить страницу нажав сюда

Забавно.

Да сайтом у прова никто уже с 2017 не занимается. Инфа на нём устаревшая, кроме тарифов. Форум и другие сервисы потихоньку отмирают и пытаются переродиться.

Ладно эт фигня. Просьба, поколупайте таки на досуге dnsmasq на тему выше. Мож разберётесь, там будет ясно. Сейчас запустим серию 15шек и пойдём по todo с удвоенной скоростью.

Ok, гляну, только с наскоку не нашёл как включить отладку у dnsmasq?

Конструкция server=/имя/адрес в dnsmasq.conf работает, проверил. Почему не получилось в первый раз - не знаю, может звёзды так сложились, может где опечатку допустил, не суть.

Тему можно закрывать. Работают оба решения.

PS. На будущее может пригодиться, но я не нашёл как включить дебаг (или расширенное логирование) у dnsmasq. Обычно это ключ --verbose или -vvv, но тут это не то...

Пропустил мессагу... У него debug вроде в конфиге врубается в лоб не помню. Но точно есть.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: