Durch den Parameter learn-address in der Serverkonfigurationsdatei wird der Server angewiesen beim Verbindungsaufbau, bei Verlust der Verbindung und bei erneuter Anfrage ein Skript auszuführen. Die Syntax: learn-address ./learn_address_script.sh
Dem Skript werden beim Aufruf folgende Parameter übergeben:
- Verbindungsaufbau(add): add IP-Adresse CommonName
- Erneuter Verbindungsaufbau(update): update IP-Adresse CommonName
- Verlust der Verbindung(delete): delete IP-Adresse
Gestern erhielt ich aber OpenVPN plötzlich immer folgende Fehlermeldung:
openvpn_execve: external program may not be called due to setting of –script-security level
script failed: external program fork failed
Mein Learn-Skript wurde nicht mehr aufgerufen. Ich habe mir nämlich ein kleines Skript gebaut, was anhand des CommonName spezielle iptables Regeln für den jeweiligen VPN-User setzt. Dieses Problem tirtt auf, weil der Parameter script-security standardmäßig den Wert 1 hat und damit nur vordefinierte Programme wie z.B. ifconfig, ip, route oder netsh aufgerufen werden dürfen. Ein Workaround ist diesen Parameter auf den Wert 2 zu setzen und damit den Aufruf aller(!) benutzerdefinierten Skripte zu erlauben. Dazu wird folgende Zeile in der Server-Konfiguration ergänzt: script-security 2