Указание записи MX IPv6 через djbdns или djbdns-fefe?
Я пытаюсь настроить записи MX IPv6 в своей среде djbdns. Я также экспериментирую с djbdns-fefe с той же целью.
Согласно документации djbnds-fefe, «... tinydns-edit пока не принимает адреса IPv6 для записей NS или MX». Более того, я не знаю, как настроить записи IPv6 в традиционной среде djbdns.
Я искал решение этой проблемы, но ничего не смог найти.
Я не хочу полностью отказываться от dbjdns или djbdns-fefe, поэтому знает ли кто-нибудь, как я могу настроить записи MX IPv6 в среде djbdns или djbdns-fefe?
...или это просто невозможно?
Заранее спасибо.
ОБНОВЛЯТЬ :
Чтобы внести ясность, спецификация MX-записи, созданной djbdns, занимает...
DNS-имя верхнего уровня записи MX (например , «example.com»);
IP-адрес, который будет назначен доменному имени MX, которое он будет генерировать (например , «10.11.12.13»);
префикс для имени домена MX, которое он будет генерировать (например , «x»);
приоритет (например, 0).
В этом примере будет создана следующая запись «MX»:
example.com. IN MX 86400 0 x.mx.example.com.
И он также автоматически создает вторую запись: запись «А»:
x.mx.example.com. IN A 86400 10.11.12.13
Проблема в том, что синтаксис djbdns для создания записи MX никогда не принимает адрес IPv6 для пункта 2 выше и никогда не создает автоматически записи AAAA в результате спецификации записи MX.
И хотя программное обеспечение djbdns-fefe позволяет напрямую создавать записи AAAA, ни djbdns-fefe, ни исходная версия djbdns не предоставляют никакого способа создания записи MX, которая ссылается на доменное имя на основе IPv6, указанное в этой записи AAAA.
Я пытаюсь найти обходное решение этого ограничения, чтобы по-прежнему использовать djbdns для создания записи MX на основе IPv6, если это возможно.
Это спецификации исходного синтаксиса djbdns...
https://cr.yp.to/djbdns/tinydns-data.html
А это документация по расширению IPv6 djbdns-fefe...
1 ответ
Мне нужно отменить это как ответ, потому что, проработав с этим несколько дней, я вижу, что это работает не так, как я надеялся. Автоматически сгенерированные выходные данные afxrbind9 имеют несколько ограничений, и многие из моих поддоменов недоступны.
На данный момент я снова переключился на tinydns и сейчас просто не использую IPv6.
Я оставлю этот оригинальный ответ здесь на случай, если кто-то, кто его прочитает, сможет увидеть недостатки и, возможно, предложить что-то, что действительно будет работать.
Я прошу прощения.
Оригинальный ответ, который, как оказалось, не работает
Это не совсем положительный ответ на мой вопрос, но это лучшее, что мне удалось придумать.
Похоже, мне совершенно не повезло с синтаксисом djbdns и djbdns-fefe, предлагающим для указания записей MX IPv6, и после долгих поисков я до сих пор не нашел никаких хаков или обходных путей, которые позволили бы мне сделать это именно так, как Я спрашивал здесь.
Однако я нашел косвенный способ сделать это, не отказываясь полностью от информации о конфигурации на основе Tinydns djbdns.
Прежде всего, мне важно объяснить, что несколько лет назад я написал специальную утилиту для генерации команд tinydns на основе более удобного для пользователя синтаксиса (где конкретный пользователь, с которым я дружу, — это «я»… LOL) ). На данный момент я хочу продолжать использовать эту утилиту.
Мое «решение» проблемы IPv6 MX — продолжать использовать эту старую специальную утилиту, а теперь также написать новую утилиту, которая позволит мне генерировать файлы конфигурации связывания 9 на основе моей текущей конфигурации djbdns, а затем переключиться на использование связывания 9. вместо djbdns. Вbind9 я действительно могу настроить записи MX IPv6.
Когда-нибудь я перепишу свою старую, оригинальную пользовательскую утилиту, чтобы она могла напрямую генерировать записи, специфичные для связывания 9, без необходимости проходить промежуточный этап преобразования конфигурации djbdns в конфигурацию привязки 9. Но сейчас у меня нет времени этим заниматься, поэтому я написал новую утилиту для преобразования информации о конфигурации djbdns в файлы конфигурацииbind9...
Эта новая утилита представляет собой сложный скрипт Python, который слишком длинный, чтобы перечислять его здесь целиком, поэтому я просто резюмирую его работу. И в любом случае, многое из этого специфично для моего конкретного хоста, поэтому я сомневаюсь, что написанный сценарий будет работать где-нибудь, кроме моего собственного хоста. Но в целом он функционирует следующим образом...
(1) Установите и настройте работающую службу Bind9.
(2) Несмотря на то, что сейчас я используюbind9, сервер djbdjs все равно должен быть запущен, чтобы мой скрипт работал. Я настроил его как «фиктивный» DNS-сервер, который прослушивает только частный локальный адрес.
(3) В скрипте Python я создал список под названием «email_hosts», который содержит имена доменов верхнего уровня, которым потребуются записи MX IPv6.
(4) Когда этот новый скрипт запускается, он сначала запускает демон через пакет «многопроцессорности» Python, который запускает эту команду...
/command/envuidgid root /usr/bin/tcpserver -vDHRl0 [DNSSERVERADDR] 53 /command/axfrdns
... где [DNSSERVERADDR] — частный локальный адрес, который прослушивает фиктивный сервер djbdns.
(5) Скрипт ждет, пока этот демон запустится и заработает, а затем запускает другой демон через пакет «многопроцессорности» Python, который циклически перебирает имена всех доменов, которые я размещаю, и для каждого домена (который я позвоню [DOMAINNAME], ниже), он запускает эту команду...
/usr/bin/dig axfr [DOMAINNAME] @[DNSSERVERADDR]
(6) Вывод каждого вызова «копать» захватывается, а затем я просматриваю все строки в этом выводе. Если я столкнусь с записью AAAA для любого из доменов, имена которых я сохранил в списке «email_hosts», упомянутом выше, я делаю следующее...
(7) Возьмите доменное имя конкретной записи AAAA, которую я назову [DOMAINNAME], и добавьте префикс «mx». к этому доменному имени. Я назову этот результат [MXNAME]. Например, если [DOMAINNAME] — «myhost.example.com», то [MXNAME] будет содержать имя «mx.myhost.example.com».
(8) Затем я добавляю следующие дополнительные строки в выходной список, предполагая, что IPv6-адрес «myhost.example.com» в его записи AAAA — [IPV6ADDRESS]:
mx.myhost.example.com 86400 IN AAAA [IPV6ADDRESS]
myhost.example.com 86400 IN MX mx.myhost.example.com 10
(9) Я объединяю все эти выходные строки для данного домена, включая две новые строки, которые я мог бы создать, а затем записываю результат в файл с именем «db.[DOMAINNAME]» в каталоге /var/lib/bind. каталог (исходное содержимое которого я ранее скопировал как /var/lib/bind.backup).
(10) Кроме того, для каждого [DOMAINNAME], обработанного в этом клиенте на основе dig-axfr-output, я также добавляю следующий текст в новый файл /etc/bind/named.conf.local (после резервного копирования текущего версия как /etc/bind/named.conf.local.backup) ...
zone "[DOMAINNAME]" {
type master;
file "/var/lib/bind/db.[DOMAINNAME]";
};
Также обратите внимание, что верхняя часть вновь созданного файла /etc/bind/named.local.conf выглядит следующим образом:
include "/etc/bind/zones.rfc1918";
(11) После того, как я обработал все домены таким образом, я завершаю работу обоих демонов, которые я запустил с помощью механизма «многопроцессорности» Python.
(12) Затем я перезапускаю «именованный» демон.
Таким образом, я могу продолжать использовать ту же утилиту, которую я написал много лет назад для упрощения генерации команд tinydns, но в то же время я фактически использую теперь Bind9 в качестве своего DNS-сервера.
И, как я уже упоминал выше, в конечном итоге я перепишу эту утилиту для непосредственного создания записей, специфичных для Bind9. Тогда вся эта процедура, основанная на axfr, исчезнет.
Несмотря на то, что все эти годы я был доволен djbdns, я должен признать, что сейчас мне лучше использоватьbind9.