我们只希望允许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,代理等或是否有更好的方法来解决这个问题?
答案 0 :(得分:2)
通常,使用IPv6,所有主机都将使用全局地址。目标是恢复在IPv4中使用带有NAT的RFC 1918时丢失的IP的端到端连接。 IPv6没有NAT。
仅使用唯一本地地址寻址的主机将无法连接到外部世界。 IPv6允许(实际上需要)每个接口多个地址。您确定可以保证客户的主机将使用已配置的唯一本地(或任何其他特定)地址来尝试连接到您的产品。
如果您试图为他们削弱IPv6,您可能会失去客户。
许可证限制不是更合适吗?
听起来您需要更好地了解IPv6,因为有些事情并不直接从IPv4转换。