systemd-resolved管理DNS

systemd-resolved 是 systemd 套件中的网络名称解析服务,它管理 DNS 和 LLMNR 解析,并提供了一个本地 DNS 存根监听器。

systemd-resolved 的核心配置文件是 /etc/systemd/resolved.conf。你可以通过编辑此文件来配置全局 DNS 设置1。

一个典型的配置示例如下:

[Resolve]
DNS=8.8.8.8 1.1.1.1
FallbackDNS=9.9.9.9 8.8.4.4
Domains=~.
DNSSEC=allow-downgrade
DNSOverTLS=opportunistic
MulticastDNS=yes
LLMNR=yes
Cache=yes

主要配置项说明:

  • DNS=‌:指定主 DNS 服务器地址,多个地址用空格分隔1。
  • FallbackDNS=‌:指定备用 DNS 服务器地址,当主服务器不可用时使用1。
  • Domains=‌:指定搜索域。~. 表示所有域名1。
  • DNSSEC=‌:控制 DNSSEC 验证行为,如 yesnoallow-downgrade1。
  • DNSOverTLS=‌:控制是否使用 DNS-over-TLS,如 yesnoopportunistic1。
  • MulticastDNS=‌ 和 ‌LLMNR=‌:分别控制 mDNS 和 LLMNR 协议是否启用1。
  • Cache=‌:控制是否启用本地 DNS 缓存1。
继续阅读systemd-resolved管理DNS

iptables规则保存持久化

对于 Debian/Ubuntu 等系统‌:通常使用 iptables-save 和 iptables-restore 命令。配置完成后,运行 sudo iptables-save > /etc/iptables/rules.v4 将当前 IPv4 规则保存到文件。然后,可以通过系统服务(如 netfilter-persistent)或启动脚本在开机时自动加载该文件。

在 Debian 12 上,成功保存 iptables 规则后,可以通过安装并启用 netfilter-persistent 服务来实现开机自动加载。

sudo apt update
sudo apt install iptables-persistent

在安装过程中,系统会提示你是否保存当前的 IPv4 和 IPv6 规则。如果之前已经手动保存过规则,可以选择“否”。

将当前生效的 iptables 规则保存到默认的持久化配置文件中。这通常对应 /etc/iptables/rules.v4(IPv4)和 /etc/iptables/rules.v6(IPv6)。

sudo iptables-save > /etc/iptables/rules.v4
sudo ip6tables-save > /etc/iptables/rules.v6

也可以使用 netfilter-persistent 提供的命令来保存:

sudo netfilter-persistent save

启用开机自启服务‌:
确保 netfilter-persistent 服务已设置为开机自动启动并立即启动它。

sudo systemctl enable netfilter-persistent
sudo systemctl start netfilter-persistent

完成以上步骤后,系统每次重启时,netfilter-persistent 服务都会自动从 /etc/iptables/ 目录下的规则文件恢复 iptables 规则。

验证与后续管理‌:

  • 检查服务状态‌:可以使用 sudo systemctl status netfilter-persistent 来确认服务运行正常。
  • 更新规则‌:未来若修改了 iptables 规则并希望永久生效,只需再次执行 sudo netfilter-persistent save 命令即可将当前内存中的规则覆盖保存到配置文件中。

openvpn自建记录

用docker自建VPN,在此记录下过程:

提前配置好docker镜像源,多配置几个以便成功拉取镜像

# 创建数据目录
OVPN_DATA="/opt/openvpn-data"
sudo mkdir -p $OVPN_DATA

# 拉取镜像
sudo docker pull kylemanna/openvpn

# 初始化配置。将 `vpn.example.com` 替换为你的公网服务器IP或域名。
sudo docker run -v $OVPN_DATA:/etc/openvpn --rm kylemanna/openvpn ovpn_genconfig -u udp://vpn.example.com

# 生成证书和密钥。此命令会交互式地要求你设置CA密码和服务器端证书信息。
sudo docker run -v $OVPN_DATA:/etc/openvpn --rm -it kylemanna/openvpn ovpn_initpki
挂载数据卷
OVPN_DATA="open-data"
docker volume create --name $OVPN_DATA
列出数据卷
docker volume ls
查看数据卷存储文职
docker volume inspect <卷名>

在执行 ovpn_initpki 时,请务必记住设置的 CA 密码,并为服务器证书使用一个易识别的通用名(如 server)。

sudo docker run -d \
  --name openvpn-server \
  --restart unless-stopped \
  -v $OVPN_DATA:/etc/openvpn \
  -p 1194:1194/udp \
  --cap-add=NET_ADMIN \
  kylemanna/openvpn
继续阅读openvpn自建记录

windows暂停更新

REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" /v "ActiveHoursEnd" /t REG_DWORD /d 00000011 /f & REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" /v "ActiveHoursStart" /t REG_DWORD /d 00000008 /f & REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" /v "AllowAutoWindowsUpdateDownloadOverMeteredNetwork" /t REG_DWORD /d 00000000 /f & REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" /v "AutoRebootLimitInDays" /t REG_DWORD /d 00005000 /f & REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" /v "ExcludeWUDriversInQualityUpdate" /t REG_DWORD /d 00000000 /f & REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" /v "FlightCommitted" /t REG_DWORD /d 00000000 /f & REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" /v "IsExpedited" /t REG_DWORD /d 00000000 /f & REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" /v "LastToastAction" /t REG_DWORD /d 00000000 /f & REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" /v "UxOption" /t REG_DWORD /d 00000000 /f & REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" /v "FlightSettingsMaxPauseDays" /t REG_DWORD /d 00005000 /f & REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" /v "PauseFeatureUpdatesStartTime" /t REG_SZ /d "2024-03-05T06:20:03Z" /f & REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" /v "PauseQualityUpdatesStartTime" /t REG_SZ /d "2024-03-05T06:20:03Z" /f & REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" /v "PauseUpdatesExpiryTime" /t REG_SZ /d "2080-03-31T06:20:25Z" /f & REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" /v "PauseFeatureUpdatesEndTime" /t REG_SZ /d "2080-03-31T06:20:25Z" /f & REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" /v "PauseQualityUpdatesEndTime" /t REG_SZ /d "2080-03-31T06:20:25Z" /f & REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" /v "AllowMUUpdateService" /t REG_DWORD /d 00000000 /f & start         ms-settings:windowsupdate-options
继续阅读windows暂停更新

