我正在开发一款产品,在某个时候我需要获取用于访问特定端口上的某些服务的域名。假设我有一个通过 Linux 网关访问互联网的计算机网络。我对端口 6208 感兴趣(它可以是任何端口)。
当此网络中的某人连接到[域名]:6208我想要一个应用程序,我将开发[域名]在閘口。
当连接到例如.example.com:6208,应用程序必须得到例如.example.com。
我可以在网关上做什么来获得这种行为?有没有办法使用现有工具来实现?我问的不是如何开发所引用的应用程序,而是如何/在哪里可以获取这些数据(域名)。鉴于网关运行的是 Linux 发行版,它一定有某种方法可以做到这一点。
那么,有人能给出提示吗?
答案1
根据您对@user2629636 的回复 - 即未检测到流量嗅探,可能的答案是“您不能”。 TCP 不知道与 IP 地址关联的域名。
根据您要执行的操作,您可能能够为每个域名分配一个唯一的 IP 地址(可能是 RFC1918 地址),然后使用 IPTables 触发脚本。实际上,IPTables 无法自行执行此操作,因此需要编写日志,然后使用“Fail2Ban”之类的东西对记录的条目进行操作作为触发器。很麻烦。
或者,当您连接到端口时,可以使用 Knockd 触发脚本。这意味着每个 IP 都需要一个不同的端口来工作 - 可能在路由器本身上,因此也可能是死路一条。
答案2
您可能希望在网关上使用 tcpdump 或 wireshark。使用 wireshark,您将获得更多详细信息。
如果流量实际上是 http 类型的流量,您可能需要如下内容:
tshark -d tcp.port==6208,http
从数据包中获取任何字段后,您应该能够将其插入到 mysql 插入语句等中。