Erste Schritte Debian

Nachdem im HOOC ManagementPortal eine Anlage erstellt wurde, erfolgt die Aktivierung gemäss folgenden Punkten:

  1. Seriennummer im HOOC ManagementPortal eingeben und das HOOC-Gateway mit einer Anlage linken.
  2. Zu HOOC-Gateway -> Konfiguration navigieren.
  3. Plattform / Prozessor wählen sowie als Paket Binary auswählen. Dann das HOOC Connect Binary ohne VPN-Zugangsdaten auf die eigene Hardware herunterladen.
  4. Das HOOC Connect Binary mittels Kommando mv in app_embeddedgateway umbennen.
  5. Mittels Kommando chmod +x das app_embeddedgateway ausführbar machen.
  6. Das app_embeddedgateway mit dem Parameter hwid starten.
  7. Den 64-stelligen Hardware-Identifikations-Code (Console Output app_embeddedgateway) in das entsprechende Feld im HOOC ManagementPortal kopieren und aktivieren.

Der Hardware-Identifikations-Code (hwid) ist ein Code zur eindeutigen Erkennung der jeweiligen Hardware. Dadurch wird sichergestellt, dass ein Lizenzschlüssel einzig von der entsprechenden Hardware verwendet werden kann. Erst nach erfolgreicher Bestätigung des hwid kann das HOOC Connect Binary mit den VPN-Zugangsdaten der Anlage heruntergeladen werden.

  1. Plattform / Prozessor mit Paket Binary auswählen und dann das HOOC Connect Binary mit VPN-Zugangsdaten auf die eigene Hardware herunterladen.
  2. Das HOOC Connect Binary mittels Kommando mv in app_embeddedgateway umbenennen.
  3. Mittels Kommando chmod +x das app_embeddedgateway ausführbar machen.
  4. Das app_embeddedgateway als root-user starten.

Nun sollte der Console Output INFO[0000] Successfully connected to VPN... ersichtlich sein. Zudem wird der Status der VPN-Verbindung auch im HOOC ManagementPortal angezeigt.

Use Case Bridge

Das HOOC Connect Binary erstellt beim Starten das Netzwerkinterface hooc-tap0. Falls nun dieselbe Funktionalität wie beispielsweise beim HOOC Connect H gewünscht ist, muss eine Brücke zwischen dem physikalischen Netzwerkinterface, beispielsweise eth0, und dem hooc-tap0 konfiguriert werden. Bei den untenstehenden Konfigurationsbeispielen bezieht die Brücke per DHCP eine IP-Adresse.

Falls iptables verwendet werden, stellt der Befehl iptables -A FORWARD -j ACCEPT -i br-hooc -o br-hooc sicher, dass die Brücke Datenpakete korrekt weiterleitet. Falls Docker verwendet wird, muss dieser Befehl zwingend ausgeführt werden.

Nicht-persistente Konfiguration

Die nicht-persistente Konfiguration ist nach einem Neustart des Betriebssystems nicht mehr vorhanden. Es ist sicherzustellen, dass die Pakete net-tools und bridge-utils installiert sind. Die untenstehenden Befehle sind als root-user auszuführen.

# Create the bridge br-hooc
brctl addbr br-hooc
# Add the physical eth0 to the br-hooc bridge
brctl addif br-hooc eth0
# Remove IP eth0
ifconfig eth0 0.0.0.0
# Bring eth0 up
ifconfig eth0 up
# Obtain IP from local DHCP-Server
dhclient br-hooc
# Start the embedded gateway as root user with the bridge parameter
./app_embeddedgateway --vpn.linux.bridge=br-hooc

Persistente Konfiguration

Die Netzwerkbrücke sowie das physikalische Netzwerkinterface sind in der entsprechenden Netzwerkkonfigurationsdatei anzupassen:

iface eth0 inet manual
iface eth0 inet6 manual

auto br-hooc
iface br-hooc inet dhcp
    bridge_ports eth0

Falls dhcpcd verwendet wird, sollten in der Datei /etc/dhcpcd.conf folgende Anpassungen gemacht werden:

denyinterfaces eth0
interface br-hooc

