Shrew Soft VPN Client auf Ubuntu 13.04 / 13.10 installieren

In früheren Versionen fand sich der Shrew Soft VPN Client im offiziellen Repository Ubuntus. Leider ist das nicht mehr der Fall. Allerdings lässt sich der Client recht einfach auch für neuere Ubuntu Versionen installieren.

Changelog

  • 02. Mär – Init-Script „update-rc.d“ was missing

Client Installation

Zuerst den Client von der offiziellen Shrew Soft Seite laden. Zum aktuellen Zeitpunkt ist die neueste Version 2.2.1. Im Anschluss entpacken und in das neue Verzeichnis wechseln:

cd ~/Downloads
wget https://www.shrew.net/download/ike/ike-2.2.1-release.tbz2
tar xfvj ike-2.2.1-release.tbz2
cd ike

Folgende Abhängigkeiten sind für das Bauen des Clients notwendig:

sudo apt-get install cmake build-essential libedit-dev libssl-dev flex bison lsb-cxx lsb-qt4 qt4-qmake libqt4-core libqt4-dev

Nun kann der Client kompiliert werden:

cmake -DCMAKE_INSTALL_PREFIX=/usr -DQTGUI=YES -DETCDIR=/etc -DNATT=YES
make
sudo make install

Leider wird hierbei keine Verknüpfung zur GUI erstellt, auch fand ich kein hochauflösendes Icon. Google hat geholfen. Das Icon habe ich auf meinen Server geladen. Eine Quellenangabe hierzu fand ich leider nicht:

sudo wget https://www.debinux.de/wp-content/uploads/shrew.png -O /usr/share/icons/shrew.png
sudo nano /usr/share/applications/ike.desktop

Im Editor nun folgenden Inhalt einfügen:

[Desktop Entry]
Name=Shrew Soft VPN Access Manager
Name[en_CA]=Shrew Soft VPN Access Manager
Name[de]=Shrew Soft VPN Zugangsverwaltung
Comment=Application to manage remote site configurations
Comment[en_CA]=Application to manage remote site configurations
Comment[de]=Anwendung zum Verwalten der VPN-konfigurationen
Exec=/usr/bin/qikea
Icon=/usr/share/icons/shrew.png
Terminal=false
Type=Application
Categories=Network

Das ganze sieht dann etwa so aus:

Shrew Soft VPN Icon
Shrew Soft VPN Icon

Die Beispielkonfiguration für den Daemon, der parallel läuft, reicht in der Regel aus. Diese Konfiguration hat erstmal nichts mit der VPN Konfiguration zu tun, die man später im Client importiert/erstellt:

sudo cp /etc/iked.conf.sample /etc/iked.conf

Der Client kann nun gestartet werden, allerdings wird eine Verbindung zum Server nicht funktionieren, da der „iked“ Dienst erst noch gestartet werden muss. Der Fehler lautet dann etwa „failed to attach to key daemon„.

Automatischer Start

Anstatt die Datei „/usr/sbin/iked“ jedes mal manuell anzustoßen, kann entweder ein Upstart- oder Init-Script verwendet werden.

Upstart

sudo nano /etc/init/iked.conf

Folgender Inhalt muss eingefügt werden:

# this script will start/stop the IKE daemon
# that the IKE client depends upon

description "Start and stop the IKE daemon"
expect fork

start on startup
stop on runlevel [!2345]
script
exec /usr/sbin/iked
end script

Anschließend den Dienst starten:

sudo initctl start iked

Init-Script

sudo nano /etc/init.d/iked

Folgender Inhalt muss eingefügt werden:

#! /bin/sh -e
### BEGIN INIT INFO
# Provides: IKE daemon
# Required-Start: $network $syslog
# Required-Stop:  $network $syslog
# Default-Start:  2 3 4 5
# Default-Stop:   0 1 6
# Description:    start and stop the Shrew Soft IKE daemon
### END INIT INFO

test -x /usr/sbin/iked || exit 0

. /lib/lsb/init-functions

export PATH="${PATH:+$PATH:}/usr/sbin:/sbin"

case "$1" in
  start)
	log_begin_msg "Starting Shrew Soft IKE daemon..."
	start-stop-daemon --start --quiet --exec /usr/sbin/iked || log_end_msg 1
	log_end_msg 0
	;;
  stop)
	log_begin_msg "Stopping Shrew Soft IKE daemon..."
	start-stop-daemon --stop --quiet --oknodo --exec /usr/sbin/iked || log_end_msg 1
	log_end_msg 0
	;;

  restart)
	log_begin_msg "Restarting Shrew Soft IKE daemon..."
	start-stop-daemon --stop --quiet --oknodo --retry 30 --exec /usr/sbin/iked || log_end_msg 1
	start-stop-daemon --start --quiet --exec /usr/sbin/iked || log_end_msg 1
	log_end_msg 0
	;;

  *)
	log_success_msg "Usage: /etc/init.d/iked {start|stop|restart}"
	exit 1
