GRE Tunnel bei reboot automatisch erstellen

Dokumentation des GRE-Tunnel-Konfigurationsskripts

Übersicht

Dieses Bash-Skript konfiguriert einen GRE (Generic Routing Encapsulation)-Tunnel zwischen zwei IP-Adressen, richtet die Tunnel-Schnittstelle ein, weist eine IP-Adresse zu, aktiviert die Schnittstelle und erstellt Routing-Regeln für spezifische IP-Adressen.

Skript-Details

Variablendefinitionen

  • INTERFACE: Name der GRE-Tunnel-Schnittstelle. Standard ist gre1.
  • LOCAL_IP: Lokale IP-Adresse des Hosts. Beispiel: 192.0.2.1.
  • REMOTE_IP: Remote-IP-Adresse des Tunnelendpunkts. Beispiel: 203.0.113.1.
  • TUNNEL_IP: Der Tunnel-Schnittstelle zugewiesene IP-Adresse. Beispiel: 198.51.100.2/30.
  • SPECIFIC_IPS: Array von spezifischen IP-Adressen (letztes Oktett), für die Routing-Regeln erstellt werden. Beispiel: (10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160).
  • PREFIX: Gemeinsames Präfix für die spezifischen IP-Adressen. Beispiel: 198.51.100..
  • DEFAULT_GATEWAY: Standard-Gateway-IP-Adresse für den Tunnel. Beispiel: 198.51.100.1.

Befehle

  1. Tunnel-Schnittstelle hinzufügen:

    ip tunnel add $INTERFACE mode gre local $LOCAL_IP remote $REMOTE_IP ttl 255
    
    • Erstellt eine GRE-Tunnel-Schnittstelle mit dem Namen $INTERFACE mit der lokalen IP $LOCAL_IP, der Remote-IP $REMOTE_IP und einer TTL von 255.
  2. IP-Adresse der Schnittstelle zuweisen:

    ip addr add $TUNNEL_IP dev $INTERFACE
    
    • Weist der GRE-Tunnel-Schnittstelle $INTERFACE die IP-Adresse $TUNNEL_IP zu.
  3. Schnittstelle aktivieren:

    ip link set $INTERFACE up
    
    • Aktiviert die GRE-Tunnel-Schnittstelle $INTERFACE.
  4. IP-Regeln für spezifische Adressen hinzufügen:

    for i in "${SPECIFIC_IPS[@]}"; do
      ip rule add from $PREFIX$i table 20 prio 1
    done
    
    • Iteriert über das Array SPECIFIC_IPS und erstellt für jede IP eine Regel, um den Verkehr mit dieser Quell-IP über die Routing-Tabelle 20 mit Priorität 1 zu routen.
  5. Standardroute hinzufügen:

    ip route add default via $DEFAULT_GATEWAY dev $INTERFACE table 20
    
    • Fügt eine Standardroute über die GRE-Tunnel-Schnittstelle $INTERFACE unter Verwendung des Gateways $DEFAULT_GATEWAY über die Routing-Tabelle 20 hinzu.

Nutzung

  1. Variablen anpassen:

    • Passen Sie die Variablenwerte nach Bedarf für Ihre spezifische Netzwerkkonfiguration an.
  2. Skript ausführen:

    • Führen Sie das Skript mit den entsprechenden Berechtigungen aus (z.B. sudo ./script_name.sh).

Beispielkonfiguration

Hier ist eine Beispielkonfiguration mit den Beispielwerten:

  • GRE-Schnittstelle: gre1
  • Lokale IP: 192.0.2.1
  • Remote-IP: 203.0.113.1
  • Tunnel-IP: 198.51.100.2/30
  • Spezifische IPs: 10 bis 160 (als letztes Oktett)
  • Präfix: 198.51.100.
  • Standard-Gateway: 198.51.100.1

Hinweise

  • Stellen Sie sicher, dass das Paket iproute2 auf Ihrem System installiert ist.
  • Das Skript erfordert Root- oder Superuser-Rechte.
  • Passen Sie den TTL-Wert bei Bedarf an, um Ihren Netzwerkanforderungen zu entsprechen.

Automatisches Ausführen des Skripts nach einem Neustart

Um sicherzustellen, dass das Skript nach einem Neustart des Systems erneut ausgeführt wird, können Sie es in die Crontab des Systems eintragen oder einen systemd-Dienst erstellen.

Methode 1: Crontab

  1. Öffnen Sie die Crontab des Root-Benutzers:

    sudo crontab -e
    
  2. Fügen Sie die folgende Zeile hinzu, um das Skript beim Systemstart auszuführen:

    @reboot /pfad/zum/script_name.sh
    

Methode 2: systemd-Dienst

  1. Erstellen Sie eine neue systemd-Dienstdatei:

    sudo nano /etc/systemd/system/gre-tunnel.service
    
  2. Fügen Sie den folgenden Inhalt hinzu:

    [Unit]
    Description=GRE Tunnel Setup
    After=network.target
    
    [Service]
    Type=oneshot
    ExecStart=/pfad/zum/script_name.sh
    RemainAfterExit=yes
    
    [Install]
    WantedBy=multi-user.target
    
  3. Speichern Sie die Datei und schließen Sie den Editor.

  4. Aktivieren Sie den Dienst, damit er beim Systemstart ausgeführt wird:

    sudo systemctl enable gre-tunnel.service
    
  5. Starten Sie den Dienst sofort:

    sudo systemctl start gre-tunnel.service
    

Mit diesen Schritten wird sichergestellt, dass das GRE-Tunnel-Konfigurationsskript automatisch nach einem Systemneustart ausgeführt wird.