Назад | Перейти на главную страницу

Как настроить dnsmasq для пересылки нескольких DNS-серверов?

Сейчас я использую общедоступный DNS через VPN, чтобы избежать загрязнения DNS в Китае. Но за это приходится платить, что я не могу воспользоваться преимуществами CDN.

Есть ли способ настроить dnsmasq и позволить ему запрашивать оба DNS-сервера, как общедоступный, так и ISP, и возвращать IP-адрес с более низкой метрикой?

Я знал, что это можно сделать, используя server=/domain/server директива назначить DNS-сервер для определенного домена, но проблема в том, что их сотни. Так что мне нужно придумать что-то общее.

Заранее спасибо.

Есть ли способ настроить dnsmasq и позволить ему запрашивать оба DNS-сервера, как общедоступный, так и ISP, и возвращать IP-адрес с более низкой метрикой?

dnsmasq предоставляет опции --all-servers

--все-серверы

По умолчанию, когда у dnsmasq доступно более одного вышестоящего сервера, он будет отправлять запросы только на один сервер. Установка этого флага заставляет dnsmasq отправлять все запросы на все доступные серверы. Ответ от сервера, который ответит первым, будет возвращен исходной запрашивающей стороне.

Эти варианты действительно отвечают вашей проблемной

DNSmasq не может этого сделать за вас. Powerdns с бэкэндом pipe, однако, может, так как вы можете написать свой собственный код для разрешения. Я бы использовал python pydns для бэкэнда, поскольку он может легко запрашивать произвольные серверы имен.

Я не думаю, что dnsmasq дает вам такую ​​возможность. Однако есть решение, которое заключается в привязке. Я знаю, что они говорят, что установка привязки - это излишество, но это не так уж плохо для того, что вы пытаетесь сделать.

options {
    forwarders {
            x.x.x.x;        //ISP dns ip address
            y.y.y.y;        //Public dns ip address
    }
}

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