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

joh*_*ith 4 dns domain resolv.conf

我有许多不使用网络管理器的计算机,仅使用 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
Run Code Online (Sandbox Code Playgroud)

Phi*_*ing 5

如果我(最后)理解正确,那么您已经使用 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
Run Code Online (Sandbox Code Playgroud)

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

static domain_name=example.com
static domain_search=example.com
Run Code Online (Sandbox Code Playgroud)

换句话说,您只需将其设置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固定的。

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

  • 菲利普,你好,老实说,感谢你的努力。有关此设置的文档不存在,或者我找不到它。有用!但有一个问题!如果您在指定“静态域名”之前指定“静态域名服务器”,那么您实际上会丢失名称服务器。然而,如果你反过来做,两者都会起作用!不太清楚为什么会这样,但它可以正确地工作。如果您有任何相关文档的链接,请分享,因为我发现在线找到正确的语法非常困难。再次感谢您的帮助! (4认同)
  • PS:您可以更新您的回复,以便它在静态域名服务器之前显示静态域名,这样其他人就不会遇到这个“错误”,或者任何导致名称服务器使用当前的 resolv.conf 的问题你已经发布的方式。然后我会将其标记为已回答。再次,我非常感谢你们为此所做的一切努力,我真的很感激! (2认同)