Wi-CAT LLC

Wireless Comprehensive Advanced Technology. Build your network now.

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

(решено) IPv6, radvd и 3 DNS сервера

Всем добра!

8.1.4.RU.25042019 / AP-Gateway / MT7621 CPU, MT7603 2T2R 2.4GHz, MT7610 1T1R 5GHz, 1000FDX

 

Есть неочевидное:

Отдаю по dhcp6 три DNS сервера: свой и два сторонних.

Получаю:

Apr 25 19:58:37 ipv6: Configure radvd
Apr 25 19:58:37 ipv6: Starting radvd
Apr 25 19:58:37 radvd[6101]: version 2.18 started
Apr 25 19:58:37 radvd[6101]: too many addresses in RDNSS section
Apr 25 19:58:37 radvd[6101]: exiting, failed to read config file
Apr 25 19:58:37 dhcp6c: ipv6: domain name servers - _DNS1_ _DNS2_ _DNS3_
Apr 25 19:58:37 dhcp6c: Call reconfigure radvd/dhcp6s
Apr 25 19:58:37 ipv6: Configure and start radvd and dhcpv6 server
Apr 25 19:58:37 ipv6: Try get prefix from local interface br0
Apr 25 19:58:37 ipv6: Use DNS recieved from ISP _DNS1_ _DNS2_ _DNS3_
Apr 25 19:58:37 ipv6: Use local DNS server as relay and local ipv6 hosts resolve _IPHERE_
Apr 25 19:58:37 ipv6: MTU WAN: 1500 LAN: 1500

т.е. radvd не запускается.

Мне кажется, стоит в конфиг ему давать два первых сервера из полученых.

Спасибо.

Приветствую. Оч интересно. Щас посмотрим.

Вообще судя по:

                        switch (rdnss->AdvRDNSSNumber) {
                                case 0:
                                        memcpy(&rdnss->AdvRDNSSAddr1, $1, sizeof(struct in6_addr));
                                        rdnss->AdvRDNSSNumber++;
                                        break;
                                case 1:
                                        memcpy(&rdnss->AdvRDNSSAddr2, $1, sizeof(struct in6_addr));
                                        rdnss->AdvRDNSSNumber++;
                                        break;
                                case 2:
                                        memcpy(&rdnss->AdvRDNSSAddr3, $1, sizeof(struct in6_addr));
                                        rdnss->AdvRDNSSNumber++;
                                        break;
                                default:
                                        flog(LOG_CRIT, "too many addresses in RDNSS section");
                                        ABORT;
                        }

Он умеет как как раз 3 адреса DNS.

Покажите содержимой /etc/resolvipv6.conf  в этот момент. Ну и содержимое /etc/radvd.conf

Вообще судя по коду там нет смысла вываливаться вообще из конфигура ravdvd. Т.е. достаточно ABORT->break заменить и проблем это не вызовет. Но интересна причина ибо если dns записи ему отдаётся реально 3 то проблем быть не должно. Надо смотреть что там именно происходит.

содержимоe /etc/resolvipv6.conf

[Wive-NG-MT@/var/log]# cat /etc/resolvipv6.conf
nameserver 2a00:.......::120
nameserver 2001:4860:4860::8888
nameserver 2001:4860:4860::8844

/etc/radvd.conf

[Wive-NG-MT@/var/log]# cat /etc/radvd.conf

            interface br0
            {
                AdvSendAdvert on;
                MinRtrAdvInterval 3;
                MaxRtrAdvInterval 10;
                AdvLinkMTU 1500;                # send correct MTU size for avoid fragment on router
                AdvDefaultPreference high;
                AdvManagedFlag off;             # use RADVD for clients adresses set
                AdvOtherConfigFlag off;
                prefix 2a00:..............:6a9a/64
                {
                    AdvOnLink off;
                    AdvAutonomous on;
                    AdvRouterAddr on;
                    AdvPreferredLifetime 240;
                    AdvValidLifetime 300;

                };

                RDNSS 2a00:.....................:6a9a 2a00:...........::120 2001:4860:4860::8888 2001:4860:4860::8844
                {
                        AdvRDNSSLifetime 20;
                };
            };
            [Wive-NG-MT@/var/log]#

В web-интерфейсе - IPv6 setup: radvd висит со статусом "starting"

Точно там же ещё его собственная локальная запись роутер же сам с dnsproxy.

Итого в radvd 4 шт передаются вот и ругается.

Можно перейти на схему как в v4 и при включенном локальном DNSMASQ выдавать только адрес локального dnsproxy что разумно. А если локальный dnsproxy вырублен то уже парсить resolv и отдавать клиенту всё кроме адреса роутера.

Щас посмотрим как малой кровью сделать.

Так. Сделал, щас соберётся на пробу.

Терь схема такая же как для ipv4. Если dns proxy включен - отдаём клиенту только адрес локального DNS который в свою очередь ходит до апстримных серверов сам.

Я почему-то считал что уже года 2 как её запилил. =) Вот чётко помню, что уже делал это... Дежавю...

Такс. Сделал ещё одну фигушку которую давно хотел.

Отдельную компановку resolv.conf для dnsmasq из обоих доступных резолвов системных для v4 и v6, что бы не было чехарды из-за разных режимов. Вообще надо будет в HQ пересмотреть всю эту логику, она уже начала обрастать оверкилом, пора скоро рефакторить вместе с управлением туннелями. Хитросплетений должно быть минимум, а они потихоньку начинают усугубляться.

Пробуйте (во вложении). Если всё Ок - соберу в паблик.

На всякий случай лог загрузки полный, можно на мыло sfstudio[at]wi-cat.ru. Пробегусь глазками что нигде ничего не оторвало после правок. ;)

Вот чего ещё забыл. Надо ж в локал резолв при DNS proxy включенном добавить lo запись иначе там так и будет весеть fallback на гугловские сервера. Щас сделаю. Хотя в общем-то можно проверять уже ну будут кроме прочего в resolv светиться затычки гугла. =)

Вот терь вроде всё учёл. Проверяем.

Локально у себя прогнал в 3х вариантах:
1) статика
2) динамика поверх IPOE
3) динамика поверх PPPOE

проблем не обнаружено

Залил финальный вариант https://sourceforge.net/projects/wive-ng/files/wive-ng-mt/ кроме прочего ещё по UI кой чего поправить пришлось.

Просьба проверить и отписать по результатам.

Логи отправил. Все работает.

Спасибо!

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

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

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