esac

exit 0

Die Datei ausführbar machen und den Dienst installieren und starten:

sudo chmod +x /etc/init.d/iked && sudo update-rc.d iked defaults && sudo /etc/init.d/iked start

Die Verbindung sollte jetzt funktionieren!

13 Antworten auf “Shrew Soft VPN Client auf Ubuntu 13.04 / 13.10 installieren

  1. Marc

    Hi,
    ich hab hier ubuntu mate auf dem Laptop und lies sich auch so compilieren und installieren – er baut die verbindung auch auf… sehe auch bei ifconfig das tap0 device – aber ich kann einfach nicht die VPN IPs, die ich über die VPN erreichen muss, erreichen. tracepath scheitert auch direkt „send failed“ – hat jm ne Idee? iked und die Gui klappen und es steht auch „tunnel enabled“ – hab auch die IP von der gegenstelle erhalten.
    Bin auf Tips angewiesen – Ubuntu Mate ist im Grunde ubuntu 15er mit MATE Desktop

  2. Volgecherev

    Ich freue mich, dass es so weit klappt (der reboot steht noch aus). Das meckern sieht so aus:
    update-rc.d: using dependency based boot sequencing
    insserv: warning: script ‚K01iked‘ missing LSB tags and overrides
    insserv: warning: script ‚iked‘ missing LSB tags and overrides
    Vielen, vielen Dank für die Hilfe und die Hinweise. Ich werde Dein (junges) Blog weiter verfolgen…
    Guß, Jörg.

    1. André P. Autor

      Hi, freut mich natürlich zu hören! :)
      Ich habe dem Beitrag oben das init-Script angefügt und die LSB tags ergänzt. So sollte das auch ohne Fehler funktionieren. Am besten kannst du das alte Script erst mit „sudo update-rc.d -f iked remove“ deaktivieren, durch das neue ersetzen (die Datei) und anschließend mit „sudo update-rc.d iked defaults“ das neue installieren.

      Grüße
      Andŕe

  3. Volgecherev

    Moin.
    Auf der Suche nach einer Installationsanleitung für Shrew VPN 2.2.1 auf Crunchbang 11 Waldorf (Debian 7 Wheezy) bin ich auf diese Seite gekommen. Wird dieses „how to“ auf diesem System auch funktionieren? Ich würde mir ungerne meine drische Installation versauen… Also vielen Dank schon mal für die Antwort und großes Lob für diese kleine Anleitung. Vor einer Woche hatte ich noch Ubuntu 12.04 LTS drauf (dort war IKE in den Paketquellen).
    Besten Gruß.

    1. André P. Autor

      Hi,
      die Abhängigkeiten, die via apt-get installiert werden, werden höchstwahrscheinlich andere Namen haben. Debian kommt auch in wheezy ohne Upstart, weshalb der Autostart dann via klassischem init Skript geregelt werden müsste. Ist jetzt alles kaum mehr Arbeit, auch wenn es sich so anhört.

      Sollte ich morgen dazu kommen, werde ich mir das anschauen.

      Grüße
      André

      1. Volgecherev

        Inzwischen konnte ich meine Neugier doch nicht zügeln. Das Komplilieren und anschliessende manuelle Starten des Dienstes und des Prpgramms funkionieren einwandfrei und damit identisch dem hier aufgezeigten Weg.
        Damit bleibt nur noch das automatische Starten des Diensts nach Rechnerstart, welches so nicht läuft. Das überfordert z. Z. noch meinen Kenntnisstand (Upstart vs SystemD !??!?!) …
        Die Verzeichnisse existieren alle. Die Dateien habe ich erstellt. Einzig das „sudo initctl start iked“ geht nicht. Ich habe übergangsweise den Dienst jetzt per „sudo iked &“ gestartet. Das würde jedoch den Neustart den Überstehen.

      2. Volgecherev

        So. Unabhängig vom Verständnis über den Linux-Systemstart habe ich folgendes erfolgreich getestet (noch ohne reboot).
        sudo cp ~/downloads/ike/script/linux/iked /etc/init.d/
        sudo /etc/init.d start
        … und der Dienst startet.

        1. André P. Autor

          Das klingt ja erstmal gut! :)
          Das init-Script habe ich noch gar nicht gesehen, aber habe es gerade installiert, funkioniert!
          Nachdem du das Script kopiert hast, musst du noch die Links für die jeweiligen Runlevel installieren:

          „sudo update-rc.d iked defaults“

          Wahrscheinlich wird das System meckern:
          „update-rc.d: warning: /etc/init.d/iked missing LSB information“
          Das ist aber egal, der benutzt dann die typischen Runlevel, die für den iked ausreichen.

          Grüße
          André

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.