Mittels Neustart des Geräts oder der Netzwerkschnittstellen wird dann die persistente Konfiguration übernommen.

Die obenstehende Konfiguration ist nur ein Beispiel für eine mögliche Konfiguration. Diese muss je nach Betriebssystem und Version individuell angepasst werden.

Beispiele Linux (Debian)

Beispiel init.d Skript

Es wird ein OS-spezifisches init.d-Skript benötigt, um die Binärdatei getrennt auszuführen.

  #! /bin/sh
  ### BEGIN INIT INFO
  # Provides:          app_embeddedgateway
  # Required-Start:    networking
  # Required-Stop:     networking
  # Default-Start:     2 3 4 5
  # Default-Stop:      0 1 6
  # Short-Description: This is app_embeddedgateway daemon
  # Description:       This is app_embeddedgateway daemon
  ### END INIT INFO

  # Using the lsb functions to perform the operations.
  . /lib/lsb/init-functions
  # Process name ( For display )
  NAME=app_embeddedgateway
  # Daemon name, where is the actual executable
  DAEMON=/usr/local/bin/app_embeddedgateway
  # pid file for the daemon
  PIDFILE=/var/run/app_embeddedgateway.pid
  # log file for the daemon
  LOGFILE=/var/log/app_embeddedgateway.log

  # If the daemon is not there, then exit.
  test -x $DAEMON || exit 5

  case $1 in
  start)
      # Checked the PID file exists and check the actual status of process
      if [ -e $PIDFILE ]; then
          status_of_proc -p $PIDFILE $DAEMON "$NAME process" && status="0" || status="$?"
          # If the status is SUCCESS then don't need to start again.
          if [ $status = "0" ]; then
              exit # Exit
          fi
      fi
      # Start the daemon.
      log_daemon_msg "Starting the process" "$NAME"
      # Start the daemon with the help of start-stop-daemon
      # Log the message appropriately
      if start-stop-daemon --start --quiet --oknodo --background --make-pidfile --pidfile $PIDFILE --exec $DAEMON -- --log.file $LOGFILE; then
          log_end_msg 0
      else
          log_end_msg 1
      fi
  ;;
  stop)
      # Stop the daemon.
      if [ -e $PIDFILE ]; then
          status_of_proc -p $PIDFILE $DAEMON "Stoppping the $NAME process" && status="0" || status="$?"
          if [ "$status" = 0 ]; then
              start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE
              /bin/rm -rf $PIDFILE
          fi
      else
          log_daemon_msg "$NAME process is not running"
          log_end_msg 0
      fi
  ;;
  restart)
      # Restart the daemon.
      $0 stop && sleep 2 && $0 start
  ;;
  status)
      # Check the status of the process.
      if [ -e $PIDFILE ]; then
          status_of_proc -p $PIDFILE $DAEMON "$NAME process" && exit 0 || exit $?
      else
          log_daemon_msg "$NAME Process is not running"
          log_end_msg 0
      fi
  ;;
  *)
  # For invalid arguments, print the usage message.
  echo "Usage: $0 {start|stop|restart|status}"
  exit 2
  ;;
  esac

logrotate.d Datei

Wenn das Schreiben einer Logdatei aktiviert ist, wird empfohlen, die Logrotation einzurichten.

  /var/log/app_embeddedgateway.log {
    rotate 7
    daily
    missingok
    compress
    sharedscripts
    postrotate
        touch /var/log/app_embeddedgateway.log
    endscript
  }

Netzwerkschnittstelle

Betreffend Netzwerkschnittstelle gilt es, Folgendes zu beachten:

  • Wenn eine Brücke zu einem physikalischen Ethernet-Port gewünscht wird, muss diese zuerst erstellt und als Parameter --vpn.linux.bridge.bridge übergeben werden.
  • Das HOOC-Embedded-Gateway benötigt NET_ADMIN- und NET_BIND_SERVICE-Rechte. Entweder wird das Binary privilegiert ausgeführt oder es werden die Rechte mittels setcap erteilt.
  setcap cap_net_admin,cap_net_bind_service=+ep ./app_embeddedgateway