Soha Jin 发布的文章


壬寅虎年的新年红包


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

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

  1. 这是一个解谜游戏,利用你的知识(现学也是足够的啦)解决所有题目,获得红包口令,口令可进入支付宝领取红包。
  2. 你应该需要电脑才能愉快玩耍。
  3. 你拿到的所有答案都是八位数字,为了方便控制开始和结束时间,在支付宝领取时,前面需要加上一个“虎”字。如解题得到 20220202,那么最后的红包口令是“虎20220202”。
  4. 如果你是和别人一起完成的,希望你们只领取一次,然后再分。
  5. 本次活动时间从北京时间 2022 年 1 月 31 日 20 时开始,持续 24 个小时。如果红包被提前领完不会补发。
  6. 共设 3 个红包,每个红包之间相互独立,也就是说你不需要解决所有问题就能拿到一部分红包。所有线索均可在本页面中找到。
  7. 3 个红包数额分别为:总额 68 人民币元,分 58 个;总额 58 人民币元,分 32 个;总额 58 人民币元,分 28 个。红包领取规则均为“拼手气红包”。
  8. 游戏结束后也将在当前页面上放出题解。如有疑问也请通过博客的“关于我”页面上所述的联系方式联系。
  9. 最后祝大家,新年快乐!

活动结束后将在下面更新题解。已更新,请看下方的题解。

往期回顾

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


2022 不会是 2020 too


那么,时间是……2022年的1月1日,0点11分。这么快就迎来了新的一年,2021年的跨年仿佛没过去多久,一下子就又是一年。和几个朋友发完祝福以后,开始提笔(提键盘?)写下这些字。有人说2022年用英语来读是“2020 too”,不过我不觉得。我希望一切都会是新的开始,新的起点。

过去的2021似乎也是平平淡淡的一年,没有什么特别重要的事情,不太知道该从哪里开始下笔。那么就从学习开始好了。毕竟就在刚刚过去的12月30日,我回学校进行了毕业设计替代的答辩,第二天也就出了结果,是“良好”(这批最高也只有良好)。这个替代项目是之前的国家级大创项目,是顺利结题了的,所以昨天答辩也没有啥问题,我觉得我的表现还是挺好的。那么接下来就是做一下外文翻译和文献综述就可以顺利毕业啦。上半年是大三下半学期,没啥特别的,就是普通的上课影响学习时间;下半学期则是已经没课了,所以我11月(没错我从7月放假在家摸到11月)跑到了上海,开启了沪漂的社畜生活。

经济上的话,今年发生了一件大事,就是2月1日信用卡被盗刷了时汇折合人民币四千六百多的英镑。喜提了人生第一次报警,也给为了偶尔的大额付费打开限额而忘了关回去的自己提了个醒。最后花了几个月的时间,收单行那边争议成功了,也就不用自己出这笔钱了。其他经济方面的事的话,反正天上没有掉钱,我也没有中大奖,要花钱的地方还是不少。

今年的各种兴趣上,比如网络,基本没大的动作,反正还是天天用自己的ASN实名上网呗。不过对于Juniper及其自动化脚本的配置、编写与使用是越来越熟练了,下半年的时候还和朋友从美国淘了廉价的NFX250回来替换SRX220(结果运费比机器本体还贵不少)。年末的时候还要感谢一个朋友支持,让我作为外援参与了他们的网络NOC工作,摸到了一些有趣的网络,也积累了一些奇妙的经验。

今年技术上没啥长进,编程语言只多会了一个DSL:Nix。因为之前了解过一点点,加上曹老师有段时间天天传教,正好又打算改进一下洛谷评测机(Nix确实比较适合评测的场景),于是就钻研并针对情景写了一些Nix。写完后咕了好几个月,最后在11月NOIP结束后上线了使用Nix管理环境的评测机。今年还亲手关停了一个网站:OI in Hand,作为天海目前唯一一个较大的公开项目,它其实在2018年就已经没有继续开发、在两三年前就已经差不多失去了继续存在的意义。但是它从2013年开始带给我、cyy等人的开发经历使我们受益匪浅,我当时倾注了中学时代大量的心血于其上,现在回想起来,还是很开心的。

今年也还是继续参与了FRC,在疫情的大环境下,正赛还是没能比,但是杭州的RCC还是有的。我还是跟着梁博士的队一起玩,但是已经不再年轻,失去了肝机器的精力,只能打打散工,帮梁博士处理一些事情以及感受赛场上年轻的气氛。另外,今年我抽空考取了业余无线电的B类照,也就是可以上短波了。在考之前一直用着今年从毓彦手中收来的IC-705,蹲在50MHz的波段和对岸的太君们通联。

8月底9月初,为了办一些天海的事情,我去了长沙。在长沙我第一次见到了麻田哥哥,刚好那几天他家里又特热闹,因此我也赶巧认识了麻田哥哥的一个姐姐及其他几个亲戚,都是很好的人。这次出行差不多是2020年疫情爆发以来第一次出门游玩(姑且算是游玩吧),在办事之外空闲的日子里也简单玩了一下长沙,走了走毛爷爷写下《沁园春·长沙》的橘子洲,喝了只在朋友的空间里见过的茶颜悦色,度过了非常快乐的一周。

去了上海以后,我就有机会去听各种音乐会了,不然专门为了听音乐会跑上海还是挺贵的。虽然我一直在期待这一点,但是年末的两个月因为洛谷、毕设、答辩以及其它项目的各种繁琐事情未能抽出时间,不过来日方长,在2022年去听。本来还买了彩虹合唱跨年音乐会的门票,不过因为毕设替代答辩等事情跨年不在上海,就在闲鱼上出掉了。达成了年轻人第一次在闲鱼卖东西的成就。

一边慢慢回想一边写,一下子就是一点半了。写到最后,我要感谢一下过去的一年陪伴我的家人朋友们,非常感谢有你们,也希望新的一年能继续走。接下来就是报菜名的环节了:**(和往年一样不能公布)、女儿、妹妹、**(暂不想透露)、lxm,Gogo、kkk、ltt、laosb、点心、twz等朋友,cyy、万呆呆、麻田哥哥、Jack、猴哥、贺神、dd、beru、吴小板、樵老师、曹老师等foobar院同事,洛谷的同事们,wyy、林儿等同学(排名基本不分先后),你们和我一起玩、说了不少话,给我带来了不少快乐,谢谢你们。


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 磁盘映像


请注意,本文中的方法已经不再被建议使用。因为在 2021 年 9 月 5 日,随着 OpenWrt 21.02 的释出,官方已经正式开始提供支持 EFI 的镜像,只需要下载带 -efi 后缀的即可,如 generic-ext4-combined-efi.img.gz

可惜这篇文章只活了半年就结束了它的使命(主要还是我咕,不然早就可以出现了)


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

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

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