我只使用 dhcpcd 并且我想让 /etc/resolv.conf 添加搜索domain.local

我只使用 dhcpcd 并且我想让 /etc/resolv.conf 添加搜索domain.local

我有许多不使用网络管理器的计算机,仅使用 dhcpcd 来设置 IP 地址。例如,我的树莓派4。我在/etc/dhcpcd.conf文件中静态分配了IP地址,并且它有效,我很高兴。我想要做的是,如果我输入 nslookup machine2 (例如),它会将配置的域附加到该查找。

在另一台使用 dhcpcd 的机器(我的 ArchLinux PC)中,我通过 dhcpcd 将地址配置为使用 dhcp(即这次不是静态的)。在我的 DHCP 服务器上,我已将其设置为将“域名”字段指定为返回给客户端的选项。结果是我的 /etc/resolv.conf 文件更新为以下行:

域名 mydomain.local

由于在此文件中设置了此“域”值,因此我只需键入 nslookup machine2,它将 mydomain.local 附加到该查询,并且我的 dns 服务器会解析 machine2.mydomain.local 的 fqdn 的 IP。

所以理想情况下,我想模仿这个设置,这样我的树莓派 pi4 就会做同样的事情,但是它是静态设置的,那么我该怎么做呢?

请注意,我尝试将“search domain.local”添加到 /etc/resolv.conf 文件中,并且它执行了我想要的操作,但是这些设置在重新启动时会丢失,因此我无法在此处设置此值。我需要一个正确的 dhcpcd 工作解决方案。

更新:

我被要求将 /etc/resolv.conf 的输出放在这里:

$ cat /etc/resolv.conf
# Generated by resolvconf
nameserver 10.10.0.1

答案1

如果我(最后)理解正确,那么您已经使用 dhcpcd.conf (而不是 dhcpd.conf)配置了您的网络

我想这个配置采用类似于这样的形式:

interface eth0
static ip_address=192.168.2.31/24
static routers=192.168.2.1
static domain_name_servers=192.168.2.1 8.8.8.8 4.2.2.1

要设置域和搜索域,您应该能够添加如下内容:

static domain_name=example.com
static domain_search=example.com

换句话说,您只需将其设置domain_search为静态选项即可。

供参考,请参阅此处http://www.techsneeze.com/configuring-static-ip-raspberry-pi-running-raspbian/


正如OP所指出的,这个选项隐藏得很好。推断是因为 dhcpcd 是一个围绕 DHCP 概念构建的网络配置工具。在 dhcpcd 中,您可以通过定义 DHCP 响应(部分)来设置静态配置。因此,在这种情况下,答案只是将 添加domain_search到静态定义的值中。

记录不足的原因可能是 DHCP 允许添加自定义 DHCP 选项。因此 dhcpcd 不可能列出您可以静态定义的每个选项。由于它domain_search并不是核心 DHCP 标准的一部分,它是由RFC 3397

就是这样说的。手册中可以更好地描述它。

答案2

我不确定如何使用 nslookup 获得答案。但是对于使用 nsswitch.conf 文件告诉它如何解决问题的程序,如果查询的目标正在运行 avahi (或任何 Zero_conf 又名 mDNS 守护进程),则可以执行此操作。 getent cmd 就是这样一个实用程序。例如,我的 LAN 上有一台名为“shadow”的 PC

`getent hosts shadow`

什么也不返回。

getent hosts shadow.local 返回:

192.168.1.76 影子.本地

avahi-resolve -n shadow回报

无法创建主机名解析器:主机名无效

avahi-resolve -n Shadow.local 返回:

影子.本地192.168.1.76

尽管我从未在任何地方定义过“本地”域。

为此,目标必须在线才能回答 mDNS 轮询。例如,如果主机 hector 离线:

avahi-resolve -n hector.local

无法解析主机名“hector.local”:已达到超时

getent hosts hector.local

超时且没有任何返回

关键是在 /etc/nsswitch.conf 文件中包含以下行:

主机:文件 mdns4_minimal [NOTFOUND=return] dns myhostname

这将导致像 getent 这样的 cmd 首先检查 /etc/hosts 文件,如果在那里找不到主机,则尝试使用 mDNS 设施。

我认为安装和运行 avahi 会自动将必要的库添加到 getent 检查的路径中,这样当 getent 在 nsswitch.conf 文件中看到 mdns4_minimal 时,它就知道要做什么。

上面是一些(不令人满意的)黑客行为。我很想知道如何强制 dhcpd 做你想做的事。 PGMER6809

相关内容