如何阻止程序使用 IPv4?

如何阻止程序使用 IPv4?

我有一个程序可以通过 IPv4(TCP 和 UDP)和 IPv6(TCP 和 UDP)进行通信。我想阻止该程序使用 IPv4。

我尝试了Windows防火墙:

在此处输入图片描述

除了阻止 IP 子协议(例如 TCP、UDP、封装的 IPv6、GRE)之外,它还会阻止IPv4 本身

换句话说,我需要阻止 IPv4:

  • IPv4/TCP
  • IPv4/UDP
  • IPv4/ICMPv4
  • IPv4/GRE
  • IPv4/L2TP

同时允许 IPv6:

  • IPv6/TCP
  • IPv6/UDP
  • IPv6/ICMPv6
  • IPv6/GRE
  • IPv6/L2TP

我可以阻止程序使用 IPv4 吗?

笔记:如果做不到,那么不要害怕将其添加为答案。对问题给出正确答案并不丢人。

答案1

请注意,下列操作并非每次都有效。

在 Windows 防火墙中为您的程序添加一条阻止规则,针对任何协议的远程范围 0.0.0.0 到 255.255.255.255。

如果程序设计如此,它将转而使用 ipv6。

如果您想要相反的操作,强制使用 ipv4,则可以阻止 ipv6 范围 :: 到 ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff

例如,这适用于更新 Visual Studio Community 2017,因为更新程序默认使用 ipv6,并且下载速度有时会严重降低。

答案2

除非客户端本身支持,否则无法使用 Windows 防火墙执行此操作。大多数应用程序将使用RFC 3484以确定在两种协议都可用的情况下使用的最佳协议。一个很好的解释是:

客户端应用程序如何知道使用 IPv4 还是 IPv6?

您的选择可以是:

  • 如果应用程序支持,则强制使用协议(例如,uTorrent 支持仅 IPV6 模式)
  • 使用支持协议偏好的第三方防火墙每个应用程序
  • 使用支持协议偏好的第三方防火墙基于端口

这是一个不寻常的要求,所以我不知道有任何第三方防火墙支持它。

相关内容