IPv6真的每个地址都能用吗


TL;DR: IPv6 子网内第一个地址是任播地址,没有需求,最好别用。

在网上冲浪的时候,经常看到过类似“IPv6 取消了子网号和广播号,所有地址都能用”这样的言论。也经常看到有人给自己的主机或路由器配上形如 2001:db8:1:2:: 的地址。那么,IPv6 真的每个地址都能用吗?

首先我们先限制一下讨论的范围,要去除各种特殊的地址,例如未指定地址 ::/128、本地回环地址 ::1/128、链路本地地址 fe80::/10 还有多播地址 ff00::/8 等,因为这些地址大家都知道有特定含义、不能乱用。这里说的都是一个普通的单播地址,即全球单播地址(Global Unicast Address,目前是 2000::/3)或者唯一本地地址(Unique Local Address,fc00::/7)范围内的子网的地址。

接着用最近流行的句式讲结论:能,但不是完全能

诚然,IPv6 中没有 IPv4 中子网的第一个地址是网络号不能用、最后一个地址是广播号不能用的规定。但在规定 IPv6 地址结构的 RFC 4291 中,介绍了一种特别的任播地址——子网路由器任播地址(Subnet-Router Anycast Address) 。这个地址似乎一直被人忽略,也很少有人提,所以知道的人并不多。这个地址就是子网的第一个地址,例如 2001:db8:2:33::/64 这个子网(范围为 2001:db8:2:33::2001:db8:2:33:ffff:ffff:ffff:ffff)中的子网路由器任播地址就是 2001:db8:2:33::2001:db8:3:4:5:6:7:8/125 这个子网(范围为 2001:db8:3:4:5:6:7:82001:db8:3:4:5:6:7:f)中的子网路由器任播地址就是 2001:db8:3:4:5:6:7:8

如果了解任播(anycast)的概念应该知道,任播是一组主机共享一个地址。对于一个分组,只有这一组主机中的一台会收到,然后做出一定的响应。子网路由器任播地址就是给需要和子网内任意一台(不是指定的一个,也不是所有的)路由器通讯这种场景所保留的。因此这个地址也是有特殊含义的,应当在特定情况下使用,而不是随意使用。

目前很多系统都支持子网路由器任播地址,例如 Linux。Linux 会在 IPv6 转发处于开启状态的时候,自动绑定上机器目前所有子网的子网路由器任播地址。虽然只有路由器才会转发 IPv6 报文,但是有些时候(尤其是我们这些网络技术爱好者),子网内某些机子很可能会打开它,例如需要给 Docker 配上 IPv6 支持的时候。这样的情况下,如果你想通过子网内的第一个地址访问路由器,就有可能会变成访问了你这台 Docker 主机。当然,你可以在网络设备(如交换机)上设置规则来限制除了你指定的路由器之外的主机响应子网路由器任播地址的邻居请求(Neighbor Solicitation)信息,但是你不应该在完全不知道这个知识去使用子网内的第一个地址。

另外,因为/127 大小的子网只有 2 个、/128 大小的子网只有 1 个地址。因此子网路由器任播地址不会在这两个尺寸的子网内起作用。说到这个也是很有趣的:最初,RFC 3627 以这个理由不让大家在路由器之间使用/127 大小的子网,因为这样的子网只有两个地址,第一个地址同时属于两台路由器,那就只有一个地址提供给单独一个路由器了。显然/127 大小的子网做路由器间互联是最合适的,因为方便计算且只有两个地址。于是后来 RFC 6164 要求子网路由器任播地址不能作用在/127 大小的子网中,这样就可以在路由器之间用/127 大小的子网互联了。原来的 RFC 3627 也在第二年被 RFC 6547 废除了。


年轻人的第一次信用卡被盗刷


