这周没啥大事。
周三时候导员发通知,有个华为实习生的宣讲会,但是跟我必修课冲了,加上在校外,于是遗憾错过。
周末就是清明。
不愧是“清明时节雨纷纷”,这周几乎下了一周雨。神奇的是周六(清明前一天)是大晴天,周日(清明)傍晚开始才下了中雨。
周末两天出勤打 mai,没推什么分,基本上是在复健。
神奇的是放置一个月之后,第一天白花一轮直接推 100.3 鸟,第二天推到 100.5 鸟加。
这下解释不清了.png
日常打开 DN42 Looking Glass 的时候发现 hkg-dog-darell 没法连接到 DN42 网络,发现从 hkg-dog-darell 没法通过 DN42 IP 和 Wireguard ping 通 lax-rn-riose,但是反过来却可以。检查配置之后神秘发现 lax-rn-riose 的防火墙居然没有放通 Wireguard 的端口。但是配置文件里我有写 AllowedUDPPorts = [ openedPorts ]; 来放通的。
检查之后发现是 openedPorts 列表的计算有问题。
之前的写法:
openedPorts = lib.unique (
builtins.catAttrs "listenPort" (
builtins.attrValues dn42PeeringSessions ++ builtins.attrValues staticSessions
)
);
正确的写法:
openedPorts = lib.unique (
builtins.catAttrs "listenPort" (
builtins.catAttrs "value" (
builtins.attrValues dn42PeeringSessions ++ builtins.attrValues staticSessions
)
)
);
发现不对了吗?
builtins.attrValues dn42PeeringSessions 返回的数据结构是:
[
{
name = "xxx";
value = {
listenPort = xxxx;
};
}
{ ... }
]
这里我忘记拆 value 了,所以实际上我是在找外层对象的 listenPort,这个属性不存在,所以返回的列表是空的。
也因此,防火墙并没有打开 Wireguard 的端口。
修复之后,问题解决。