gpt4 book ai didi

linux - 无法使用 UDP 从我的 VirtualBox debian linux VM 发送或接收数据包

转载 作者:太空宇宙 更新时间:2023-11-04 08:59:20 34 4
gpt4 key购买 nike

为了简单起见,我将向您推荐http://en.wikipedia.org/wiki/Berkeley_sockets以及那里的 UDP 服务器和客户端源代码。

我正在尝试使用 UDP 协议(protocol)将数据包发送到 linux VirtualMachine 服务器程序。我的主机和 VM 都能 ping 通;所有发送的数据包都是双向接收的。但是我的服务器程序要么没有接收到任何数据包,要么根本就没有打印。无论哪种方式,它都不会打印我从主机发送给它的任何数据包的确认信息或内容。

我手边没有另一台 PC,但是如果我将它们放在同一台计算机上并且 Wireshark 报告数据包正在发送,那么这两个程序可以很好地通信。

我的问题分为三部分:首先,我该如何解决这个问题。其次,为什么主机和 VM 会收到彼此的 ping 消息,但不会将这些消息传递到我的 UDP 系统两端的开放套接字?最后,您对这个问题的形式或意图有什么建议吗?

编辑:我试过使用 NAT 和桥接适配器网络设置运行我的 VM。但是,我现在无法概念化这些设置与我的问题之间的关系。

最佳答案

使用 NAT 网络时,VM 获得一个私有(private) IP 地址(通常为 192.168.x.y),主机对传出数据包进行 NAT 转换,并将回复数据包转换回 VM。在这种模式下,所有通信都必须由 VM 发起——外部机器只能向 VM 发送数据包以回复 VM 发送给它们的数据包。在网络上,数据包看起来像是来自/去往某个不相关端口上的主机。

通过桥接网络,虚拟机获得一个直接连接到主机网络设备的设备。在此模式下,VM 显示为与主机位于同一网络 LAN 中的独立机器,具有自己的 IP 地址。您需要为其分配一个 IP 地址,就像主机分配一个 IP 地址(通常通过 DHCP)一样。

在任何一种情况下,要调试正在发生的事情,请在主机上使用 tcpdump/wireshark 来监视主机的网络设备。从 VM 发送数据包,您应该在跟踪中看到它们——在 NAT 情况下,它们似乎来自主机和不同的端口,并且在桥接案例。

一旦看到,您应该能够将数据包发送回 VM,但在 NAT 情况下,它们必须来自原始数据包发送到的地址/端口。

VirtualBox 桥接网络在 wifi 设备上无法正常工作存在一些已知问题;通常,您只能将桥接网络与有线网络结合使用。

关于linux - 无法使用 UDP 从我的 VirtualBox debian linux VM 发送或接收数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24874081/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com