https://web.archive.org/web/20160528234959/https://wiki.freebsd.org/IPv6Only讨论仅支持 IPv6 而非 IPv4 的 FreeBSD 映像。不过,该页面已不再存在(因此是我的存档链接),而且我找不到任何有关此内容的最新信息。我的问题:今天,在任何现代 UNIX 或 Linux 系统上,是否有可能只支持 IPv6 而不是 IPv4,就像旧的 FreeBSD 映像那样?如果执行此操作的方法需要自定义内核或类似的工作,那也没关系。
我在其他地方看到过这个问题(所有日期都在我最初问这个问题之后):
答案1
只需构建 FreeBSD。
今天这是可能的,因为 FreeBSD 继续提供所使用的机制。
它是一组用于关闭或排除 IPv4 的内核配置和 makefile 选项。基本的就是nooptions INET
,但还要观察其他什么/usr/src/sys/conf/makeLINT.mk
做。还要观察什么/usr/src/sys/conf/NOTES
讲述了未同时启用 IPv4 和 IPv6 的连锁反应。
进一步阅读
config
。 FreeBSD 文件格式手册。 2016年2月21日。- 《配置 FreeBSD 内核》。FreeBSD 手册。 FreeBSD 文档项目。 2018年9月5日。
答案2
是的当然。一种方法是不在主机上配置任何(公共)IPv4 地址或服务。更极端的是(如果操作系统支持的话)删除 IPv4 支持,但这更复杂,可能不可能,而且如果可能的话可能会破坏(通常是较旧的)服务。详细信息会因操作系统而异,因为它们在网络配置方式上都非常不同。
例如,在 macOS 上可能会运行
sudo ipconfig set en0 NONE
sudo ipconfig set en0 AUTOMATIC-V6
禁用 IPv4 并启用 IPv6 en0
。 (lo0
可能仍然有 IPv4,但其他系统不需要知道这一点。)
然而,这可能不是很有用,因为许多东西在 IPv6 上不支持或不可用,而且不像几年前有人可以像他们为切换到 TCP/IP 所做的那样呼吁旗帜日......
答案3
这在 Linux 上当然是可能的。内核中的网络协议是可配置的,您可以删除所有 IPv4 内容。然而,大多数发行版都会期望 IPv4 并尝试使用它,因此您也必须自定义发行版的这一部分(如果只是为了消除错误消息)。
当然,问题是你这样做能得到什么好处。是的,如果没有 IPv4 协议,内核会小一些。但是,仅使用现有内核,并将所有内容配置为不接受 IPv4 地址,或者首先不使用 IPv4,要简单得多。