IPsec Autostart unter Mac OS X

JackCarver

Junior Member
Hallo,

im Gegensatz zu OpenVPN mit zb Tunnelblick hat man leider mit dem Mac OS eigenen IPsec Client erstmal keine Möglichkeit eine bestimmte IPsec Verbindung bei Systemstart automatisch zu starten. Das ganze lässt sich allerdings mit ein klein wenig Handarbeit problemlos realisieren. Die Tools dazu sind alle bereits vorhanden, es muss dazu keine Zusatzsoftware installiert werden.

Ich teile das mal in zwei Teile, in Teil 1 gleich hier wird eine gewünschte IPsec Verbindung automatisch bei Systemstart gestartet, danach beendet sich das Programm, in Teil 2 weiter unten bleibt das Programm aktiv und überwacht die IPsec Verbindung. Sollte diese Clientseitig abbrechen, weil zb eure Internetverbindung unterbrochen wurde, so startet es diese IPsec Verbindung wieder sobald das Internet wieder verfügbar ist.

Der Mac OS eigene IPsec Client hat leider das Problem, dass dieser nach einer gewissen Zeit von selbst clientseitig die IPsec Verbindung trennt. Das scheint laut Postings in anderen Foren wohl bis zu Mac OS X 10.6 zurückzugehen und auch unter dem derzeit neuesten Mac OS X Mavericks ist dieses Problem weiterhin vorhanden.

Daher:
Wer nicht nur kurzzeitig die IPsec Verbindung benötigt, sondern dauerhaft sollte das Skript unter Teil 2 verwenden, da dieses die Verbindung im Hintergrund laufend überwacht und auch zb nach dem Aufwachen aus dem Ruhezustand sofort wieder startet.
Ich gehe jetzt mal von folgendem Szenario aus:

- Es ist bereits eine IPsec Verbindung unter Systemeinstellungen -> Netzwerk funktionsfähig eingerichtet und ihr habt den Dienst PP-Frankfurt genannt

Wie das dann bei jedem individuell anders ist ist für dieses Beispiel unerheblich, ihr müsst lediglich den Namen im Skript anpassen.

Los gehts:

1, Ihr startet den AppleScript-Editor, zu finden unter "Programme -> Dienstprogramme", dann öffnet sich folgende Maske:



Hier klickt ihr auf "Neues Dokument".


2, In das nun sich öffnende Fenster kopiert ihr folgnedes Skript hinein:

set err to true
repeat while err is true
try
do shell script "ping -o www.apple.com"
exit repeat
on error
delay (1)
end try
end repeat
tell application "System Events"
tell network preferences
connect service "PP-Frankfurt"
end tell
end tell
Kurze Erklärung dazu:

Wenn euer Rechner startet kann es sein, zb wenn ihr ne SSD habt, dass dieses Programm bereits gestartet wird, wenn noch gar keine Netzwerkverbindung vorhanden ist. Um Fehlermeldungen zu vermeiden pingt dazu das Skript in einer Endlosschleife solange apple.com an bis keine Fehlermeldung zurück geliefert wird. Erst danach startet es eure IPsec Verbindung PP-Frankfurt.
Kleiner Tipp:

Unter "Bearbeiten -> Suchen -> Suchen und Ersetzen" könnt ihr ganz einfach nach PP-Frankfurt suchen und den Eintrag im Skript durch euren eigenen ersetzen.


3, Das ganze sollte nun so aussehen:



Ihr klickt einmal auf Übersetzen um zu sehen, dass alles fehlerfrei übersetzt wird. Das PP-Wherever lautet bei euch natürlich wie im Skript vorher PP-Frankfurt oder so wie die zu startende IPsec Verbindung eben bei euch heißt. PP-Frankfurt ist hier ja nur als Beispiel zu sehen.


4, Ihr klickt nun auf "Ablage -> sichern" und speichert euer Skript folgendermaßen ab:



Es wird also als Programm unter Dokumente gesichert.


5, Um nun das Programm mit Systemstart automatisch zu starten geht ihr auf "Systemeinstellungen -> Benutzer und Gruppen -> Anmeldeobjekte", dann sollte das so ungefähr aussehen:



Nun fügt ihr einfach über das "+" euer neues Programm hinzu. Bei jedem Systemstart wird das nun automatisch gestartet und sobald euer Netzwerk verfügbar ist wird automatisch die gewünschte IPsec Verbindung gestartet.

Teil zwei folgt sogleich.
 

JackCarver

Junior Member
Teil 2:

Hier geht es wie oben schon angemerkt um eine Möglichkeit zu Überwachen ob eine bestimmte IPsec Verbindung noch aktiv ist und im Falle des Abbrechens neu gestartet wird. Das ganze funktioniert identisch zu Teil 1, es ist lediglich ein anderes Skript zu verwenden, nämlich:


