Orange zapewnia natywny dostęp IPv6 jeżeli w ramach loginu PPPoE ...@neostrada.pl
użyjemy sufiksu /ipv6
czyli ...@neostrada.pl/ipv6
.
W umowie wskazany jest właśnie login z tym sufiksem, wydaje się że tak jest w większości umów.
Pomimo tego modem „FunBox 3.0” regularnie usuwa ten surfix z używanego loginu tym samym wyłączając IPv6.
Rozwiązaniem problemu może być użycie cron'a do sprawdzania dostępności IPv6 i jej przywracania z użyciem poniższego skryptu (check_ipv6.sh):
#!/bin/bash exec >> /dev/shm/check_ipv6.log 2>&1 LOCK_FILE='/dev/shm/check_ipv6.lock' # # settings # ROUTER=192.168.6.1 # router IPv4 PASSWORD='' # router password LOGIN='' # PPPoE login (...@neostrada.pl) IP_CHECK_1="2001:4860:4860::8888" # external IPv6 to check IP_CHECK_2="2620:0:ccc::2" # other external IPv6 to check NAME_CHECK_1="ip1" # name for $IP_CHECK_2 (only for log) NAME_CHECK_2="ip2" # name for $IP_CHECK_2 (only for log) [ ! -e /etc/network/check_ipv6.cfg ] && exit . /etc/network/check_ipv6.cfg # # router configure function # fix_ipv6() { # logowanie cookie=`mktemp /dev/shm/curl.XXXXXXXXXX` res=`curl "http://$ROUTER/authenticate?username=admin&password=$PASSWORD" --cookie-jar "$cookie" --data '' 2>/dev/null` context=`python3 -c 'import json; d = json.loads("""'"$res"'"""); print(d["data"]["contextID"])'` # aktywacja IPv6 curl -s "http://$ROUTER/sysbus/NMC/IPv6:set" -H "X-Context: $context" --cookie "$cookie" --data '{"parameters":{"IPv4UserRequested":false}}' curl -s "http://$ROUTER/sysbus/NMC:setWanMode" -H "X-Context: $context" --cookie "$cookie" --data '{"parameters":{"WanMode":"GPON_PPP","Username":"bez_ochrony-'"$LOGIN"'/ipv6"}}' # sprzatanie rm "$cookie" } # # check and run ... # # check lock lock=`cat $LOCK_FILE 2>/dev/null` let lock-- if [ $lock -ge 0 ]; then echo $lock > $LOCK_FILE exit fi # check connections and try fix it ping6 -c 1 $IP_CHECK_1 >& /dev/null && exit date +"%F %H:%M" echo " - $NAME_CHECK_1 is unavailable" echo 1 > $LOCK_FILE # temporary lock for next ping ping6 -c 1 $IP_CHECK_2 >& /dev/null && exit echo " - $NAME_CHECK_2 is unavailable" echo 3 > $LOCK_FILE # long temporary lock for restart networking systemctl restart networking sleep 30 # wait for recheck after restart networking ping6 -c 1 $IP_CHECK_1 >& /dev/null && exit ping6 -c 1 $IP_CHECK_2 >& /dev/null && exit echo " - hosts are still unavailable after restart networking" echo 10 > $LOCK_FILE # final lock for fix ipv6 on funbox fix_ipv6 echo ""
Skrypt wymaga python3
i curl
.
Konieczne jest ustawienie w skrypcie lub pliku konfiguracyjnym (/etc/network/check_ipv6.cfg
) adresu IPv4 swojego routera (zmienna ROUTER
), hasła do routera (zmienna PASSWORD
) oraz loginu neostrady bez sufiksu (zmienna LOGIN
).
Domyślnie skrypt do sprawdzania dostępności IPv6 używa serwerów DNS od Google i OpenDNS adresy te można zmienić poprzez odpowiednie zmienne.
Całość procedury przywrócenia IPv6 zajmuje około minuty, co przy uruchamianiu skryptu przez crond
co 1 minutę daje niedostępność IPv6 przez niecałe 2 minuty.