首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过djbdns或djbdns-fefe指定IPv6 MX记录?

通过djbdns或djbdns-fefe指定IPv6 MX记录?
EN

Server Fault用户
提问于 2023-05-07 03:18:40
回答 1查看 151关注 0票数 1

我试图在我的djbdns环境中设置IPv6 MX记录。为了同样的目的,我也在试验djbdns-fefe。

根据djbnds-fefe文档,“.tinydns-编辑还不接受NS或MX记录的IPv6地址”。此外,我不知道在传统的djbdns环境中设置IPv6记录的方法。

我一直在寻找解决这个问题的方法,但是我什么也找不到。

我不想完全放弃dbjdns或djbdns-fefe,那么有谁知道我可以在djbdns或djbdns-fefe环境中设置IPv6 MX记录的方法吗?

..。还是说这根本不可能?

提前谢谢你。

更新

为了澄清,djbdns创建的MX记录的规范需要.

  1. MX记录的顶级DNS名称(例如"example.com");
  2. 指定给它将生成的MX域名的IP地址(例如"10.11.12.13");
  3. 它将生成的MX域名的前缀(例如,"x");
  4. 优先权(例如,0)。

在本例中,它将创建以下"MX“记录:

代码语言:javascript
复制
example.com. IN MX 86400 0 x.mx.example.com.

它还自动创建第二条记录:"A“记录:

代码语言:javascript
复制
x.mx.example.com. IN A 86400 10.11.12.13

问题是,djbdns中用于创建MX记录的语法将永远不会接受上面第2项的IPv6地址,并且不会根据其MX记录规范自动创建任何AAAA记录。

尽管djbdns-fefe软件允许直接创建AAAA记录,但djbdns和原始djbdns都没有提供任何方法来创建引用AAAA记录中指定的基于IPv6 6的域名的MX记录。

我正在试图找到解决这个限制的方法,以便我仍然可以使用djbdns创建一个基于IPv6 6的MX记录(如果可能的话)。

这些是原始djbdns语法的规范..。

https://cr.yp.to/djbdns/tinydns-data.html

这是djbdns-fefe IPv6增强的文档.

https://www.fefe.de/dns/

EN

回答 1

Server Fault用户

发布于 2023-05-13 17:36:54

我不得不撤销这个问题,因为在运行了几天之后,我发现它不像我所希望的那样起作用了。自动生成的afxr bind9输出有一些限制,而且我的许多子域无法访问。

目前,我已经切换回了IPv6,我只是暂时不使用它。

我将把这个最初的答案留在这里,以防读过它的人能够看到这个缺陷(S),并可能提出一些实际可行的建议。

我很抱歉。

原来的答案是行不通的

对于我的问题,这不是一个肯定的答案,但这是我能想到的最好的答案。

在djbdns和djbdns-fefe提供用于指定IPv6 MX记录的语法方面,我似乎完全不走运。经过大量搜索,我仍然没有找到任何能够让我按照我在这里要求的方式来完成这一任务的黑客或解决办法。

但是,我找到了一种不完全放弃基于djbdns的配置信息的间接方法。

首先,对我来说很重要的一点是,在几年前,我编写了一个自定义实用程序来生成基于更加用户友好的语法的tinydns命令(在这里,我所友好的特定用户是" me“.( LOL)目前,我想继续使用这个实用程序。

我对IPv6 MX问题的“解决方案”是继续使用这个旧的自定义实用程序,现在还编写一个新的实用程序,允许我根据当前的djbdns配置生成bind9配置文件,然后切换到使用bind9而不是djbdns。在bind9中,我确实可以设置IPv6 MX记录。

有一天,我将重写我的旧的、原始的自定义实用程序,这样它将直接生成特定于bind9 9的记录,而无需经过djbdns配置到bind9 9配置转换的中间步骤。但是我现在没有时间这样做,所以下面是我为将djbdns配置信息转换为bind9配置文件而编写的新实用程序.

这个新的实用程序是一个复杂的python脚本,它太长,无法在这里完整地列出,所以我只想总结一下它的工作原理。而且在任何情况下,很多脚本都是特定于我的特定主机的,因此我怀疑所编写的脚本将在任何地方运行,而不是在我自己的主机上运行。但总的来说,它的功能如下..。

(1)安装和设置一个工作的bind9服务。

(2)尽管我现在使用的是bind9,但djbdjs服务器仍然需要运行才能让我的脚本工作。我把它设置为一个“虚拟”DNS服务器,它只监听一个私有的本地地址。

(3)在python脚本中,我创建了一个名为"email_hosts“的列表,其中包含需要IPv6 MX记录的顶级域的名称。

(4)当这个新脚本启动时,它首先通过运行这个comand的python "multiprocessing“包触发一个守护进程。

代码语言:javascript
复制
/command/envuidgid root /usr/bin/tcpserver -vDHRl0 [DNSSERVERADDR] 53 /command/axfrdns

..。其中DNSSERVERADDR是虚拟djbdns服务器监听的私有本地地址。

(5)脚本等待该守护进程启动并运行,然后通过python "multiprocessing“包触发另一个守护进程,该包循环遍历我所承载的所有域的名称,对于每个域(我将在下面称为多马纳梅 )运行以下命令.

代码语言:javascript
复制
/usr/bin/dig axfr [DOMAINNAME] @[DNSSERVERADDR]

(6)捕获每个"dig“调用的输出,然后循环遍历该输出中的所有行。如果我在上面提到的"email_hosts“列表中存储了其名称的任何域的AAAA记录,我将执行以下操作.

(7)以特定AAAA记录的域名(我称之为多马纳梅 )为前缀“mx”。到那个域名。我把这个结果叫做MXNAME。例如,如果多马纳梅是"myhost.example.com",那么MXNAME将包含名称"mx.myhost.example.com“。

(8)然后在输出列表中添加以下附加行,假设其AAAA记录中“IPv6”的myhost.example.com地址是IPV6ADDRESS:

代码语言:javascript
复制
mx.myhost.example.com 86400 IN AAAA [IPV6ADDRESS]
myhost.example.com    86400 IN MX   mx.myhost.example.com 10

(9)我连接给定域的所有这些输出行,包括我可能创建的两行新行,然后将结果写入/var/lib/多马纳梅目录中的一个名为“db.bind”的文件(我以前备份的原始内容为/var/lib/bind.back)。

(10)此外,对于在这个基于dig输出的客户机中处理的每个多马纳梅,我还将以下文本附加到一个新的/etc/bind/named.conf.loc.local文件中(在备份当前版本为/etc/bind/named.con.local.backup之后).

代码语言:javascript
复制
zone "[DOMAINNAME]" {
  type master;
  file "/var/lib/bind/db.[DOMAINNAME]";
};

还请注意,这个新创建的/etc/bind/named.local.conf文件的顶部如下所示:

代码语言:javascript
复制
include "/etc/bind/zones.rfc1918";

(11)在以这种方式处理完所有域之后,我终止了通过python的“多重处理”机制启动的两个守护进程。

(12)然后重新启动“命名”守护进程。

这样,我可以继续使用我几年前编写的实用程序来简化tinydns命令的生成,但与此同时,我实际上正在使用bind9作为我的DNS服务器。

正如我前面提到的,我最终将重写该实用程序,以直接生成特定于bind9 9的记录。然后,整个基于axfr的程序就会消失。

尽管这些年来我一直对djbdns很满意,但我不得不承认,我认为现在使用bind9更好。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1130561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档