在Excel中判断单元格不为空,常用的方法包括以下几种:

1. 使用 <>"" 直接判断

  • 公式示例:=IF(A1<>"", "不为空", "为空")
  • 说明:此方法直接检查单元格内容是否不等于空字符串,适用于大多数情况,但会将仅含空格的单元格视为“不为空”。

2. 使用 ISBLANK 函数

  • 公式示例:=IF(NOT(ISBLANK(A1)), "不为空", "为空")
  • 说明:ISBLANK 函数严格判断单元格是否为空(包括无空格或公式返回空值的情况),但可能忽略仅含空格的单元格。

3. 使用 COUNTA 函数

  • 公式示例:=IF(COUNTA(A1)>0, "不为空", "为空")
  • 说明:COUNTA 统计非空单元格数量,但会将空格、空字符串("")或错误值也计入“不为空”。

4. 进阶处理含空格的单元格

若需排除仅含空格的“假空单元格”,可结合 TRIM 和 LEN 函数:

  • 公式示例:=IF(LEN(TRIM(A1))>0, "不为空", "为空")
  • 说明:TRIM 清除首尾空格,LEN 计算字符长度,确保真正非空的单元格才被识别。

5. 其他方法

  • 状态栏计数:选中区域后,状态栏会自动显示非空单元格数量(仅限快速查看,不可用于公式)。
  • 查找功能:按 Ctrl+F 搜索 *,结果窗口会显示非空单元格数量。

注意事项

  • 若需在公式中直接利用“不为空”条件,可简化为 =IF(A1<>"", 计算逻辑, "") 或 =IF(NOT(ISBLANK(A1)), 计算逻辑, "")
  • 对于包含公式但显示为空的单元格,ISBLANK 会返回 FALSE(视为“不为空”),而 ="" 可能返回 TRUE

WIN跨系统共享打印机问题

win11打印机主机,别的主机连接显示不可用的网络名,目前暂时用添加注册表的方法成功救活两台电脑

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Printers]

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Printers\RPC]
"RpcProtocols"=dword:00000007
"ForcekerberosForRpc"=dword:00000001

针对错误709问题,还有一个未经证实的注册表项,先记录备用(同时记得打开Windows功能里面的打印和文件服务):

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Printers]

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Printers\RPC]
"RpcUseNamedPipeProtocol"=dword:00000001

另外猜测注册表解决的都是RPC问题,所以可以直接在组策略里面打开试试:

组策略-计算机配置-管理模板-打印机-配置RPC连接设置:启用后改为命名管道上的RPC

针对win11家庭中文版没有组策略的问题,复制下面的批处理:

FOR %F IN ("%SystemRoot%\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientTools-Package~*.mum") DO (DISM /Online /NoRestart /Add-Package:"%F")

无法连接到打印机0x0000011b

‌修注册表‌:

打开注册表编辑器:按下Win + R键,输入regedit并按回车。
导航到路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print。
创建一个新的DWORD值,命名为RpcAuthnLevelPrivacyEnabled,并将其值设置为0。

phpize安装扩展

安装fileinfo为例

tar zxvf php-5.6.20.tar.gz # 解压已经安装的php版本
cd php-5.6.20/ext/fileinfo
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make &amp;&amp; make install
cd /usr/local/php/lib/php/extensions
ls #看到no-debug-non-zts-20131226类似文件夹
cd no-debug-non-zts-20131226
ls #查看有没有 fileinfo.so,如果有,证明编译成功
加载fileinfo
echo 'extension=fileinfo.so' > /usr/local/php/etc/php.d/ext-fileinfo.ini

Win7驱动数字签名问题

新装win7系统,安装虚拟网卡驱动,总是因为“未经数字签名”而安装失败,导致设备管理器中挂黄标,于是乎开始各种查找问题,因为同样软件在别的win7系统上没有出现此问题,而且都是经我手同样方法安装的win7原版镜像,排查方法如下:

1、开机F8禁用数字签名,驱动可以安装成功,但是重启后又失效;

2、修改组策略,禁用数字签名,无效;

3、执行cmd命令开启测试模式,禁用数字签名,无效;

4、安装微软KB3033929补丁,成功!

折腾到最后,竟是一个补丁解决了。其实最开始也想过,会不会是补丁的问题,因为新装系统出的问题,之前装的却正常,有可能就是之前装的系统升级过补丁,当时都在安装补丁合集了,但安装过程较慢、时间较长,这个过程中自己思路又歪了, 以至于走了很多弯路 ,去排查什么激活方法问题、驱动包兼容问题等等,来回重装了N次系统,费时费力。

最后感慨一下,思路果然很重要,排除法虽然最后也解决了,但耗费不少精力。如果我当初的思路没被打断,执行下去早就搞定了。