如何使用 Python 从反向 DNS 查找中获取正确的主机名?
How to get correct Hostname from reverse DNS lookup using Python?
我需要:
- 从客户端请求中获取主机 IP(完成)
- 执行反向 DNS 查找(完成)
- 然后将生成的主机名与客户端 SSL 证书的主题备用名称 (SAN) 上的主机名进行比较。 (问题)
- 我需要比较 rdns 查找结果“https://knowledge.com”与客户端证书“https://knowledge.com”上显示的 SAN“[=46=” ]
如果我使用 this tool 和域名对一家公司进行手动反向查找,我将获得 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 查找的响应?
如果 DNS 会为名称 knowledge.com 提供一个 IP 地址,但不会为同一 IP 地址提供名称 knowledge.con,则无法从 DNS 获取它.
一个可能的原因是没有配置反向查找。 A记录(name-to-addr)的存在不需要相应的PTR记录(addr-to-name)。
就是这样。
我需要:
- 从客户端请求中获取主机 IP(完成)
- 执行反向 DNS 查找(完成)
- 然后将生成的主机名与客户端 SSL 证书的主题备用名称 (SAN) 上的主机名进行比较。 (问题)
- 我需要比较 rdns 查找结果“https://knowledge.com”与客户端证书“https://knowledge.com”上显示的 SAN“[=46=” ]
如果我使用 this tool 和域名对一家公司进行手动反向查找,我将获得 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 查找的响应?
如果 DNS 会为名称 knowledge.com 提供一个 IP 地址,但不会为同一 IP 地址提供名称 knowledge.con,则无法从 DNS 获取它.
一个可能的原因是没有配置反向查找。 A记录(name-to-addr)的存在不需要相应的PTR记录(addr-to-name)。
就是这样。