Tag: dns

C ++构建和发送DNS数据包

我正在使用C ++编写DNS解析器,构建DNS头文件给我带来了麻烦。 从我能够收集到的,标题可以通过结构构建。 typedef struct { unsigned short id; unsigned char qr :1; // 0 query, 1 response unsigned char opcode :4; // 0 standard query unsigned char aa :1; // authoritive answer unsigned char tc :1; // truncated message unsigned char rd :1; // recursion desired unsigned char ra :1; // recursion available unsigned […]

DNS解析器库,支持DNSSEC和/或实验性新RR类型

DNS解析器库中的最新技术是什么? 我对支持以下任何或全部的完整(非存根)解析器特别感兴趣:在一个请求数据包中进行多个查询,完成DNSSECvalidation,向应用程序返回有关DNSSECvalidation的详细信息,并且可以在没有太多黑客攻击的情况下处理实验性新RR。 异步查询很好但不是必需的。 首选的实现语言是C,C ++,Python或Javascript,但我会看一下(我真的不想知道你在INTERCAL中的DNS解析器,但是;-)一个可以在一个运行的纯JS实现支持WebSockets的浏览器会非常棒。

c / c ++中的DNS查找

我必须编写一个C / C ++程序,它有点像dig和nslookup:它必须知道任何站点的IP地址。 它应该像挖掘ww​​w.example.com MX +短命令那样做。 我无法想象如何做到这一点。 有任何想法吗?

C中的DNS客户端

我目前正在开展一个学校项目,要求我实现DNS客户端,而不使用任何库函数。 我已经到了发送DNS请求并收到回复的地步。 我在解析回复时遇到了困难。 我在char *数组中收到回复,我想将其转换为一些有意义的结构,我可以从中解析答案。 我浏览了RFC并阅读了有关数据包结构的内容,但在C中实现它会给我带来问题。 任何人都可以用C语言给我任何例子,或者用任何其他语言来解释这是如何完成的。 或者对书的任何引用也没关系。 额外细节: 所以,以下是我正在使用的结构。 struct result{ int type; struct res_ip_cname ip_cname; struct res_error error; struct res_mx_ns mx_ns; }; struct res_ip_cname{ char* lst; int sec; char* auth_flag; }; struct res_error{ char * info; }; struct res_mx_ns{ char * name; unsigned short pref; int sec; char* auth_flag; }; 我有一个char * buffer […]

在C中构建DNS代理

我想在C中构建一个简单的DNS代理,它接受来自UDP端口53的DNS查询,将查询转发到谷歌的DNS服务器TCP端口53进行查找,然后返回谷歌提供的答案。 是的,这是一个学校项目,我很困惑,我不知道从哪里开始。 谢谢你的帮助!!

如何使用getaddrinfo_a与glibc进行异步解析

一个经常被忽视的function,不需要外部库,但基本上没有任何文档。

C – 字节数组结构(dns查询)

我有这些结构: typedef struct dnsQuery { char header[12]; struct TdnsQuerySection *querySection; } TdnsQuery; typedef struct dnsQuerySection { unsigned char *name; struct TdnsQueryQuestion *question; } TdnsQuerySection; typedef struct dnsQueryQuestion { unsigned short qtype; unsigned short qclass; } TdnsQueryQuestion; 我从recvfrom有字节数组的dns查询。 我试图从字节数组获取结构,如下所示: TdnsQuery* dnsQuery = (TdnsQuery*)buf; printf(“%u”, dnsQuery->querySection->question.qtype); 为什么我得到错误解除指向不完整类型的指针? 我这样做了吗? 或者如何从该数组中获取dns查询结构? 我需要dns查询问题和类型。

c-ares指定DNS解析的网络接口

有没有办法可以设置DNS请求可以绑定到的网络接口。 我们有一个项目需要使用高优先级流会话通过一个接口和所有其他请求通过第二个接口。 示例:设置’eth0’,以便所有bes请求将通过’eth0’而不是’wlan0’。 我无法在c-ares中找到任何API(在ares_init_options()API中),它提供了设置界面的选项。 如果有办法解决这个问题,或者我错过了什么,你能告诉我吗? 谢谢,阿琼

使用resolv.h的名称解析器和IPv6

我编写或修改执行名称解析并需要对流程进行良好控制的程序。 所以我不使用getaddrinfo() ,我更深入地使用res_query() / res_send() / etc,记录在resolver(3)中。 虽然没有记录,但设置解析器的常用方法是更新_res.nsaddr_list 。 但是这个在resolv.h中定义的数组存储了struct sockaddr_in ,它只是IPv4地址。 (IPv6地址是struct sockaddr_in6 ,与系列无关的系统将使用struct sockaddr 。) 我正在寻找一种方式(最好是可移植的,至少在各种Unix中)告诉_res我也想要IPv6地址。 显然,很久以前,在FreeBSD中有一个具有这种能力的_res_ext但我在最近的FreeBSD 7中找不到它( grep _res_ext /usr/include/resolv.h什么也没发现)。 您仍然可以找到使用它的代码 (尝试使用Google Codesearch )。 感谢Alnitak,我注意到它现在显然是_res._ext而不是.res_ext 。 我想知道这些东西在哪里被记录或公布…我不知道_res._ext是多么便携。 我可以在Debian和FreeBSD上找到它。 似乎很少有程序使用它。

如何在C / C ++中构建自定义简单DNS服务器

我需要在C / C ++中构建一个自定义的简单非权威缓存DNS服务器。 任何指导? 链接? 样品? 谢谢!