php中dns记录格式函数,PHP 网络 函数 获取指定主机的DNS记录_编程学问网

Result = Array

(

[0] => Array

(

[host] => php.net

[type] => MX

[pri] => 5

[target] => pair2.php.net

[class] => IN

[ttl] => 6765

)

[1] => Array

(

[host] => php.net

[type] => A

[ip] => 64.246.30.37

[class] => IN

[ttl] => 8125

)

)

Auth NS = Array

(

[0] => Array

(

[host] => php.net

[type] => NS

[target] => remote1.easydns.com

[class] => IN

[ttl] => 10722

)

[1] => Array

(

[host] => php.net

[type] => NS

[target] => remote2.easydns.com

[class] => IN

[ttl] => 10722

)

[2] => Array

(

[host] => php.net

[type] => NS

[target] => ns1.easydns.com

[class] => IN

[ttl] => 10722

)

[3] => Array

(

[host] => php.net

[type] => NS

[target] => ns2.easydns.com

[class] => IN

[ttl] => 10722

)

)

Additional = Array

(

[0] => Array

(

[host] => pair2.php.net

[type] => A

[ip] => 216.92.131.5

[class] => IN

[ttl] => 6766

)

[1] => Array

(

[host] => remote1.easydns.com

[type] => A

[ip] => 64.39.29.212

[class] => IN

[ttl] => 100384

)

[2] => Array

(

[host] => remote2.easydns.com

[type] => A

[ip] => 212.100.224.80

[class] => IN

[ttl] => 81241

)

[3] => Array

(

[host] => ns1.easydns.com

[type] => A

[ip] => 216.220.40.243

[class] => IN

[ttl] => 81241

)

[4] => Array

(

[host] => ns2.easydns.com

[type] => A

[ip] => 216.220.40.244

[class] => IN

[ttl] => 81241

)

)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用函数`vnet_dns_resolve_name`和`vnet_send_dns4_reply`来构造节点解析DNS包并进行回复,你需要按照以下步骤进行操作: 步骤一:导入相关的头文件和库 ```c #include <vnet/vnet.h> #include <vnet/ip/ip.h> #include <vnet/dns/dns.h> ``` 步骤二:编写函数来处理DNS请求和生成回复 ```c static void handle_dns_request(vlib_buffer_t *pckt) { dns_header_t *dns_hdr; dns_query_t *dns_query; dns_rr_t *dns_rr; vlib_main_t *vm = vlib_get_main(); // 获取DNS头部 dns_hdr = vlib_buffer_get_current(pckt); // 获取DNS查询 dns_query = (dns_query_t *)(dns_hdr + 1); // 构造回复 dns_rr = vnet_dns_resolve_name(vm, dns_query->name); // 设置回复头部 dns_hdr->qr = 1; dns_hdr->aa = 1; dns_hdr->ancount = clib_host_to_net_u16(1); // 设置回复查询 dns_rr->name = dns_query->name; dns_rr->type = dns_query->type; dns_rr->class = dns_query->class; dns_rr->ttl = clib_host_to_net_u32(3600); dns_rr->rdlength = clib_host_to_net_u16(4); dns_rr->rdata[0] = 192; // 回复的IP地址,这里假设为192.0.2.1 dns_rr->rdata[1] = 0; dns_rr->rdata[2] = 2; dns_rr->rdata[3] = 1; // 发送回复 vnet_send_dns4_reply(vm, pckt); } ``` 步骤三:注册处理DNS请求的函数 ```c VLIB_REGISTER_NODE(dns_reply_node) = { .function = handle_dns_request, .name = "dns-reply", .type = VLIB_NODE_TYPE_INTERNAL, }; ``` 步骤四:在需要解析DNS的地方触发处理函数 ```c vlib_buffer_t *pckt = vlib_get_buffer(vm, bi); vlib_node_set_next(vm, dns_reply_node.index, next_index); vlib_node_increment_counter(vm, dns_reply_node.index, DNS_REPLY_ERROR, 1); vlib_buffer_advance(pckt, sizeof(ethernet_header_t) + sizeof(ip4_header_t) + sizeof(udp_header_t)); vlib_buffer_advance(pckt, sizeof(dns_header_t) + sizeof(dns_query_t)); handle_dns_request(pckt); ``` 请注意,以上代码片段仅为示例,实际使用时可能需要根据具体的应用场景进行适当的修改和调整。另外,还需要确保在构造回复前已经正确地获取到了DNS查询,并且回复的IP地址、域名等信息是正确的。 希望这能帮到你!如果还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值