因此,我在家里的网络上更多地使用 IPv6,而且我做的事情有点过时了——设置静态地址等。这意味着我并不真正想要或关心通过各种 ICMPv6 消息内置到 IPv6 中的所有自动配置。但是运行 wireshark 并仅捕获 IPv6 流量,我的两个运行 Linux 的 IPv6 系统被证明是喋喋不休的小东西。它们不断交换“邻居请求”、“邻居通告”和“ICMPv6 多播侦听器报告”数据包。它们在为每台机器设置的静态分配的 ULA 地址和自动配置的链路本地地址上执行此操作。
我的问题是,如何在 Linux 中禁用这些功能?我通过“netsh”命令找到了几个适用于 Windows 的指南(这让我很惊讶——Windows 在这方面似乎比 Linux 更具可调整性)。到目前为止,似乎我在 Linux 中唯一的选择是使用 ip6tables 来阻止特定的 ICMPv6 消息类型。但是,查看 RFC4890,它们暗示如果 IPv6 主机要成功加入 IPv6 网络,则不能阻止这些消息。
我对 IPv6 协议的解读表明,它深受大型企业网络所面临的问题的影响。协议工程师似乎很少考虑小型私有网络。如果您是大型企业或其他此类企业网络的系统管理员,这很好,但如果您只是“某个人”试图在家庭网络上使用该协议来学习它,那就有点烦人了。我的学习方法是建立类似 IPv4 网络的东西作为基线,然后根据需要启用功能。
因此,我请教专家,我是否应该在 Linux 和 Windows 主机上禁用这三种消息类型?如果禁用,是否会严重破坏我的内部 IPv6 设置?当我到达该阶段时,这会如何影响外部 IPv6(我的 ISP 尚未为客户分配 IPv6 地址,因此目前还没有外部 IPv6 路由,也没有 6-to-4 隧道)?ip6tables 是我在 Linux 中唯一的选择吗?
我还以为我被链接本地地址困住了,对吧?没有办法摆脱它们吗?它们不可能记住……(也许这就是他的观点?)
答案1
禁用 IPv6 的 ICMP 可以完全破坏它。它用于很多v6 比 v4 包含更多内容。它用于错误报告、邻居发现(正如您所发现的)等等。
通过在任何级别阻止 ICMPv6,您可以严重阻碍 IPv6 执行其工作的能力。有一个(简短的)维基百科上有相关文章和正常情况一样非常全面的RFC。
答案2
要获取全局地址,您可以使用 6to4;您将获得全局 v4 地址作为 v6 地址的转换。缺点是您需要经过 6to4 隧道节点;它们的速度介于“慢”和“非常慢”之间,具体取决于您与节点的距离(ping 192.88.99.1 以找出答案;这是应该是您最近的端点的任播地址)。足以获得用于测试和学习的实时链接……但仅此而已。
至于 ICMPv6,Mark 已经讲得很好了。我再补充一点:不要为此感到压力。想想你目前习惯忽略的所有闲聊 - ARP、DHCP;如果你有 Windows 系统,那么还有 netbios、计算机浏览器和 teredo;多播垃圾,如 SSDP/DNLA/UPnP。你不习惯这些 ICMP 消息,但它们是 IPv6 工作方式的重要组成部分……这就是你首先要设置它来学习的原因!