在 iptables 中,我记录了某些公共 IP 地址...比如从不同工作站访问的网站,具体取决于目标端口号...所有这些实际上与问题无关,但我只是在这里说明,以便我的目标变得清晰。
现在我想分析数据...我只有 IP 地址...获取域名的最佳方法是什么。好的,我知道您可以使用 nslookup 和 dig,但显示的域名可能是 DNS 数据中的 A 记录,通常不是要查找的域名...
我对细节有点模糊...但我需要的是,例如,有人访问 cnbc.com,我查看记录的 IP 地址,然后我得到从 Amazon Web Services 到 facebook.com 的各种域名。记录 IP 的最接近的域名是 nbcuni.com...
是否存在某些“服务”、API、软件或第三方解决方案,可用于获取给定 IP 的“最接近”的可识别域名?
编辑:还有一个问题……监控系统似乎可以处理这些问题。代理系统(如下所述)无法区分指定的 URL 和所访问页面内容的 URL。或者可以吗?任何访问的 URL(明确指定为浏览器中指定的 URL 或间接指定为页面中显示内容的任何 URL)都将显示为访问的 URL。有没有办法区分?通过代理日志还是其他方式?
答案1
我不确定我是否了解全貌,但既然您正在撰写有关网站的文章,我认为您使用的工具并不完全适合这项任务。
我认为您在错误的级别寻找该信息(访问的域名):您应该有一个代理并分析其日志以收集该信息。
代理位于客户端“附近”,并且具有您正在寻找的准确且精确的信息。
透明代理无需任何客户端配置更改即可收集这些信息。
答案2
您无法仅使用 IP 地址日志轻松确定用户在其浏览器的 URL 栏中输入的内容:您无法判断访问者是104.16.13.13
通过输入内容到达那里的aviation.stackexchange.com
(tex.stackexchange.com
您能确定的最好结果是它是一个 CloudFlare IP 地址)。
为了获取所需信息,您需要同时交叉引用 DNS 服务器上的查询,或者捕获整个数据包并在协议数据(如 HTTP 请求)中查找泄露主机名的内容。后者很容易被挫败:只需通过 https 或其他加密传输访问网站即可。
给定一个 IP 地址,您所能做的最好的事情就是获取反向 DNSPTR
记录(dig -x
或等效记录),或者网络块和网络块所有者信息(通过whois
),但您已经拒绝了这些信息,因为它们不足以满足您的需求。
答案3
您在错误的层上处理了这个问题。确切地说,您应该使用第 7 层,但您却使用第 4 层。
不要在 iptables 中记录 TCP 连接。相反,捕获 HTTP 流量并检查客户端发出的请求中的 Host 标头。