2021 年 2 月 1 日 21 时 15 分,我正在妹妹的家中与其玩紧张刺激的黄金矿工,突然手机收到数条短信,听起来绝对不是什么简单的事情,于是我拿出手机阅读:95566,数条信用卡消费记录。我还没能仔细读完所有的几条消息的时候,中国银行的风控电话就进来了,向我询问刚才产生的预授权和取消,以及三笔交易是不是我本人完成的。我当场否认,银行那边接到我的电话以后也马上将卡片冻结了,但是已经造成了 549 英镑不到(按时汇折合人民币约 4666 元左右)的损失了。银行表示后续会有信用卡中心的客服另外联系我,让我跟随后面的指示进行操作。

// 点开我,里面还有许多内容!


构建 UEFI 启动的 OpenWrt 磁盘映像


在 Hyper-V 上第一代和第二代虚拟机有着一些差别,最显著的就是旧式 BIOS 启动和 UEFI 启动的区别,但还有其他的例如热插拔硬盘和网卡的区别。我一直以为是 OpenWrt 对 UEFI 启动支持不良,官方才一直没有推出 EFI 的磁盘映像的。因此,之前我的做法都是创建好一个 OpenWrt 虚拟机后都一次性加一堆网卡,以解决临时要加一个口的问题。昨天准备给家里的 OpenWrt 升级版本,就又想到了这个事情,就想试一试如果用 UEFI 启动能不能正常使用。

OpenWrt x86 的启动本身就是 GRUB 了,按理说如果内核支持,那么只要整一个 ESP 分区,然后整个 EFI 版本的 GRUB 进去,grub.cfg 复制过来以后按照老样子启动就可以了。试了之后,确实就这么简单就能启动并正常使用了,暂时也没发现什么问题,就让它冒烟测试吧。因为在调研的时候似乎没看到介绍这么做的教程,我就来水一篇博客了。

// 点开我,里面还有许多内容!


牛气冲天的新年红包


马上就是新的一年了,牛年的有趣的红包来了!快快点击参与吧→ https://hb.lohu.info

下面是一些你应该知道的事情:

  1. 这是一个类似 CTF 的闯关游戏,利用你的知识(现学也是可以的啦)解决所有题目,获得红包口令,进入支付宝领取红包。
  2. 你需要电脑上的工具才能愉快玩耍。
  3. 你拿到的所有答案都是八位数字,为了方便控制开始和结束时间,在支付宝领取时,前面需要加上一个“牛”字。如解题得到 66741003,那么最后的红包口令是“牛66741003”。
  4. 如果你是和别人一起完成的,希望你们能只领取一次,然后大家分。
  5. 本次活动时间从 2021 年 2 月 11 日 20 时开始,持续 24 个小时,如果红包都被提前领完,则游戏提前结束。
  6. 共有 2 个红包,第 1 个红包总额 58 人民币元,分 18 个;第 2 个红包总额 58 人民币元,分 18 个。红包领取规则均为“拼手气红包”。
  7. 游戏结束后也将在当前页面上放出题解。如有疑问也请通过博客的“关于我”页面上所述的联系方式联系。
  8. 最后祝大家,新年快乐!

活动结束后将在下面更新题解。题解已发布。

往期回顾


// 点开我,里面还有许多内容!


启动2021


不太平的 2020 刚刚演奏完了它的尾声,2021 的乐章翻开了。按照惯例呢,这篇文章应该是在 1 月 1 日写好并发布的,但是这次虽然 2020 年 12 月 31 日 0 点就开始写了,但 1 月 1 日白天我一直在忙没休息过,所以咕到了晚上 25 点才写完。回顾过去的一年,还真是不怎么顺利呢。COVID-19 的爆发与全球大流行贯穿了所有人这一年的始终,口罩、消毒水成了生活的常态。这一年,我的家里也遇到了一些不顺利的事情。不过好在能解决的事情都是小问题,以后一定会越来越好的。

因为疫情的原因,这一年我也因此减少了出门,取消了许多打算,所以只去了少数地方。这一年的跨年是在厦门完成的,也是第一次不在金华跨年。元旦几天与 lin_toto 一边拍照,一遍玩了厦门的一些地方,随后还一起回上海给同事拍婚纱。再就是年底去了两次的杭州了,倒不是去玩的,但是见到了好久不见的极好的朋友,十分开心。另外金华、上海、温州三个都是常见的出现点了,而且也没有去什么景点之类玩耍。

