使用 systemd 在系统启动时自动连接到 VPN

使用 systemd 在系统启动时自动连接到 VPN

我想在系统启动时自动启动VPN,并在网络重新连接时重新连接(由于任何原因断开连接后)。

连接的命令是protonvpn-cli connect -f

断开连接的命令是protonvpn-cli disconnect

auto_vpn.service创建了一个名为in 的文件,~/.config/systemd/user内容如下:

[Unit]
Description=Connect to Proton-VPN
Requires=graphical-session.target
After=graphical-session.target

[Service]
Type=simple
ExecStart=/usr/bin/protonvpn-cli connect -f
ExecStop=/usr/bin/protonvpn-cli disconnect
Restart=on-failure
RestartSec=30
StartLimitInterval=350
StartLimitBurst=10
RemainAfterExit=yes

[Install]
WantedBy=graphical-session.target

然后跑:

systemctl --user daemon-reload
systemctl --user start auto_vpn.service
systemctl --user enable auto_vpn.service

现在的问题是,该服务有效。但是当我重新启动电脑时,该服务无法启动(尽管它已启用)。此外,我不确定当网络重新连接时(由于任何原因断开连接后)它是否会重新启动。

答案1

因此,即使我不熟悉 systemd 使用的许多选项,您也可以尝试更改以下内容以使其执行并保持原样。

删除,,BindsTo=network.service因为我认为它没有用。我已经运行过这样的事情而不需要它。

Type=simple
ExecStart=/usr/bin/protonvpn-cli connect -f
ExecStop=/usr/bin/protonvpn-cli disconnect

但请确保protonvpn-cli目录下有一个名为的条目/usr/bin。它可能位于其他位置,具体取决于您的安装方式。

在这种情况下,请使用whereis来查找包。

答案2

auto_vpn.service创建一个名为in 的文件,~/.config/systemd/user内容如下:

[Unit]
Description=Connect to Proton-VPN
BindsTo=graphical-session.target

[Service]
Type=simple
ExecStart=/usr/bin/protonvpn-cli connect -f
ExecStop=/usr/bin/protonvpn-cli disconnect
Restart=on-failure
RestartSec=30
StartLimitInterval=350
StartLimitBurst=10
RemainAfterExit=yes

[Install]
WantedBy=xsession.target

现在运行:

systemctl --user daemon-reload
systemctl --user start auto_vpn.service
Run `systemctl --user enable auto_vpn.service

就是这样。

相关内容