Warm tip: This article is reproduced from serverfault.com, please click

ip address-如何使用Python从反向DNS查找中获取正确的主机名?

(ip address - How to get correct Hostname from reverse DNS lookup using Python?)

发布于 2020-12-11 01:20:15

我需要:

  1. 从客户端请求中获取主机IP(DONE
  2. 执行反向DNS查找(DONE
  3. 然后将生成的主机名与客户端SSL证书的使用者备用名称(SAN)上的主机名进行比较。问题
  • 我需要比较rdns查找结果为“ https://knowledge.com”与客户端证书“ https://knowledge.com”上显示的SAN。

如果我使用此工具和域名在公司上进行手动反向查找,则会获得IP地址:

在此处输入图片说明

到目前为止,这是我在Python中所拥有的:

import socket

request_ip = xxx.xxx.101.75 # Full IP address actually used

def reverse_dns(request_ip):
    if socket.inet_aton(request_ip):
        try:
            r_dns = socket.gethostbyaddr(request_ip)
        except:
            logging.error('######## Host IP reverse DNS lookup failed. ########')
    else:
        logging.error('######## Host IP is not a valid IP address. ########')
    return r_dns

reverse_dns = reverse_dns(request_ip)

问题:

  • 从rdns查找返回的列表不包含实际的主机名,而是一个托管公司(?)和IP本身。

('xxx-xxx-101-75.somedata.com', [], ['xxx.xxx.101.75'])

  • 如何获得实际的主机名(“ https://knowledge.com”)作为来自反向DNS查找的响应?
Questioner
ericOnline
Viewed
0
a guest 2020-12-12 06:49:27

如果DNS将为你提供一个名称Knowledge.com的IP地址,但不会为你提供该相同IP地址的名称Knowledge.con,则无法从DNS获得它。

可能的原因是未配置反向查找。A记录(名称到地址)的存在不需要相应的PTR记录(名称到地址)。

就是那样子。