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自建记录