【问题标题】:Localhost server in loopback does not answer incoming SYN环回中的 localhost 服务器不响应传入的 SYN
【发布时间】:2017-03-05 21:13:13
【问题描述】:

我有一个在 localhost (127.0.0.1) 中运行的 TCP 服务器,我试图通过将 SYN 数据包注入环回接口来连接服务器,但服务器没有响应它们。这些数据包具有我的 Internet 适配器的以太网接口的源 IP(而不是本地 IP)。

我在 Wireshark 中观察到发送到我的环回服务器的 SYN 数据包,但服务器没有用 SYN/ACK 应答它。我想是因为IP源不是127.0.0.1,比如192.168.1.24。

如果我打开浏览器并连接到我的本地主机服务器,它工作正常,但我使用的源 IP 是 127.0.0.1,目标 IP 也是 127.0.0.1;数据包之间的唯一区别是源 IP。

我想通过使用不同于 127.0.0.1 的 IP 源地址与我的环回服务器 (localhost) 建立 TCP 连接。这可能吗?

例如,从 192.168.1.24 到 127.0.0.1 的 Loopback TCP SYN 数据包应该由 loopbackserver 应答?

感谢和问候!

【问题讨论】:

    标签: interface ip wireshark loopback winpcap


    【解决方案1】:

    您可以通过Npcap Loopback Adapter 向本地主机发送数据包并从对方(例如同一台机器上的进程)获得响应。一个例子是 Nmap,Nmap 使用Npcap Loopback Adapter 来扫描 localhost 的端口。命令是:nmap -v -A 127.0.0.1。 Nmap 是开源的here,所以你可以看到它的实现代码。如果觉得 Nmap 太复杂,可以看 Npinghere 的源码,Nmap 自带的 ping 工具。 Nping 在 ping localhost 时也使用Npcap Loopback Adapter,这与 Windows 提供的原始 ping 的工作方式不同。

    使用本地适配器之一的 IP 或使用 127.0.0.1 应该相同。你可以运行 Nmap 来测试它。不管怎样,使用 127.0.0.1 是最好的,Npcap 建议在与 localhost 对话时使用。

    所以我认为这个问题仍然与你自己的实现有关。

    【讨论】:

      【解决方案2】:

      服务器bind() 是否使用INADDR_LOOPBACK?如果是这样,您可以尝试将其更改为 INADDR_ANY 以查看是否有帮助。另见man 7 ip

      (这些链接显然是特定于 Linux 的;如果您的平台是其他平台,那么请参阅适用于您的系统的文档。例如,如果您使用的是 Windows,那么可能请参阅 https://msdn.microsoft.com/en-us/library/windows/desktop/ms737550(v=vs.85).aspx。)

      【讨论】:

        【解决方案3】:

        我解决了这个问题,非常感谢您的回答。

        问题有点傻,我试图用不在环回范围内的 IP 源地址与环回服务器 (localhost) 建立 TCP 连接,环回网关:127.0.0.1,环回网络掩码:255.255 .0.0;它不能接受来自不在 127.0.X.X 范围内的 IP 源地址的数据包;如果我做 NAT 并将数据包从例如 192.168.1.154 转换为 127.0.1.154 数据包被服务器接收并且我可以建立服务器连接,我不知道我以前是怎么没有意识到的。

        谢谢你的时间,问候!

        我也认为最好将服务器绑定到其他虚拟网络适配器而不是环回,我正在研究这个:https://github.com/Microsoft/Windows-driver-samples/tree/master/network/ndis/netvmini/6x

        创建一个微型端口驱动程序并将服务器绑定在那里会很好,我们将拥有拥有自己的网关和网络掩码的优势,并且该层将是以太网而不是 BSD 环回。你的意见对我来说会很有趣。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-07-21
          • 2020-10-16
          • 2021-12-03
          • 2016-04-11
          • 1970-01-01
          相关资源
          最近更新 更多