我想在 Linux 上做一些测试。我想在 IP 为 1.2.3.4(假设)的机器上放置一个小型 Web 服务器,当对特定 URL kitty.myweb.com 进行 DNS 查询时,我想返回此 IP 地址。
场景:
- 当我打开浏览器(firefox 或其他浏览器)时,我输入 URL kitty.myweb.com,浏览器将执行 DNS 查询
- 我想编写一个程序来执行 kitty.myweb.com 的 DNS 查询
我知道每台计算机都有一个本地 DNS 解析器,它会缓存一些条目;对 URL 的调用将首先查询本地 DNS 解析器,如果没有相应的条目,它会将查询发送到 LAN 或 Internet 上的外部 DNS 解析器。
我想要的是向本地 DNS 解析器添加一个条目(kitty.myweb.com:1.2.3.4),这样对于上述两种情况,DNS 响应将是 1.2.3.4,而无需进行外部查询。
是否可以在 Linux 上执行此操作?如果可以,如何操作?是否有任何 C 代码片段可以执行此操作?
答案1
您可能能够使用 /etc/hosts 添加您的条目。这实际上不是使用 DNS,但它会影响 Linux 中的解析器库,该库由大多数应用程序使用。添加:
1.2.3.4 kitty.myweb.com
另一个选择是在您的系统上安装一个简单的 DNS 服务器。我经常使用的服务器称为 dnsmasq。在某些发行版中,它默认安装为缓存解析器,在这种情况下,您只需修改配置以包含以下内容:
地址=/kitty.myweb.com/1.2.3.4
如果您正在运行自己的 DNS 服务器,则可能需要使用 Linux 解析器库使用的 /etc/resolv.conf。要使解析器库查看本地 DNS 服务器,您需要在 resolv.conf 中添加一个条目:
名称服务器 127.0.0.1
答案2
在本地主机上添加单个 DNS 条目的最简单方法是将其添加到 hosts 文件中。该文件的位置可能因发行版而异,但其传统位置/etc/hosts
大致如下:
::1 localhost localhost.yourdomain.tld 127.0.0.1 本地主机 localhost.你的域名.tld 1.2.3.4 kitty.myweb.com
请注意,这只会影响您自己的计算机,而且扩展性不好。换句话说,它适合简单的测试,只是不要尝试在许多计算机上编辑主机文件。为此,您需要正确的 DNS 条目。