启动 WireGuard 服务器时无法启动 LSB

启动 WireGuard 服务器时无法启动 LSB

总结问题

你好,我有一个 Ubuntu Server 22.04,我在上面运行 WireGuard 服务器。最近(我不知道具体什么时候)WireGuard 停止工作了,这可能是因为我对服务器做了更改。

提供详细信息和任何研究

最近的变化包括:

  • 安装 qemu-kvm,
  • 尝试使用 NetworkManager 和 NetPlan 为虚拟机配置桥接接口,但最终失败了,可能是因为我在 docker 上运行了 bind9 作为 DNS 服务器,为了创建它,我必须禁用 resloved(但这是前一段时间的事了,并没有打扰 WireGuard)
  • 禁用 NetworkManager 并改用 Netplan

启动服务器的日志:

Starting WireGuard via wg-guick(8) for wg0...
[OK] Started Dispatcher daemon for systemd-networkd.
[FAILED] Failed to start LSB: Control pmcd (the collection daemon for PCP).
See 'systemctl status pmcd.service' for details.
[FAILED] Failed to start LSB: Control pmie (performance inference engine for PCP).
See 'systemctl status pmie.service' for details.
[FAILED] Failed to start LSB: Control pmlogger the performance metrics logger for PCP).
See 'systemctl status pmlogger.service' for details.
[FAILED] Failed to start LSB: Control pmproxy (the pmcd proxy daemon for PCP).
See 'systemctl status pmproxy.service' for details.
[OK] Finished Permint User Sessions.
[FAILED] Failed to start WireGuard via wg-quick(8) for wg0.
See 'systemctl status [email protected]' for details.

基本上所有这些 systemctl status 命令都返回没有 /usr/share/pcp/lib/rc-proc.sh 的信息

× pmie.service - LSB: Control pmie (performance inference engine for PCP)
     Loaded: loaded (/etc/init.d/pmie; generated)
     Active: failed (Result: exit-code) since Sat 2024-05-04 20:27:01 CEST; 19min ago
       Docs: man:systemd-sysv-generator(8)
    Process: 966 ExecStart=/etc/init.d/pmie start (code=exited, status=2)
        CPU: 6ms

May 04 20:27:01 hagrid systemd[1]: Starting LSB: Control pmie (performance inference engine for PCP)...
May 04 20:27:01 hagrid pmie[966]: /etc/init.d/pmie: 43: .: cannot open /usr/share/pcp/lib/rc-proc.sh: No such file
May 04 20:27:01 hagrid systemd[1]: pmie.service: Control process exited, code=exited, status=2/INVALIDARGUMENT
May 04 20:27:01 hagrid systemd[1]: pmie.service: Failed with result 'exit-code'.
May 04 20:27:01 hagrid systemd[1]: Failed to start LSB: Control pmie (performance inference engine for PCP).

wireguard 返回:

× [email protected] - WireGuard via wg-quick(8) for wg0
     Loaded: loaded (/lib/systemd/system/[email protected]; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Sat 2024-05-04 20:52:39 CEST; 36s ago
       Docs: man:wg-quick(8)
             man:wg(8)
             https://www.wireguard.com/
             https://www.wireguard.com/quickstart/
             https://git.zx2c4.com/wireguard-tools/about/src/man/wg-quick.8
             https://git.zx2c4.com/wireguard-tools/about/src/man/wg.8
    Process: 1010 ExecStart=/usr/bin/wg-quick up wg0 (code=exited, status=1/FAILURE)
   Main PID: 1010 (code=exited, status=1/FAILURE)
        CPU: 17ms

May 04 20:52:39 hagrid systemd[1]: Starting WireGuard via wg-quick(8) for wg0...
May 04 20:52:39 hagrid wg-quick[1010]: wg-quick: `wg0' already exists
May 04 20:52:39 hagrid systemd[1]: [email protected]: Main process exited, code=exited, status=1/FAILURE
May 04 20:52:39 hagrid systemd[1]: [email protected]: Failed with result 'exit-code'.
May 04 20:52:39 hagrid systemd[1]: Failed to start WireGuard via wg-quick(8) for wg0.

描述你尝试过的方法

我在网上搜索了这些错误,发现这里我可以运行wg-quick down wg0并重新启动 wg-quick 服务,它工作正常,但当我重新启动服务器时,这个问题仍然存在,我认为将这些命令作为 cronjob 运行不是一个好主意。但我在网上找不到有关丢失 rc-proc.sh 文件的任何信息。

如果有人能帮助我,我将非常感激。提前致谢。

编辑1

这些问题可能没有什么关联,只是运气不好,这些日志一起出现,看起来是相关的。

我已经设法解决了 WireGuard 的问题,但我不确定最初的问题是什么。

我的初始 WireGuard 配置中的 iptable 规则:

PostUp = iptables -I INPUT -p udp --dport 51820 -j ACCEPT
PostUp = iptables -I FORWARD -i enp2s0 -o wg0 -j ACCEPT
PostUp = iptables -I FORWARD -i wg0 -j ACCEPT
PostUp = iptables -t nat -A POSTROUTING -o enp2s0 -j MASQUERADE
PostUp = ip6tables -I FORWARD -i wg0 -j ACCEPT
PostUp = ip6tables -t nat -A POSTROUTING -o enp2s0 -j MASQUERADE
PostDown = iptables -D INPUT -p udp --dport 51820 -j ACCEPT
PostDown = iptables -D FORWARD -i enp2s0 -o wg0 -j ACCEPT
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT
PostDown = iptables -t nat -D POSTROUTING -o enp2s0 -j MASQUERADE
PostDown = ip6tables -D FORWARD -i wg0 -j ACCEPT
PostDown = ip6tables -t nat -D POSTROUTING -o enp2s0 -j MASQUERADE

WireGuard 配置中的新 iptable 规则:

PostUp = ufw route allow in on wg1 out on enp2s0
PostUp = iptables -t nat -I POSTROUTING -o enp2s0 -j MASQUERADE
PostUp = ip6tables -t nat -I POSTROUTING -o enp2s0 -j MASQUERADE
PreDown = ufw route delete allow in on wg1 out on enp2s0
PreDown = iptables -t nat -D POSTROUTING -o enp2s0 -j MASQUERADE
PreDown = ip6tables -t nat -D POSTROUTING -o enp2s0 -j MASQUERAD

我必须创建新的 WireGuard 接口,并使用新名称 wg1 而不是 wg0,并且更改了端口。其余配置保持不变。希望这对某些人有帮助。

顺便说一句,如果有人知道 LSB 是什么以及如何解决这个问题,我将不胜感激。

相关内容