IPv6 的 IPv4 映射地址(IPv4-mapped IPv6)是指这种:
IPv4 地址:192.168.100.1
能够在 IPv6 写成 ::FFFF:192.168.100.1
正常来讲,应用程序只要关闭“IPv6 only”选项(当然了,操作系统也得支持),那么就可以用一个 IPv6 socket 同时处理 IPv4 的连接。
在目前活跃的各个操作系统当中,OpenBSD 早在 2012 年就十分明确地表明不支持这种操作,理由是“出于安全考虑”。
For security reasons, OpenBSD does not route IPv4 traffic to an AF_INET6 socket, and does not support IPv4 mapped addresses, where IPv4 traffic is seen as if it comes from an IPv6 address like “::ffff:10.1.1.1”. Where both IPv4 and IPv6 traffic need to be accepted, bind and listen on two sockets.
只不过,不但 Windows 和 Linux 都支持这种映射地址,就连同样是 BSD 家族的 FreeBSD 和 NetBSD 也一样支持,我实在想不出 OpenBSD 说的 security reasons 到底是什么样安全顾虑。
能够搜到的理由“解释”也就来自这两个地方(都是 2015 年的):
https://lwn.net/Articles/688462/ (这篇文章被人机翻成 https://linux.cn/article-7823-1.html )
还有 https://stackoverflow.com/questions/32051957/ipv6-why-are-ipv4-mapped-addresses-a-security-risk
大意就是,防火墙未必能够正确处理规则匹配。
只不过都已经这么多年了,规则匹配什么的早就已经弄好了呀。
所以疑问来了,真的有安全问题吗?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.