在这里很难将我的头围绕在 IPv6 上。许多术语似乎针对企业级 IPv6 部署,讨论本地链路、站点本地、全球单播、范围等。关于真正小型网络(如家庭网络)的可靠信息并不多。我想检查一下我的想法并确保我得到了从 IPv4-speak 到 IPv6-speak 的正确翻译。
第一个问题是,IPv6 的 RFC1918 相当于什么?最初的搜索表明没有等价物。然后我偶然发现了唯一本地地址 (RFC4193),它指出所有 ULA 都应该分配前缀fc00
,然后是路由前缀中的 40 位随机数。这个随机数是为了“防止两个 IPv6 网络互连时发生冲突”——再次引用企业级功能。
如果我家里有一个小型本地 LAN,使用 编号192.168.4.0/24
,那么我在 IPv6 的 ULA 范围中的等效项是什么?假设我永远不会将该 IPv6 地址绑定到真实的互联网(路由器将对其进行 NAT 和防火墙),我可以在一定程度上忽略 RFC 并继续使用fc00::4:0/120
吗?
似乎任何地址fc00::/7
都可以全局路由。这是否意味着我需要额外的保护,以便我的路由器不会自动开始向全世界宣传这些私有 IPv6 地址?
第二个问题,这个链接本地的东西是什么?读数建议在地址fe80::/10
的最后 64 位(由接口的 MAC 地址组成)范围内使用默认分配的地址。似乎也需要,但我对它与企业网络相关的不断讨论感到恼火。
第三个问题,scope id 的作用是什么?似乎是与企业网络相关的另一个术语,尤其是在互连它们时,但在较小的家庭网络级别几乎没有解释。
我可以看到同时使用的范围 ID 和 CIDR 表示法吗?即,fc00::4:0/120%6
或者范围 ID 是否应该仅应用于单个 /128 IPv6 地址?
所以我在我的家庭网络上更多地使用 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 到 4 隧道)?ip6tables 是我在 Linux 中唯一的选择吗?
我还假设我被链接本地地址卡住了,对吧?没有办法摆脱它们吗?他们不可能记住......(也许这就是他的意思?)
因此,我在对 IPv4 地址进行排序时遇到了困境,并且不知道某些晦涩的网络文档中是否有固定规则。我是否只对原始地址进行直接排序(例如将 IP 地址转换为 32 位数字然后排序),我是否通过一些数学公式将 CIDR 因素考虑在内,我是否仅通过 CIDR 进行排序(好像我' m 比较网络大小而不是直接比较地址)?
即,正常数学,我们会做一些事情-1 < 0 < 1
来表示优先顺序。鉴于说,10.1.0.0/16
,172.16.0.0/12
,192.168.1.0/24
和192.168.1.42
,优先顺序是什么?