【发布时间】:2026-01-31 00:10:01
【问题描述】:
为了测试我对 DNS 的一些想法,我编写了一个非常简单的服务器,它基本上通过响应键值对来模拟类似 DNS 的行为。
我可以很容易地用 C 语言编写一个客户端到这个服务器,它可能会接受一个主机名作为参数并打印出一个 IP(或类似的东西)
我真正的问题是在 linux 场景中,哪段代码最终负责查找。这个程序是如何运作的?用自定义的“玩具”客户端(当然是在虚拟机中)覆盖这个程序会很简单吗?
当然,这都是理论上的,我没有计划在虚拟机之外使用它,而且我不想实现默认的 DNS 协议(所以只需将 DNS 服务器设置设置为 localhost 或127.0.0.1 对我没用)
一些关于我想要实现的行为的示例代码(伪)
int main(int argc, char** argv){
if(strcmp(argv[0], "localhost") == 0){
printf("127.0.0.1");
}
return 0;
}
【问题讨论】:
-
请确保我理解 - 您想重写操作系统的 DNS 客户端,以便它使用您自己的协议和服务器解析名称?
-
是的。我的意思是,它不应该是,好吧.. 无论如何都很聪明,但我希望能够在网络浏览器中输入 fake.name 并让它在没有主机文件或任何东西的情况下解析
-
resolver(3),它使用/etc/resolv.conf -
谢谢,我会调查的:)
-
您可以安装一个实际的 DNS 进程并将其编辑为您想要的任何内容。
标签: networking dns protocols