nrp*_*rph 23 domain-name-system linux dnsmasq
现在我在 dnsmasq.conf 中有以下行,它可以很好地处理所有请求(/#/匹配任何域;这是必需的):
address=/#/127.0.0.1
Run Code Online (Sandbox Code Playgroud)
但是,有些域需要解析为 .ip 以外的 IP 地址127.0.0.1。
作为临时解决方案,它们已添加到/etc/hosts:
209.85.148.95 ajax.googleapis.com
207.97.227.245 underscorejs.org
72.21.194.31 s3.amazonaws.com
Run Code Online (Sandbox Code Playgroud)
不幸的是,这是一个非常临时的解决方案:一旦任何目标域的 IP 地址发生变化,它就会停止工作。
我的问题是:如何强制 dnsmasq 使用上游 dns 服务器来解析某些(指定的)域名的 IP 地址?
use*_*517 33
您可以通过使用server=指令来做到这一点,例如
server=/ajax.googleapis.com/8.8.8.8
Run Code Online (Sandbox Code Playgroud)
将查询 ajax.googleapis.com 域的谷歌公共 DNS 服务器,类似地
server=/amazonaws.com/209.244.0.3
Run Code Online (Sandbox Code Playgroud)
将为 amazonaws.com 域查询 Level3 的公共 DNS 服务器。
您可以将多个域组合在一起
server=/co.uk/com/8.8.4.4
Run Code Online (Sandbox Code Playgroud)
将 .co.uk 和 .com 域发送到 8.8.4.4 的 DNS 服务器
你也可以有多个server=指令
?S, --server=[/[<domain>]/[domain/]][<ipaddr>[#<port>][@<source>[#<port>]]]
直接指定上游服务器的IP地址。设置此标志不会禁止读取 /etc/resolv.conf,请使用 -R 来执行此操作。如果给出了一个或多个可选域,则该服务器仅用于那些域,并且仅使用指定的服务器查询它们。这适用于私有名称服务器:如果您的网络上有一个名称服务器处理 xxx.internal.thekelleys.org.uk 形式的名称,地址为 192.168.1.1,则给出标志 -S /internal.thekelleys.org.uk/ 192.168.1.1 会将所有对内部机器的查询发送到该名称服务器,其他所有内容都将发送到 /etc/resolv.conf 中的服务器。空域规范, // 具有“仅非限定名称”的特殊含义,即名称中没有任何点。可以使用 # 字符将非标准端口指定为 IP 地址的一部分。
还允许使用 -S 标志,它提供域但没有 IP 地址;这告诉 dnsmasq 域是本地域,它可以回答来自 /etc/hosts 或 DHCP 的查询,但不应将该域上的查询转发到任何上游服务器。在这种情况下,local 是 server 的同义词,使配置文件更清晰。
@ 字符后可选的第二个 IP 地址告诉 dnsmasq 如何将查询的源地址设置到此名称服务器。它应该是属于运行 dnsmasq 的机器的地址,否则该服务器行将被记录然后被忽略。对于指定了源地址但端口可以直接指定为源地址的一部分的任何服务器,查询端口标志将被忽略。
| 归档时间: |
|
| 查看次数: |
38759 次 |
| 最近记录: |