这一年完成了什么事情呢?首先是咕了两年的驾照,这一年暑假专门划了一块很长的时间来练车,开车还是蛮好上手的,也十分顺利地通过了科目三的路考和机考。其次是疫情期间也让我重拾了初中时候想过的业余无线电,学习后等到了秋天,浙江省协会重新开始组织考试的时候也顺利拿到了 A 类执照。再次是稀松平常的学习了,自己喜欢的方向研究了不少、也学了不少:主要学了的是 Junos OS 的操作、Juniper cli 的各种操作,一门新语言 Kotlin(因为 Android 开发课上老师不限制使用的语言,就顺便学了一下)。希望也能一直进步下去。

这一年也添置了一些大件,或者说较为昂贵的东西。首先是年初买了台 Rollei 35 SE,开始了胶片摄影。也因为开始玩胶片了,还购买了一台 Plustek 的胶片扫描仪。为了一些纸质文档的数字化备份工作,购买了一台扫描仪。除这些之外,还买了一架电钢琴,把三岁时候的梦想实现了一半(另外一半要学成之后才能实现)。因为一些特殊情况,今年我不得不成为了 APNIC 的大会员,比原定计划提早了好几年。为了降低家里服务器的能耗,也重新配了一台服务器,代替之前的电老虎 X5650。另外,这一年还听了两场现场音乐会。因为不可能经常花钱跑上海,所以只能去听特别喜欢的上海彩虹室内合唱团的演出。一次在 1 月 19 日、一次在 9 月 30 日。这两次光是门票就是千余元。12 月 31 日还有一场线上的音乐会,因为抢不到线下的票,不过线上直播对于音乐会来说也是一种创新的形式吧。不过可惜听完后的感觉是,收音不是很好,况且还有音画不同步的问题。

挖坑不填这一年也依旧在发生。SOHABlog 一年没有新进展、ib-rpc 移植只写了一半、Looking Glass 因为等着 ib-rpc 也一直没发布,还有一些天海的内部项目也没填。事情繁多,主要是上大学比较令人烦躁,是造成这个情况的原因之一。大项目没进展,但是也有一些好用的小工具写出来,比如报文撕裂者。而且作为工作,在洛谷还是产出了不少有意思的东西。11 月,大一的时候被老师花言巧语没抵抗力而答应下来的一个项目,获得了软件著作权证书并结题了。这也代表着学校里的事务也结束了,不得不说,大三的课惊人地多是我想不到的,这个学期感觉过得还是比较累的。但是过了大三就可以迎来自由,做自己的工作,这么一想还是有那么点生活动力的。

这一年是这辈子第一次一整年都有日记的,到今天已经是 600 多天了,虽然有时候会因为忙碌而攒好几天到一起写,但有了这个感觉自己也对生活热爱了一些。日记在一定程度上也让我觉得每一天都是确实有过的(除了光是摸鱼的那几天)。要说某些方面,我这一年开始觉得不能再继续直球下去了,毕竟都是 2 字打头的人了,有些事情确实发生了也没法强求。该留在心里就留在心里吧,自己偷偷想着就好了。

朋友的力量是强大的,非常感谢这一年年有陪伴我的朋友们,也希望新的一年能继续走。就像前文所述的,见到了好久不见的特别喜欢的好朋友,整个人都可以开心好久好久。那么就是一年一度的报菜名时间:感谢**(由于某些原因不能公布)、女儿、妹妹、lxm、蛋清、cyy、万呆呆、麻田哥哥、kkk、ltt、laosb、贺神、dd、beru、吴老板(foobar)、Gogo、点心、twz、wyy、胖次、洛谷的同事们(排名基本不分先后),以及在群里一起聊天吹水的诸位群友。虽然没有物理陪伴,但最后还是要感谢的是在心里陪我的某个谁。