T-Home kábelnet bugfix

Mostanában azt játsza a T-Home kábelnet, hogy elhal a kapcsolat és csak IP megújítás után áll helyre. Tomato firmware-re itt egy kerülő megoldás.

2011. június 1.

A jelenség az, hogy megáll az internet elérés és semmilyen külső IP cím (beleérve a gateway-t) sem érhető el. Ha manuálisan kérek egy új IP-t, akkor a kapcsolat megjavul. Ezt meg sem próbálom elmagyarázni a hibabejelentőnek, mert sajnos tudom, hogy tökéletesen értelmetlen próbálkozás lenne. Inkább összegugliztam egy workaroundot a Tomato firmware-es routeremhez.

A szkript annyit csinál, hogy 90 másodpercenként pingeli a gateway-t. Ha a ping sikertelen, akkor újabb 4 másodperc elteltével ismét pingel. Ha ez is sikertelen, akkor új IP címet kér a szervertől (ennek tényét a logba is beírja). Így elméletileg legfeljebb maximum 100 másodpercig marad a hálózat internet nélkül.

Az Administration >> Scripts >> Init részbe kell bemásolni az alábbiakat, majd újraindítani a routert:

#!/bin/sh
# Ping internet gateway every 90 seconds. If it cannot be pinged, wait 4 seconds, then ping again.
# If still cannot be pinged, renew internet IP address.

WATCHDOG_SLEEP_SEC=90
DEFAULT_ROUTE=$(ip route show default | awk '/default/ {print $3}')

while sleep $WATCHDOG_SLEEP_SEC
do
  COUNT=$(ping -c 1 $DEFAULT_ROUTE | grep 'received' | awk -F',' '{ print $2 }' | awk '{ print $1 }')
  if [ $COUNT -eq 0 ]
  then
    sleep 4
    COUNT=$(ping -c 1 $DEFAULT_ROUTE | grep 'received' | awk -F',' '{ print $2 }' | awk '{ print $1 }')
    if [ $COUNT -eq 0 ]
    then
      logger "Unable to ping internet gateway $DEFAULT_ROUTE, renewing external IP address"
      /sbin/dhcpc-renew
      DEFAULT_ROUTE=$(ip route show default | awk '/default/ {print $3}')
    fi
  fi
done 2>&1 &

TomatoVPN 1.27-tel lett tesztelve, de elméletileg bármilyen Tomato-val működnie kell.