-
在QNAP NAS上创建用做科学上网旁路由的openwrt虚拟机
创建虚拟机
需要用到的东西
- openwrt官方img文件,切记下载x64版本,有牛逼人下载x86的导致虚拟机无法识别img。
- qemu-img
QNAP的虚拟化工作站无法直接使用openwrt官网下载的img格式,需要用qemu-img工具进行转换。命令如下:
qemu-img convert -p -f raw -O qcow2 openwrt-23.05.5-x86-64-generic-ext4-combined-efi.img openwrt.img
- 先用Virtualization Station创建一个无硬盘的虚拟机。
- 把qemu-img转换后的镜像openwrt.img复制到虚拟机目录。
- 在Virtualization Station中将openwrt.img添加进虚拟机,并设置好容量,比如10GB。如果无法在QNAP虚拟机界面修改磁盘空间,可以在添加img文件之前使用命令
qemu-img resize openwrt.img 8G来调整img的空间大小(不是img文件的实际大小)。
给文件系统扩容
默认的文件系统大概只有104MB空间,这会导致很多应用无法正常使用。所以需要给文件系统扩容,磁盘容量已经在上一步虚拟机相关设置里完成扩容了,现在只需要在Free Space上创建文件系统。
先安装必要的工具
opkg update #分区前可能需要使用parted -l命令修复一下 #如果不安装block-mount,openwrt是没有挂载选项的 opkg install fdisk cfdisk parted block-mount
使用fdisk和cfdisk将剩余空间分配并格式化为EXT4格式。
在openwrt网页端的System菜单下选择挂载点,并把新创建的文件系统挂载为“/”。而后openwrt会给出一系列命令,如下所示:
mkdir -p /tmp/introot mkdir -p /tmp/extroot mount --bind / /tmp/introot mount /dev/vda3 /tmp/extroot #将这行中的/dev/vda3改为实际的设备路径 tar -C /tmp/introot -cvf - . | tar -C /tmp/extroot -xf - umount /tmp/introot umount /tmp/extroot
执行上述命令并重新启动openwrt即可完成扩容。
关于网卡
X710的驱动是i40e,默认就有,SR-IOV的网卡可以直接识别到。
CX4网卡驱动为mlx5,默认未安装,SR-IOV的CX4网卡无法直接使用。这时候需要先用虚拟交换机的网卡让openwrt可以联网,然后执行下面的命令安装CX4网卡驱动:
opkg install kmod-mlx5-core
至此就可以使用CX4的SR-IOV了,也可以把虚拟交换机的网卡移除掉。
修改lan口IP
# 将 LAN 接口的协议设置为静态 uci set network.lan.proto='static' # 设置新的 IP 地址 uci set network.lan.ipaddr='192.168.2.1' # 设置子网掩码 (可选,若不设置则可能使用默认值) uci set network.lan.netmask='255.255.255.0' # 设置网关 (对于 LAN 接口通常不需要) # uci set network.lan.gateway='192.168.2.254' # 设置 DNS 服务器 (可选) # uci set network.lan.dns='8.8.8.8 8.8.4.4' # 提交更改 uci commit network # 重启网络服务以应用更改 /etc/init.d/network restart
关于旁路由
只需要一个lan口即可,设置好IP,网关设置为出口路由IP,关闭DHCP和IPv6。千万别忘了修改
/etc/resolv.conf中的DNS地址。科学上网
安装openclash,过程非常简单,如果因为dnsmasq冲突导致openclash安装失败,可以删除系统自带的dnsmasq再安装openclash。
openclash的配置很简单,配置订阅即可。
客户端使用这个旁路由上网时只需要将网关和DNS都设置为旁路由lan口IP地址即可。
-
BitLocker突破情况
目前流行的BitLocker突破方式主要有两个:DMA解锁和TPM芯片通信嗅探。
DMA解锁
DMA解锁情况表
VT-d 内存完整性 BitLocker(TPM) BitLocker(PIN) DMA解锁 设置1(Win11笔记本电脑默认) 启用 启用 启用(登录微软账号后) 未启用 不可解锁 设置2 未启用 任意 启用 未启用 可直接进行DMA解锁 设置3 启用 未启用 启用 未启用 可关闭VT-d后进行DMA解锁 设置4 任意 任意 任意 启用 不可解锁 简要总结
- 只要启用了BitLocker的PIN码解锁,无论其他选项是何配置,都无法使用DMA解锁。
- 同时启用BitLocker和“内存完整性”保护,无法进行DMA攻击,原因如下:
- “内存完整性”可以防护DMA攻击,需要通过禁用BIOS中的“VT-d”功能使“内存完整性”失效。
- BitLocker加密会对BIOS中涉及安全的设置进行摘要(如“VT-d”、“Secure Boot”等),如果这些设置有变化,启动时则不进行TPM自动解锁,而是让用户输入恢复密钥。
针对较新的笔记本电脑,出厂配置下只要用户登陆了微软账号,BitLocker就会在不弹出任何通知的情况下启用,此时就是同时启用BitLocker和“内存完整性”的情况。
TPM芯片通信嗅探
TPM的两种形态
TPM芯片分为两种:dTPM(Discrete TPM)和fTPM(Firmware TPM)。
dTPM
dTPM就是独立TPM芯片,表现为一个焊在主板上的芯片或一个可在主板上插拔的芯片。
fTPM
fTPM是固件型TPM的意思,一般位于BIOS芯片中,并且在TEE(可信执行环境)中执行,但需要CPU支持才可启用。Intel从第八代酷睿(发布于2018年1月)开始支持fTPM。
嗅探方法
该方法仅针对dTPM有效,因为dTPM芯片一般位于SPI或LPC线路上,计算机开机时,BitLocker解密密钥会在该线路上明文传输。
通过信号侦测仪一类的设备嗅探TPM芯片与CPU的通信即可嗅探到BitLocker密钥。
应用前景
这是一项很老的技术,至少在六年前就有讲述该技术的文章被发布到互联网上。因较老的CPU和主板不支持fTPM,所以在一些较老的主机上可以看到dTPM。
当下的笔记本电脑基本几乎都是使用fTPM。因为现代CPU都支持fTPM,计算机供应商使用fTPM可以避免额外购买dTPM的费用和相关PCB电路设计的各种费用,所以在未来,包括笔记本电脑在内的PC整机产品不太可能使用dTPM。
-
使用fio测试ZFS文件系统读写速度
cd /mnt/data/dataset mkdir speedtest cd speedtest //下面是顺序写测试 fio --name=seqwrite --rw=write --direct=1 --ioengine=psync --bs=128k --iodepth=32 --numjobs=10 --size=10G --group_reporting //下面是顺序读测试 fio --name=seqread --rw=read --direct=1 --ioengine=psync --bs=128k --iodepth=32 --numjobs=10 --size=10G --group_reporting
我是8块16TB组RAIDz2,加上2块2TB的NVME固态的镜像日志。测试结果如下:
写入

