Dev*_*Gav 10 domain-name-system linux redhat resolv.conf nameserver
您将如何在 RHEL/Centos 6 上为每个 NIC(eth0 与 eth1)接口配置 DNS 名称服务器?
例如
eth0 在子网 10.0.0.1/24 上
eth1 在子网 192.168.0.1/24 上
通过 eth0 发送的任何请求都应使用 DNS 服务器 10.0.0.2。
通过 eth1 发送的任何请求都应使用 DNS 服务器 192.168.0.2。
我已经添加:
DNS1:10.0.0.2 > /etc/sysconfig/network-scripts/ifcfg-eth0
DNS1:19.168.0.2 > /etc/sysconfig/network-scripts/ifcfg-eth1
然而,这些值会被忽略,并且它总是默认为 resolv.conf 中的设置“nameserver 10.0.0.2” 当 eth0 关闭时,通过 eth1 发送连接......但是 DNS 无法再解析,因为它试图到达 10.0.0.2 .
我如何让它尊重 ifcfg 中的 DNS 设置而不是 resolv.conf 的默认设置?
或者如何为 eth0 和 eth1 配置不同的 DNS 名称服务器?
有没有更好的方法来处理这个问题?
更新
我们有两个 VLAN,每个 VLAN 在各自的子网上都有自己的 DNS 服务器。这些处理本地 DNS(example.loc、guest.app 等)的查找,以及在需要时转发。
它们是位于两个独立物理位置的两个独立服务器。如果可能,我宁愿不在两个子网中运行一台服务器(一个处理敏感数据)。
如果 eth0 出现故障,我需要 eth1 才能继续发出 DNS 请求。
我想过在 resolv.conf 中添加两个 IP,然后如果它无法访问第一个子网中的服务器,则让它失效,但这似乎不雅(当 eth0 为每个 DNS 查询时,必须等待第一个服务器超时下)。
你不能轻易做你想做的事。
或者如何为 eth0 和 eth1 配置不同的 DNS 名称服务器?
主机名的名称查找是通过标准系统库进行的,并且与特定的“连接”没有任何关联。事实上,在DNS查询发生时,有是无连接的,因为你的应用程序甚至还没有想通了,到它会连接(这就是为什么它使用DNS摆在首位)地址。
我如何让它尊重 ifcfg 中的 DNS 设置而不是 resolv.conf 的默认设置?
Linux 解析器只有一个全局配置 ( /etc/resolv.conf)。没有任何类型的每个接口、每个域或每个连接的设置。中的设置/etc/sysconfig/network-scripts/...仅用于填充/etc/resolv.conf,通常如果您在这些文件中指定DNS1和DNS2,最后出现的界面将是您在/etc/resolv.conf.
有没有更好的方法来处理这个问题?
你能告诉我们你真正想要完成什么吗?如果您能告诉我们更多有关您的具体情况的信息,我们或许能够提出更好的解决方案。
您所有三个问题的答案现在已由systemd 解决(强调我的):
查找请求将根据以下规则路由到可用的 DNS 服务器和 LLMNR 接口:
对特殊主机名“localhost”的查找永远不会路由到网络。(其他一些特殊域的处理方式相同。)
使用 LLMNR 协议将单标签名称路由到能够进行 IP 多播的所有本地接口。IPv4 地址的查找仅通过 IPv4 上的 LLMNR 发送,IPv6 地址的查找仅通过 IPv6 上的 LLMNR 发送。对本地配置的主机名和“网关”主机名的查找永远不会路由到 LLMNR。
多标签名称将路由到配置了 DNS 服务器的所有本地接口,以及全局配置的 DNS 服务器(如果有)。来自链路本地地址范围的地址查找永远不会路由到 DNS。
如果查找被路由到多个接口,则返回第一个成功的响应(从而有效地合并所有匹配接口上的查找区域)。如果所有接口上的查找均失败,则返回最后一个失败的响应。
查找路由可能会受到配置每个接口域名的影响。有关详细信息,请参阅 systemd.network(5)。对以每个接口域之一结尾的主机名的查找将专门路由到匹配的接口。
| 归档时间: |
|
| 查看次数: |
31914 次 |
| 最近记录: |