作者归档:admin

23-24 年度硬件更新汇总

2023 年,随着公司发的旧笔记本键盘按键失灵、指纹迟钝、 i5-8265U 处理器性能逐渐落伍,换笔记本的想法逐渐强烈。由于很久没有关注硬件,只知道自己的需求包括 2.5K 高清屏,接口丰富,对当下各品牌产品线完全不了解,遂通过中关村在线的高级搜索功能来浏览、筛选近期产品,发现联想的 ThinkBook 系列很对我的胃口。很长时间内一直长草 ThinkPad 系列,但发现近期的 ThinkPad 的中低端和高端都很没意思,倒是 ThinkBook 系列高清屏、接口方面都诚意满满,性价比也在 4K-6K 价位区间也很能打。

于是进一步地,在 ThinkBook 14 寸、 16 寸,i 家、 A 家的一系列产品中看中了一款 i5-12500H 处理器、 RTX 2050 显卡、 2.8K 屏的 ThinkBook 14,但内存 16G 觉得可能会不够用,且是焊死的失去了升级可能性。生物识别方面,摄像头支持 Windows Hello 但是平时都会被隐私盖盖着,电源键原支持指纹识别但本型号惨遭阉割——后来发现自己购买识别模块动手安装也是个办法,但实在不想新机到手就冒着 D 面断卡扣的风险大卸八块装一个不知道什么时候还可能失效的指纹识别模块……减分项太多,因此在 2023 年 618 特价时也没出手。

到了年底,在某平台上发现 HP 战 99 2023 锐龙版这一款觉得挺满意,外观沉稳商务范,A 面 Z 标换成了备受好评但我无所谓的薯条 HP 标,搭载时下最新的 AMD 8 核 16 线程 7840HS w/时下最强集显 780M,指纹人脸解锁一应俱全,内存可替换,M2 口有两个,甚至在 AMD 平台上还通过外挂控制器了搭载一枚全功能雷电口。除了 2.5K 屏幕是 16:9 而非最合适搬砖的 16:10 之外,几乎没什么短板,于是欣然入手。到手使用后觉得非常满意,2560*1440 的屏幕缩放到 175%,把微软雅黑替换为修正 bug 版的 Noble Scarlet 字体日常使用非常舒服,买前不太在意的 120Hz 高刷屏带来了不小的惊喜和不便——再看其他 60Hz 刷新的屏幕有点受不了了;) 。 这台笔记本存在 CMOS 时钟走得异常快这一情况,通过线下售后联系北京总部排查表示这一批次都是这样,只能勤着点儿和 NTP 对时了。

2024 年夏天,Ryzen2600 + ASRock B450M 的台式机频繁出现掉 nvme 盘的情况,起初以为是盘不行了,谁知换盘后问题依旧,这套 2020 年购入的 2018 年发售的套装也显得过时了,于是考虑升级下板 U 。文初提到的公司笔记本淘汰后,自己加装的 DDR4 16G 内存退休闲置,通过内存转接卡想在台式机上用,意外发现该 AMD 平台竟然不支持 SO-DIMM 内存,只有 i 平台是肯定支持的。当时,i5-12400F 处理器已经掉到了 500+价位,加上 2024 年夏天 13 代 14 代缩缸问题全网暴雷,于是准备挑一个丐板搭配 i5-12400F,插上旧有的 8G 内存和 16G 笔记本转接内存,组成瘸腿 24G 低频双通道怎么也够用了。最终因自带 typeC 口(其实仍然是 5Gb 速率)而看中了 ASRock B660M HDV,这是也一块 500+价位的丐板,自带两个 M2 接口还有无线网卡插槽,虽说供电缩到常上各 up 主的 B660 平台测评反面教材,但带一个 i5-12400F 是没什么问题了。最终配好以后通过 CPU-Z 的 benchmark 跑分和 HP 笔记本 7840H 的单核性能接近,多核性能还略逊一点,毕竟 7840H 是八核。

配好以后,2020 年入的 1660super 显卡又显得有些碍眼,插上我一直在用 4K 60Hz 办公显示器,带 Diablo4 都显得吃力。听说 4000 系列的 DLSS 功能被吹得神乎其神,就像大力水手吃了菠菜,但是 4000 系列的显卡价格都居高不下。迟疑了一段时间后,在张大妈上发现电竞叛客 4060ti 8GB 价格在 2800+,于是出手。 4060ti 的低功耗和 1660super 相差无几,使用 8pin 电源接口,电源也不用换了。在 2077 等游戏下,通过降特效、降分辨率也能达到基本满意的程度。

iOS Surge 加载 wireguard 配置打通 tailscale

Wireguard 是新一代的轻量级、易于配置、简洁优雅的 VPN 协议。 tailscale 是底层利用了 wireguard 协议和 UDP 打洞等方式,把天南地北的主机去中心化地连为虚拟局域网的商业产品。 tailscale 有很大的免费使用额度(3 用户 100 终端,2024.2),在各大操作系统平台上都有配置简单的客户端。但在 iOS 上启动会占用独占性的 VPN 接口,和 Surge 产生了互斥。最贴身的 iPhone 设备不能接入自己的 tailscale 网络是很可惜的,于是 2024 年的春节档就着手准备解决这个问题。

