Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    Vorschlag: Script zum automatischen Reconnect WAN bei geändertem IPv6-Präfix

    Scheduled Pinned Locked Moved Deutsch
    1 Posts 1 Posters 286 Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • altmetallerA
      altmetaller
      last edited by

      Hallo,

      in meinem Blog hat mich eine Leserin per Kommentar auf das Problem mit den geänderten IPv6-Präfixen beim Reconnect vorgeschalteter Router aufmerksam gemacht.

      Hänge ich eine pfSense an einen Router und schieße ich das IPv6 vom Router per RA / Interfacetracking zu den Clients durch funktioniert das genau so lange, wie das IPv6-Präfix bestehen bleibt. Starte ich z.B. den Router neu, klopft der Rest vom Schützenfest weiterhin brav auf dem inzwischen historischen Präfix herum.

      Meine Idee wäre ein cron-Job, der das WAN-Interface einmal kurz aus- und einschaltet, sobald IPv6 nicht mehr performt. Die erste Idee war, das Präfix per uPnP / TR-64 aus meiner FRITZ!Box zu zupfen und schlichtweg mit dem bekannten Wert zu vergleichen. Das habe ich verworfen: Zum Einen möchte ich uPnP und TR-64 deaktiviert lassen, zum Anderen wäre das "nur" eine Lösung für meine FRITZ!Box.

      Die nächste Idee wäre, Hosts anzupingen. Hier könnte man exemplarisch die DNS-Server von seinem Anbieter nehmen - in meinem Beispiel die von Vodafone.

      Folgende Gedanken haben mich begleitet:

      • Wenn der Router - warum auch immer - nicht erreichbar ist, möchte ich auf WAN ein fünfminütiges "Schnittstellengewitter" vermeiden
      • Die DNS-Server meines Anbieters beantworten, wie der Name schon sagt, DNS-Anfragen. Ich erachte das als legitim, dass die Pakete nicht mit 100%iger Zuverlässigkeit beantwortet werden
      • Ich möchte - extern - möglichst sparsam "pingen" und unnötige Anfragen weitestgehend vermeiden

      Der Ablauf wäre somit folgender:

      1. Ich prüfe den Router. Ist er nicht erreichbar, passiert nichts
      2. Ich prüfe den IPv4 DNS-Server. Ist er erreichbar, schlussfolgere ich daraus, dass die Internetverbindung grundsätzlich besteht. Ansonsten passiert nichts.
      3. Wenn IPv4 extern funktioniert, mache ich mit IPv6 extern weiter. Wenn der nicht reagiert, knipse ich die Schnittstelle für 5 Sekunden aus

      Lange Rede, kurzer Sinn - hier mein erster Vorschlag:

      #!/bin/sh
      
      router="192.168.178.1"
      
      ext_v4=88.134.228.225
      ext_v6=2a02:8100:c0:239::4:1101
      
      pingcount=3
      waitbtwsec=3
      timeoutms=150
      
      wan_interface=$re0
      
      ping -c$pingcount $router > /dev/null 2>&1
      if [ $? = 0 ]
      then
      
      	ping -c$pingcount -i$waitbtwsec -W$timeoutms $ext_v4 > /dev/null 2>&1
      	if [ $? = 0 ]
      	then
      
      		ping6 -c$pingcount -i$waitbtwsec -x$timeoutms $ext_v6 > /dev/null 2>&1
      		if [ $? != 0 ]
      		then
      			ifconfig $wan_interface down
      			sleep 5
      			ifconfig $wan_interface up
      		fi
      
      	fi
      fi
      

      Bin gespannt auf euer Feedback; erst einmal in Bezug auf die grundlegende Strategie.

      Gruß,
      Jörg

      Übrigens: Das vorgenannte Script enthält einen Typo (den ich natürlich kenne). Letzendlich sollt Ihr den Code ja sorgfältig lesen :-)

      1 Reply Last reply Reply Quote 1
      • First post
        Last post
      Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.