set err to true
repeat while err is true
try
do shell script "ping -o www.apple.com"
exit repeat
on error
delay (1)
end try
end repeat
tell application "System Events"
tell network preferences
connect service "PP-Frankfurt"
end tell
end tell
on idle
set err to true
tell application "System Events"
tell network preferences
set myConnection to the service "PP-Frankfurt"
if current configuration of myConnection is not connected then
repeat while err is true
try
do shell script "ping -o www.apple.com"
exit repeat
on error
delay (1)
end try
end repeat
tell application "System Events"
tell network preferences
connect service "PP-Frankfurt"
end tell
end tell
end if
end tell
end tell
return (1)
end idle
Das ganze funktioniert im ersten Teil identisch zum Skript unter Teil 1, dh es wird eine gewünschte IPsec Verbindung bei Systemstart gestartet. Zusätzlich bleibt das Programm allerdings weiterhin aktiv und überwacht diese Verbindung. Sollte sie Clientseitig abreissen wird sobald das Internet wieder verfügbar ist die Verbindung erneut gestartet.

Auch hier ist das PP-Frankfurt durch den Namen eurer eigenen gewünschten IPsec Verbindung unter "Systemeinstellungen > Netzwerk" zu ersetzen.

Beim Abspeichern als Programm ist allerdings hier darauf zu achten, dass der Punkt "Nach run-Handler anzeigen" angehakt ist (unter älteren Mac OS X Versionen kann der Punkt auch "Nicht automatisch beenden" heißen), das sieht dann so aus:




Sollte es Probleme oder Anregungen geben, so antwortet einfach hier. Ich habe beide Tools unter OS X Mavericks getestet, gehe aber davon aus, dass sie zumindest auch unter Lion/Mountain Lion lauffähig sind.

Edit:
Skript angepasst, dass erst dann in die repeat Schleife zum Test auf Konnektivität gewechselt wird, wenn auch tatsächlich die IPsec Verbindung im Laufenden Betrieb abgebrochen ist.

Skript lässt sich nun über "Rechtsklick > Beenden" abbrechen, bei Shutdown, Neustart oder Ruhezustand wird es automatisch beendet.
 

PP Frank

Staff member
Hallo,

OK. Ich habe das durchgetestet. Ich habe erst den zweiten Teil getestet, da mir das Script eigentlich besser gefiel. Problem an der Sache ist nur, das dieses Script den Neustart bzw Shutdown verhindert und blockiert, da es Non-Stop läuft. Man muss das vorher mit "Sofort Beenden" zumachen, danach geht der Rechner erst aus. Eigentlich nicht schlimm, auf meinem MacMini der 4 Uhr Nachts mit gestetzten An und Aus-Zeiten aber ein wenig suboptimal. Also das erste ist bei mir auf dem MacMini gelandet. Tun es beide wirklich gut.

Top Jack, funzt 1a. Ist wirklich nett was einem Apple so für Tools und Werkzeuge gleich von Haus aus anbietet und wie diese arbeiten.
 

JackCarver

Junior Member
Die Lösung heißt "on idle", ich werde das ins Skript unter Teil 2 mit einpflegen und n Bild dazu, wie das Programm dafür zu speichern ist. Danach kann man das Skript simpel über rechtsklick > beenden schließen oder einfach nen shutdown machen, was das Skript ebenfalls schließt.

Das klappt auch mit dem Ruhezustand, nach dem Aufwachen verbindet IPSec wieder.
 

PP Frank

Staff member
OK. Shutdown klappt jetzt damit. Ich muss nochmal beobachten wie das beim Ruhezustand ist. Mir ist vorhin mit Script 1 aufgefallen, dass irgendwann die Meldung kommt das die Verbindung getrennt ist bla bla bla.. Wird warscheinlich zwischendurch wegen dem Ruhezustand sein. Werde ich aber morgen im Laufe des Tages sehen
 

JackCarver

Junior Member
Bei Skript 1 gibt es keinen Reconnect mehr, das ist lediglich zum Autostart der Verbindung am Anfang, geht dein Mac in Ruhezustand, dann ist die Verbindung weg. Soll das nach dem Ruhezustand wieder gestartet werden, dann muss man Skript 2 nehmen.
Es werden nur aktive Programme wieder ausgeführt, die VOR dem Ruhezustand aktiv waren. Das Skript unter Teil 1 beendet sich sobald die IPsec Verbindung steht.
 

PP Frank

Staff member
Ja klingt logisch: Daher dann auch die Fehlermeldung.... Ich muss eh abwarten bis wir RPF bei IPSec IKEV2 drin haben, da Plex-Server sich ausserhalb des lokalen Netzes sonst nicht verbinden lässt :p

Aber danke für deine Hilfe usw..
 

blbaerch

New Member
Vielen Dank für die Anleitung. Leider wirft Skript2 bei mir folgende Fehler aus (alles korrekt eingerichtet unter "Netzwerk" und manuelle Verbindung klappt auch, OSX 10.11.6):

Unbenannt-1.jpg Unbenannt-2.jpg
 

PP Frank

Staff member
Versuch mal unsere neuen automatischen Configs aus dem Downloadbereich. Da ist auch On-Demand mit dabei....
 

PP Frank

Staff member
Also bei mir auf dem MacMini liefen diese Configs Wochenlang durch, ohne Probleme. Ich empfehle bei MacOS und auch iOS 2 oder 3 verschiedene Server-Configs zu installieren, damit man auch mal fix wechseln kann, wenn ein Server mal down oder anders nicht erreichbar ist. Mehr brauchst du nicht. Wenn du versuchst alle Server zu importieren, dann klickst du dich tot. Ist ja aber eh nicht Sinn der Sache ;)
 
Top