netcat/socat 工作在哪一层(IP/TCP?)?

netcat/socat 工作在哪一层(IP/TCP?)?

我有这个问题是因为我想知道当我们使用netcat在3台机器(A->B->C)ssh隧道期间进行流量转发时,C是否有可能知道A的IP地址?

答案1

netcat是一个_application层工具。它在 OSI 堆栈的较高层(第 7 层)运行。因此,在简单的设置中,计算机 C 无法直接看到计算机 A; IP 流量的来源将显示为来自 B。在 IP 层,所有流量将看起来像是源自 B,因为netcat应用程序正在启动并建立连接。

然而OSI堆栈的应用受到限制;当您想到 VPN 和协议隧道时,可以在应用层(第 7 层)上路由 IP(第 3 层);现在事情变得更加混乱了。

所以答案取决于您的设置。

这只是传输层。应用层数据很容易泄露源地址。故C可以即使他们之间没有直接通信,也可以了解 A 的地址。

答案2

回答标题,netcat默认使用 TCP,但提供带有 -u 标志的 UDP 模式。socat可以使用多种协议,包括 TCP、UDP、SCTP,甚至 Linux 上的 netlink 套接字;它还提供原始 IP 套接字(但您必须是 root 才能使用它们)。

要回答你真正的问题,B 无法真正看出 A 的 IP 地址是什么。然而,底层协议可能会无意中泄露 IP 地址。例如,IRC 服务器可以公布它们真正监听的 IP,并且在某些情况下可能会让 HTTP 服务器泄漏 IP。通过仅侦听本地主机,然后将端口从本地主机转发到机器 B,然后从 B 转发到 C,可以缓解这种情况(除非通过服务器软件中可能的漏洞利用)。

相关内容