MOC - music on console 无头音乐播放器

最近把一台老的笔记本电脑当作NAS使用,都是通过ssh管理。笔记本电脑自带声卡和喇叭,便想着说利用起来播放一些音乐。通过一番搜索,发现MOC这个软件正符合我的需求。

  • 官网https://moc.daper.net/
  • 命令 mocp 启动TUI
    • h 显示帮助信息
    • a 添加当前目录到播放列表
    • n 下一曲
    • b 上一曲
    • X 自动播放下一曲
    • S 随机播放
    • p 或空格 暂停
    • q 退出

Windows域控配置时钟源

背景

在 Active Directory 环境中,所有成员计算机和域控制器默认使用层级时间同步架构:

  • 森林根域的 PDC Emulator → 整个森林的权威时间源
  • 子域的 PDC Emulator → 向森林根 PDC 同步
  • 普通域控制器 → 向同域的 PDC Emulator 同步
  • 域成员计算机 → 向所在站点的域控制器同步

因此,只需在森林根域的 PDC Emulator 上配置外部 NTP 源,时间就能自动向下层传播。

修改 SSH 监听端口与 SELinux 配置

概述

出于安全考虑,修改 SSH 默认端口(22)是一个常见的安全加固措施。本文介绍如何修改 SSH 监听端口,并正确配置 SELinux 以允许新端口的访问。

修改 SSH 监听端口

1. 编辑 SSH 配置文件

sudo vi /etc/ssh/sshd_config

找到 #Port 22 这一行,取消注释并修改为需要的端口:

Port 22
Port 2222

建议同时保留默认端口和自定义端口,便于测试。确认新端口正常工作后,再删除默认端口配置。

2. 重启 SSH 服务

sudo systemctl restart sshd

3. 验证新端口

# 检查 SSH 服务监听端口
sudo ss -tlnp | grep sshd

# 或使用 netstat
sudo netstat -tlnp | grep sshd

应该看到新端口(如 2222)已开始监听。

不可在公网路由的 IPv4 地址段

IPv4 地址空间中,有一部分地址段被 IANA 预留用于特殊用途,不能在互联网上直接路由。了解这些地址段,在网络规划和故障排查时都会用到。

下面按用途分类列出,排除多播(D 类,224.0.0.0/4)和预留(E 类,240.0.0.0/4)地址。

私有地址(RFC 1918)

这三个段是私有网络中最常见的:

  • 10.0.0.0/8 — 16,777,214 个地址
  • 172.16.0.0/12 — 1,048,574 个地址
  • 192.168.0.0/16 — 65,534 个地址

这些地址在互联网上不会被路由。如果在公网看到这些源地址的包,直接丢弃。

环回地址

127.0.0.0/8 — 全部指向本机。发往这个段的包由内核自己处理,不会离开主机。

unattended-upgrades:Debian/Ubuntu 自动安全更新

unattended-upgrades 是 Debian 和 Ubuntu 系统上用于自动安装安全更新的工具。对于没有专人日常维护的服务器,它能确保已知漏洞及时被修补,减少被攻击的风险。

安装

首先更新软件包列表并安装:

sudo apt update
sudo apt upgrade
sudo apt install unattended-upgrades

安装完成后,系统会自动创建一个 cron 任务和 systemd 计时器,用于周期性检查并安装更新。

配置

主要配置文件有两个:

启用 / 禁用自动更新

/etc/apt/apt.conf.d/20auto-upgrades

内容格式:

# 禁用
//APT::Periodic::Update-Package-Lists "0";
//APT::Periodic::Unattended-Upgrade "0";

# 启用:每天检查并自动安装
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

控制哪些包会被更新

/etc/apt/apt.conf.d/50unattended-upgrades

