![Windows 应用程序侦听 IPv4 UDP,但不侦听 IPv6 UDP](https://linux22.com/image/791020/Windows%20%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E4%BE%A6%E5%90%AC%20IPv4%20UDP%EF%BC%8C%E4%BD%86%E4%B8%8D%E4%BE%A6%E5%90%AC%20IPv6%20UDP.png)
我已经设置了一个 Windows Server 2022 AWS EC2 实例。我安装并测试了一个仅在 Windows 上运行的应用程序。
设置 EC2 实例时,我同时启用了 IPv4 和 IPv6。AWS 需要 IPv4,而我的计算机只有 IPv4 IP 地址(WAN)。
但是,该软件仅监听 IPv4 地址,而不监听 IPv6 地址。(使用“netstat -aon”检查)。
我使用了 2 个端口。一个是 TCP 端口,另一个是 UDP(两个端口号都不同)。
我只需要测试 IPv6 的传入连接。
由于它仅在 IPv4 上监听,因此我使用 Windows 服务器上的 PortProxy 将 IPv6 IP 映射到 IPv4 IP。
netsh interface portproxy add v6tov4 listenaddress=:: listenport=1234 connectaddress=127.0.0.1 connectport=1234
现在,它可以映射来自 IPv6 地址(例如远程 IPv6 连接)的传入数据并将其代理到 IPv4 IP 地址(内部),并且运行良好。
但是当我对 UDP 执行相同操作时,它不起作用。根据我的研究,UDP 不适用于 PortProxy。
有人知道如何将 UDP 从 IPv6 代理到 IPv4 IP 吗?
或者,我如何在不使用代理的情况下在本机执行此操作?是软件导致端口仅侦听 IPv4(编写该软件的软件公司需要在其代码中启用 IPv6),还是我在服务器上执行了某些操作导致它不侦听 IPv6?
答案1
查看 AWS 文档,了解如何为接口分配 IPv6 地址,以及检查其是否具有 IPv6
为实例分配 IPv6 地址 如果您的 VPC 和子网具有与之关联的 IPv6 CIDR 块,您可以在启动期间或启动后为实例分配 IPv6 地址。IPv6 地址是从子网的 IPv6 地址范围分配的,并分配给设备索引为 eth0 的网络接口。在实例启动期间分配 IPv6 地址 按照步骤启动实例,并在配置网络设置时选择自动分配 IPv6 IP 选项