stardust

经历了日夜颠倒的一周,总共耗时70小时之后,我终于打完了这部可能是花费我时间最多的 galgame 作品,久仰 BSD 大名很多年,但是一直觉得坑太大不想开,趁着 steam 官中折扣我终于打定主意要开这个坑。总体上说,BSD 是一款符合我预期的大作,我充分的理解并赞同它在业界的历史地位,因为它真的很难得,抛开本作的 ACT 部分只评价 gal 部分,我将其概括为:技术上是不偏科的全方位佳作、世界线理论的最佳实践;主题上是赛博朋克的集大成者、理想主义的浪漫悲喜剧。

Linux 网络调优:内核网络栈参数篇

网络上流传着很多“Linux 网络一键优化脚本/配置”,并不是说这些配置不好,而是在不知道这些常用内核参数的含义和影响的前提下 xjb 调其实挺危险的,根据使用场景不同和机器配置不同,有些参数调了只是“没用”,而有的调了会引起一些网络玄学故障,本文尝试结合 Linux 网络栈 ingress 和 egress 的基本架构,整理了一下常用的一些参数的含义和相关的用途坑点。

主要有以下部分组成:

  • 简述 Linux ingress 架构
  • backlog 和 skb 相关
  • TIME_WAIT 相关
  • Linux egress 架构和 qos 相关
  • nf_conntrack 相关
  • TCP keepalive 相关
浅谈 Linux 上的 SLAAC:原理、配置和系统行为

TL; DR:本文简要介绍了 IPV6 自动配置的基本概念和原理,并讨论了在 Linux 下自动配置(aka. SLAAC)原理和坑点,其中:

启用 IPV6 SLAAC 并允许内核自动添加 IPV6 默认路由需要使 net.ipv6.conf.{iface}.autoconf = 1 且 net.ipv6.conf.{iface}.accept_ra = 1
如果启用了 net.ipv6.conf.{iface}.forwarding ,则对应网卡接口 accept_ra 需要为 2
上述 iface 既可以是 default/all,也可以是具体某个网卡接口,但是需要特别注意,对于部分 IPV6 配置项,仅修改 net.ipv6.conf.all 时不会应用到全部网卡接口,使用时请确认所需的网卡接口上配置正确。
另外在部分发行版中可能修改 accept_ra 实际不生效,系统可能出现预期外行为(无法自动获取的地址和路由,或配置为不需要 SLAAC 时系统仍会进行配置等),此时可检查系统中是否存在其他网络管理工具如 netplan 造成了遗留影响。

TL; DR:变更 sshd 这种高危操作三思而后行,最好留个后路谨防失联。
TL; DR 2:裸奔的 aria2c 可以用于写入文件最终导致 getshell,为了安全起见,公网上的 aria2c 建议禁用 rpc-listen-all 或/和设置足够强的 rpc token,也避免使用 root 运行 aria2c。

如 https://lwn.net/Articles/812537/ 所述,由于 SHA-1 签名算法的暴力破解成本已下降到可接受范围,OpenSSH 8.2 决定不再支持 ssh-rsa 签名算法,其结果是,过旧版本的 ssh-server 将无法使用高版本 ssh-client 连接,比如 CentOS6 的 5.3 不支持 ecdsa host key,也不支持 rsa-sha256 或更强的算法,摆在 CentOS6 用户面前的只有两条路,1. 升级 OpenSSH 版本,2. 准备一个旧版 ssh client 用来登陆老旧服务器。

很不巧的是我手头正好有一台老旧的、没有接 IPMI 管理网卡的 CentOS6 物理服务器,CentOS6 主源中没有符合要求版本的 OpenSSH(>5.7),于是我需要尝试自行编译或找一个别人编译好的二进制,于是我找到了 https://github.com/faishal/openssh-portable/releases/download/cent.os.6.7.openssh.7.3p1/openssh-7.3.zip ,事实表明它有坑,Google 搜出来的第一个结果也不一定总是靠谱的。

Windows Terminal 试用小记

为了对水果近年来在 T2 问题上的倒行逆施表示反抗,我最近开始研究 Windows 下工作的可能性,由于 WSL 的完成度日渐提高,我使用 macOS 工作的最大理由已经消失,不过由于 conemu 等第三方终端总是感觉性能不好,刷新率和响应速度都和 iTerm 有肉眼可见的差距,在 Windows 下工作总觉得手感差点。不过 Windows Terminal 于近日宣布 feature complete,距离预定于明年初发布的 v1.0 只剩下 bug fix 工作,感觉是时候尝试一下,于是我老人家终于下定决心花了一晚上时间把我的 LTSC 系统升级到半年频道(Windows Terminal 使用了 conhost 的一些新 API,要求系统版本在 1903 build 18362 以上)

但是和 VS Code 发布之初类似,Windows Terminal 现在也只有 json 格式配置文件,没有 GUI 配置,不得不说这个还是挺劝退的,目前 WT 的文档非常的不齐全,组织的还比较混乱, 还全部直接扔在 Github 源码里,Github 本身不是一个便于阅读文档的地方,翻文档就很累,虽然微软提供了一个完整的 config sample ,但是由于太长了人类可读性也不是很好,有时候找半天不如直接 Google 搜关键词最后从某 issue 的角落里抄来一句能用的配置,个人还是很烦这种不得要领又无序可循的感觉,这也是我写本文的一个原因。