默认配置大致如下(// 开头的行被忽略):

Unattended-Upgrade::Allowed-Origins {
    "${distro_id}:${distro_codename}";
    "${distro_id}:${distro_codename}-security";
    "${distro_id}ESMApps:${distro_codename}-infra-security";
    "${distro_id}ESM:${distro_codename}-infra-security";
};

Unattended-Upgrade::Package-Blacklist {
    # 在此列出不需要自动更新的包
};

几个常用配置:

  • 只更新安全包:在 Allowed-Origins 中仅保留带 -security 后缀的行
  • 排除特定包:在 Package-Blacklist 中添加包名,每行一个
  • 自动重启:需要时(如内核更新),取消注释 Unattended-Upgrade::Automatic-Reboot "true"; 并设置 Unattended-Upgrade::Automatic-Reboot-Time "02:00";

铁威马NAS网卡启用IPv6

铁威马的系统配置和常见Linux系统配置不一样,搞了好半天。

假设需要启用IPv6的网卡为eth1

编辑 /etc/network 添加或修改配置为:

[eth1]
SLAVE=0
MTU=1500
DHCP=YES
IPV6_CONF=auto
IPV6_DEFROUTE=yes
IPV6INIT=YES
MtuStatus=0
echo 0 > /proc/sys/net/ipv6/conf/eth1/disable_ipv6

DHCP 获取IP

killall -2 nasips

Debian12 配置 NFS Server 静态挂载端口

因为要配置防火墙,需要固定NFS mount的绑定端口。之前的做法是配置/etc/default/nfs-kernel-server,配置RPCMOUNTDOPTS="--manage-gids -p 2050"。现在该配置文件已经失效,需要修改/etc/nfs.conf

[mountd]
# debug="all|auth|call|general|parse"
manage-gids=y
# descriptors=0
port=2050

群晖Active Backup 备份虚拟机相关端口

VMware vSphere

TCP Port Where Notes
443 vCenter Server, ESXi Host Default port used for connections to VMware infrastructure (vCenter server and ESXi host). Must be opened on vCenter Servers and ESXi hosts.
902 ESXi Host Port used for data transfer and moving. Must be opened on ESXi hosts.

Math-Symbols

本文摘自 https://oi-wiki.org/intro/symbol/


本文规定了 OI Wiki 中数学符号的推荐写法,并给出了一些应用范例。

本文参考了 GB/T 3102.11-1993 和 ISO 80000-2:2019 修订,故基本与国内通行教材的符号体系兼容。

符号的 LaTeX 写法请参考 本文章的源代码

数理逻辑

编号 符号,表达式 意义,等同表述 备注与示例
n1.1 $p \land q$ $p$ 和 $q$ 的合取 $p$ 与 $q$.
n1.2 $p \lor q$ $p$ 和 $q$ 的析取 $p$ 或 $q$;此处的 “或” 是包含的,即若 $p$,$q$ 中有一个为真陈述,则 $p \lor q$ 为真。
n1.3 $\lnot p$ $p$ 的否定 非 $p$.
n1.4 $p \implies q$ $p$ 蕴含 $q$;若 $p$ 为真,则 $q$ 为真 $q \impliedby p$ 和 $p \implies q$ 同义。
n1.5 $p \iff q$ $p$ 等价于 $q$ $(p \implies q) \land (q \implies p)$ 和 $p \iff q$ 同义。
n1.6 $(\forall~x \in A)~~p(x)$ 对 $A$ 中所有的 $x$, 命题 $p(x)$ 均为真 如果从上下文中可以得知考虑的是哪个集合 $A$, 可以使用记号 $(\forall~x)~~p(x)$.$\forall$ 称为全称量词。 $x \in A$ 的含义见 n2.1.
n1.7 $(\exists~x \in A)~~p(x)$ 存在一个属于 $A$ 的 $x$ 使得 $p(x)$ 为真 如果从上下文中可以得知考虑的是哪个集合 $A$, 可以使用记号 $(\exists~x)~~p(x)$.$\exists$ 称为存在量词。 $x \in A$ 的含义见 n2.1. $(\exists!~x)~~p(x)$(唯一量词)用来表示恰有一个 $x$ 使得 $p(x)$ 为真。 $\exists!$ 也可以写作 $\exists^1$.

扩展LVM磁盘空间

在虚拟化环境中,随着业务增长,磁盘空间不足是常见问题。本文记录在 CentOS 7/8 环境下扩展 LVM 磁盘空间的完整流程。

扩展虚拟机磁盘

首先在虚拟化平台(VMware / KVM / Proxmox 等)上扩大虚拟磁盘容量。以 VMware 为例:

  1. 关闭虚拟机(部分平台支持在线扩容)
  2. 编辑虚拟机设置,将磁盘容量从原来的 50GB 扩展到 100GB
  3. 启动虚拟机

扩展后,操作系统层面不会自动识别新增的空间,需要手动操作。

确认当前磁盘状态

# 查看块设备信息
lsblk

# 查看磁盘分区表
fdisk -l /dev/sda

# 查看PV/VG/LV状态
pvdisplay
vgdisplay
lvdisplay

假设当前磁盘 /dev/sda 有一个分区 /dev/sda1,PV 为 /dev/sda1,VG 名为 centos,LV 名为 root,挂载点为 /。