调用 ifconfig up 和 openvpn 服务的脚本将不起作用,但如果接口已经启动,则它可以工作

调用 ifconfig up 和 openvpn 服务的脚本将不起作用,但如果接口已经启动,则它可以工作

我面临一个奇怪的问题,我有一个像这样的脚本:

ifconfig eth0 up
sleep 2
systemctl start [email protected]

如果eth0在调用此脚本之前关闭,则 openvpn 将无法连接。journalctl回报

openvpn 控制进程已退出代码已退出状态 = 1,无法启动与客户端的 OpenVPN 连接

但是,如果我从第一次调用开始第二次重新运行相同的脚本eth0,它就可以正常工作。知道发生了什么以及如何解决这个问题吗?

答案1

Arch 非常适合这种配置。然而,你真的不应该ifconfig在 Arch 上使用,它iproute2很久以前就已经切换到了,最好这样做:

ip link set dev eth0 up
dhcpcd eth0

(“更好”是因为你有两个步骤,并且你确切地知道哪个步骤失败。另外,我相信你没有eth0类似的东西enp1s0,但这只是一个小细节。)


无论如何,ifconfig eth0您可以使用以下命令启动有线接口:

systemctl start [email protected]

然后你可以简单地更改openvpn服务,首先复制服务文件:

cp /usr/lib/systemd/system/[email protected] /etc/systemd/system/[email protected]

然后将其(副本)更改为:

[Unit]
...
[email protected]
[email protected]

(这并不是太多的黑客行为,即使拱门维基建议这样做。该文章存在争议,因为它使用了该/usr/lib/systemd文件,所以我通过首先复制它来调整答案以使其成为正确的方式)


现在您应该能够启动 VPN

systemctl start [email protected]

并且网络将首先启动。并停止两者:

systemctl stop [email protected]

相关内容