读取

-
关于华为OEM版X710-DA2的一些问题
我将手里的XP330刷成了最新的Intel官方固件,会出现一个口无法使用的问题。然后我又刷回了华为的SP330固件(当时我以为我手里的卡是SP330),问题依旧。然后我仔细看了一下我的卡不是SP330,而是XP330,遂刷入XP330的固件,问题解决,两个口都可使用。固件可以在超聚变官网下载。
出现问题的原因想必是华为在固件上做了一些判断。
另外,SP330和XP330有什么区别我并不知道。
-
Windows创建类RAID6分层存储
首先通过界面创建一个存储池,我这里名字是MainPool。然后把HDD和SSD都放进这个池。
查看存储池信息
Get-StoragePool MainPool | Get-PhysicalDisk | Sort Size | FT -AutoSize
创建SSD快速层,使用的是Mirror
New-StorageTier -StoragePoolFriendlyName MainPool -FriendlyName SSDTier -MediaType SSD -ResiliencySettingName Mirror -PhysicalDiskRedundancy 1 -FaultDomainAwareness PhysicalDisk
创建HDD大容量层,使用的是允许2块盘故障的Parity
New-StorageTier -StoragePoolFriendlyName MainPool -FriendlyName HDDTier -MediaType HDD -ResiliencySettingName Parity -PhysicalDiskRedundancy 2 -FaultDomainAwareness PhysicalDisk
查看Tier信息
Get-StorageTier
创建分层结构的虚拟磁盘,同时在SSD上设置256GB的写缓存区
$SSD = Get-StorageTier -FriendlyName SSDTier $HDD = Get-StorageTier -FriendlyName HDDTier $SSDSIZE = (Get-StorageTierSupportedSize -InputObject $SSD).TierSizeMax*0.95 -256GB $HDDSIZE = (Get-StorageTierSupportedSize -InputObject $HDD).TierSizeMax*0.95 New-VirtualDisk -StoragePoolFriendlyName MainPool -FriendlyName "MainVHD" -StorageTiers @($SSD,$HDD) -StorageTierSizes @($SSDSIZE,$HDDSIZE) -WriteCacheSize 256GB
-
LSI 9207-8i刷P20固件
主板是超微的H13SAE-MF(B650芯片组)。
需要的软件和固件:
文件名 包含内容 来源 UEFI_BSD_P20.zip 签名版的UEFI BIOS 博通官网直接下载,无需登录 9207_8i_Package_P20_IR_IT_FW_BIOS_for_MSDOS_Windows.zip 固件和传统BIOS 同上 Installer_P20_for_UEFI.zip EFI环境下的刷新工具:sas2flash.efi 同上 Shell_Full.efi 完整的X64 EFI Shell https://github.com/tianocore/edk2-archive/blob/master/EdkShellBinPkg/FullShell/X64/Shell_Full.efi 开机按F11,从引导菜单进入EFI Shell。
这个EFI Shell执行sas3flash.efi是没问题的,但是无法执行sas2flash.efi,所以需要Shell_Full.efi。进入方法很简单,在主板的EFI Shell中执行Shell_Full.efi就可以进入完整的EFI Shell,在这里就可以执行sas2flash.efi了。
-c 0参数为指定HBA卡中的第一张卡,如果只插了一张HBA卡则不需要指定这个参数。查看信息
sas2flash.efi -list有必要的话可以把信息截图备份一下。
备份固件
sas2flash.efi-ufirmware firmware.old备份bios
sas2flash.efi-ubios bios.old清除固件
sas2flash.efi -o -e 6刷入固件
sas2flash -f 9207-8.bin刷入传统BIOS
sas2flash -b mptsas2.rom刷入带签名的UEFI BIOS(支持安全启动)
sas2flash -b x64sas2.rom
-
关于BitLocker启用时间点
样本是一台新购买的Thinkpad笔记本电脑,CPU为Ultra一代,预装有Windows 11操作系统。
以U盘引导盘中Windows PE或Win To Go,在其中查看计算机内置硬盘的系统盘的BitLocker加密状态,结果如下表。
工具\状态 未初始化系统设置 完成系统初始化设置但未登录微软账号 完成系统初始化设置且登录微软账号 Windows PE 加密盘未锁定 加密盘未锁定 加密盘已锁定 Win To Go 加密盘未锁定 加密盘未锁定 加密盘已锁定 事实证明,WTG和PE是一样的。并不存在“如果使用基于TPM的BitLocker系统盘,Win To Go能查看解密后的盘”。
-
QNAP虚拟机安装OpenWRT
先去OpenWRT官网下载X86-64平台的img镜像,但这个镜像QNAP虚拟机软件没法直接用,需要用qemu-img转换一下。
qemu-img convert -p -f raw -O qcow2 openwrt-23.05.5-x86-64-generic-ext4-combined-efi.img openwrt.img
而后创建新的虚拟机并使用该镜像作为虚拟机硬盘就可以了。
将网卡驱动ipk包放入U盘
mount -t vfat /dev/sda1 /mnt/upan opkg install XXX.ipk