OpenVPN <--> ppp0 ... StartUp-Probleme/race condition

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
Benutzeravatar
mistersixt
Beiträge: 6601
Registriert: 24.09.2003 14:33:25
Lizenz eigener Beiträge: GNU Free Documentation License

OpenVPN <--> ppp0 ... StartUp-Probleme/race condition

Beitrag von mistersixt » 06.09.2016 08:43:56

Moin moin,

ich habe ein DSL-Gateway, das sich per PPP zum Internet-Provider einwählt, spezifiziert in /etc/network/interfaces, und ich habe einen OpenVPN-Service (via systemd) erstellt, der mir ein OpenVPN-Tunnel zu einer Gegenstelle automatisch aufbauen soll, das Gateway läuft mit Debian Jessie.

Bei einem Reboot scheint es aber ein Race-Condition zu geben zwischen pppd und dem OpenVPN, denn:

Code: Alles auswählen

...
ovpn-eurosrv[674]: TCP/UDP: Socket bind failed on local address [AF_INET]80.147.200.XYZ:1194: Cannot assign requested address
systemd[1]: Failed to start OpenVPN connection to eurosrv
....
Sprich, systemd will den OpenVPN-Service starten, obwohl das ppp-Interface noch gar keine IP zugewiesen bekommen hat. Im OpenVPN-Unit-File steht drin...

Code: Alles auswählen

...
After=network.target network-online.target
...
... aber das reicht offensichtlich nicht. Ideen Jemand :) ?

Gruss, mistersixt.


Jemand eine Idee, wie ich das verbessern kann?
--
System: Debian Bookworm, 6.11.x.-x-amd64, ext4, AMD Ryzen 7 3700X, 8 x 3.8 Ghz., Radeon RX 5700 XT, 32 GB Ram, XFCE

Benutzeravatar
MSfree
Beiträge: 11750
Registriert: 25.09.2007 19:59:30

Re: OpenVPN <--> ppp0 ... StartUp-Probleme/race condition

Beitrag von MSfree » 06.09.2016 11:18:32

Naja, da wird wohl die Namensauflösung noch nicht funktionieren. Im Grunde machst du nichts falsch mit deiner Unit. Du könntest OpenVPN aber auch quasi auf "Dauerfeuer" stellen. Systemd startet dann OpenVPN neu, wenn es abgestürtzt ist oder sich wegen fehlender Konnektivität selbst beendet:

Code: Alles auswählen

[Unit]
Description=OpenVPN Service
After=network.target

[Service]
ExecStart=/usr/bin/openvpn -weitere Konfigparameter
Type=simple
Restart=always
KillMode=process

[Install]
WantedBy=multi-user.target
Es gibt noch Optionen, die ein unmittelbares Neustarten verhindern, also z.B. erst nach 5 Sekunden ein Dienst neu gestartet wird.

Antworten