正在检测专用IPv6地址C#

本文关键字:地址 IPv6 专用 检测 | 更新日期: 2023-09-27 18:29:11

我们只想允许http连接到本地网络上的产品,以防止客户公开托管产品并允许从公共IP地址进行连接。

我们目前这样做的方式是查看请求的用户主机地址,并过滤掉任何非专用IP地址。

对于IPv4,这似乎相对简单,我们只允许匹配以下内容的IP地址:

127.0.0.0/8 loopback
10.0.0.0/8 private
172.16.0.0/12 private
192.168.0.0/16 private
169.254.0.0/16 link-local

此外,对于IPv6,我们只允许匹配以下内容的IP地址:

::1/128 loopback
fc00::/7 unique-local (private)
fe80::/10 link-local     

到目前为止,这一切似乎都适用于有限的测试用例。。。

因此,问题是:是否有任何边缘情况不在此范围内,例如VPN、代理等,或者是否有更好的方法来解决这个问题?

正在检测专用IPv6地址C#

通常,使用IPv6时,所有主机都将使用全局地址。目标是恢复在IPv4中使用RFC 1918和NAT时丢失的IP端到端连接。IPv6没有NAT。

仅使用唯一本地地址寻址的主机将无法连接到外部世界。IPv6允许(实际上需要)每个接口有多个地址。您确定能够保证客户的主机将使用配置的唯一本地(或任何其他特定)地址来尝试连接到您的产品吗。

如果你试图削弱IPv6,你可能会失去客户。

许可证限制不是更合适吗?

听起来你需要更好地理解IPv6,因为有些东西并不能直接从IPv4转换过来。