这个问题有很多解决途径,iPhone 开启 tailscale app 之后借助 tailscale 的 exit node 功能把所有流量交给别的设备分流处理算一种(落选原因:5G 速度大于家宽上传),Surge 等 app 除了 wireguard 外还支持的 socks 、 ssh 等协议也算一种(落选原因:不想暴露任何 TCP 端口)。家里有一台常开的 N100 低功耗处理器小主机,装好了 Linux 操作系统,当然要充分利用这个资源,顺便还能把该主机上挂载的移动硬盘以 smb 协议共享为 “网盘” 来使用。

由于 Surge 支持 “分离配置” 特性,就算是遇到不能修改的订阅的配置也可以通过 “自定义主配置文件”加载 “订阅配置的某些段落”来实现自由定制某些规则。正是在这种情况下,只要再写一个 wireguard 专用的配置文件,变成 “自定义主配置文件”+“订阅配置”+“wireguard 专用配置” 即可,关键段落如下:

[Proxy]
#!include subscription.conf, wireguard.conf
[WireGuard name]
#!include wireguard.conf
[Rule]
IP-CIDR,10.0.0.1/32,wireguard,no-resolve #内网主机 wireguard 的对端地址
IP-CIDR,192.168.1.0/24,wireguard,no-resolve #内网主机所在的家庭内网 LAN 段,可访问家庭局域网
IP-CIDR,100.64.0.0/10,wireguard,no-resolve #tailscale 段,如果嫌大可以精确到主机/32

Surge 中 wireguard 配置和官方配置没什么差别,section-name 所指定的名字要和主配置、 wireguard 配置中 [WireGuard name]里的 name 相对应;peerallow-ips 的值如需填多个地址段要用双引号包裹,如 allow-ips = "0.0.0.0/0, ::0/0"

由于该内网小主机一开始经考虑被设置为内网设备而非软路由,所以在(有公网 IPv4 地址的)主路由上通过转发规则把公网来的 wireguard 的 UDP 包转发到内网小主机。主机上通过 wg 自带的命令生成公私密钥对,填入 Surge 的 wireguard 配置中,wg-quick up wg0 启动服务后 iPhone 即可访问主机上的服务,连接成功。

2024.3.8 更新方案:通过主路由器端口转发的方式把公网来的 UDP 转发到小主机,更新为直连小主机的 ipv6 地址(在主路由中用 ip6tables 放行对应端口)。使用 ddns 工具同时更新主机的 ipv6 、 ipv4 地址,ipv4 则是主路由器的公网 ipv4 地址并 fallback 到上述端口转发方案。

到这里只实现了 wireguard 的两个对端互连,要让 iPhone 访问内网主机所在的家庭局域网 192.168.1.0/24,除了上文中提到的在 Surge 主配置文件 [Rule]中将指定网段流量导向 wireguard,还要在内网主机上通过 iptables 让内网主机把 wireguard 流量转发到家庭局域网。在网上的很多 wireguard 教程里,内网主机端的 PostUp(也就 wireguard 服务启动后执行的命令)是这样写的:

iptables -A FORWARD -i wg0 -o eth0 -j ACCEPT;
iptables -A FORWARD -i eth0 -o wg0 -j ACCEPT;
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE;

这三句话可能以不同的形式(网卡名称,地址段等)出现,但实质相同,实现了内网主机 wireguard 网卡 wg0 、物理网卡 eth0 互联互通和 NAT 的规则。如无特殊,PostDown 则是写入相对应的 iptables 删除命令(把-A 换成-D)。重要的是开启 Linux 内核包转发,编辑 /etc/sysctl.conf, 将 net.ipv4.ip_forward 的值从 0  改为 1 。然后 sysctl -p  生效。

在解决了访问内网主机物理局域网段的访问问题后,我想进一步访问内网主机所在的 tailscale 虚拟局域网,实现方法也很简单并可以按照以上步骤如法炮制:把上述 iptables 命令中的物理网卡 eth0 改为 tailscale 的虚拟网卡名 tailscale0 ,再写三句命令追加在 PostUp 的后面,PostDown 也同样追加,重启 wg0 即可生效。最后 systemctl enable wg-quick@wg0wg0 加入开机自启动服务。

最后,幸亏路由器支持 NAT Loopback(又称 NAT hair pinning),也就是 IPv4 的网关会自动识别并修正 “目标写着路由器公网 IP,实际上得往内网去” 的请求,使得以上所有基于 “iPhone 在公网” 的设定到了内网也能正常运作。(如不支持 Loopback 可能需要内网自定义 DNS,使得目标服务器在公网解析出公网 IP,在内网解析出内网 IP)最终结构如下: