过滤IPv6 ICMPv6消息

所以我在家庭networking上多了一些IPv6,而且我做了一些老式的事情 – build立静态地址等等。 这意味着我并不需要或不关心通过各种ICMPv6消息内置到IPv6中的所有自动configuration。 但是运行wireshark并且只能捕获IPv6stream量,我的两个运行Linux的IPv6系统被certificate是很有趣的东西。 他们不断地交换“Neighbor Solicitation”,“Neighbor Advertisement”和“ICMPv6 Multicast Listener Report”报文,他们都在我为每台机器设置的静态分配的ULA地址和自动configuration的链路本地地址。

我的问题是,我怎么能在Linux中禁用这些? 我已经通过'netsh'命令发现了几个Windows指南(这让我感到惊讶 – Windows在这方面似乎比Linux更可调)。 到目前为止,似乎我在Linux中的唯一select是使用ip6tables来阻止特定的ICMPv6消息types。 但是,从RFC4890来看,这意味着如果IPv6主机要成功joinIPv6networking,就不能阻止这些消息。

我对IPv6协议的阅读表明,它受到大型企业networking面临的问题的严重影响。 协议工程师似乎很less考虑小型私人networking。 如果你是一个大公司或其他类似的企业networking的系统pipe理员,这很好,但是如果你只是试图在家庭networking上玩这个协议来学习它,那么这个人很烦人。 我的学习方法意味着build立像我的IPv4networking这样的基础,然后根据需要启用function。

所以我问专家,我应该在Linux和Windows主机上禁用这三种消息types吗? 如果我这样做会严重破坏我的内部IPv6设置吗? 当我到达这个阶段时,它将如何影响外部IPv6(我的ISP还没有为客户分配IPv6地址,所以没有外部IPv6路由,并且没有6对4隧道)? ip6tables是我在Linux中唯一的select吗?

我也假设我坚持链接本地地址,对不对? 没办法摆脱他们? 他们不可能背诵…(也许这是他的意思?)

禁用IPv6的ICMP可以完全破坏它。 它在v6中的使用比v4多了很多 。 它用于错误报告,邻居发现(如你已经发现的),以及更多。

通过阻止任何级别的ICMPv6,您可以严重阻碍IPv6的工作能力。 有一个(简短的) wikipedia arcticle和正常非常全面的RFC 。

要获取全球地址,您可以使用6to4; 您将获得全球v4地址的翻译作为v6地址。 缺点是你需要通过一个6to4隧道节点; 它们的范围是“慢”和“痛苦慢”,取决于你接近节点(ping 192.88.99.1找出来;这是应该是你最接近的端点的任播地址)。 足够好,以获得testing和学习的实时链接..但就是这样。

就ICMPv6而言,Mark已经很好地覆盖了它。 我会补充一点:不要太在意。 想想你现在用来debugging的所有闲话 – ARP,DHCP; 如果你有Windows系统,那么netbios,电脑浏览器和teredo; 组播垃圾如SSDP / DNLA / UPnP。 你不习惯这些ICMP消息,但它们是IPv6工作的重要组成部分。这就是为什么你要设置它来学习的第一个地方!