[Discuss] router verliert alle routen

Bernd Petrovitsch (spam-protected)
So Nov 16 14:27:54 CET 2008


On Son, 2008-11-16 at 12:56 +0100, Michael Blizek wrote:
[...]
> On 22:01 Sat 15 Nov     , Bernd Petrovitsch wrote:
> > On Sam, 2008-11-15 at 14:21 +0100, Harald Geyer wrote:
> > 
> > > hat er "vergessen" die Route zum gateway einzutragen, oder diese
> > > route wurde wie von dir beschrieben vom kernel gelöscht - was ich
> > > aber auch nicht verstehe - siehe unten:
> > 
> > Wenn Du eine Route löschst, wird der Kernel alle Routen löschen, die die
> > gelöschte Route "brauchen" - analog zum Eintragen neuer Routen.
> 
> Wie kann eine route von einer anderen Abhaengen? Routen sollten immer zu

Technisch kurz und einfach: von der IP-Adresse hintern "via" (wenn man
`ip r l` benützt).

> einem lokalem Nachbarn gehen, der ohne anderen zwischengeschalteten Routern
> erreichbar ist.

Technisch länger:
----  snip  ----
{107}ip r l
[...]
default via 62.178.36.1 dev eth1 
----  snip  ----
Die Defaultroute funktioniert nur und macht deshalb nur Sinn, wenn
62.178.36.1 irgendwie erreichbar ist. Ob das mit 17 Hops dazwischen ist
oder obiges Gerät tatsächlich im Netz 62.178.36.0/24 ist, ist dem
IP-Stack egal (und der IP-Stack/Kernel hat auch keinen Einfluß drauf -
irgendwer setzt ja die Route von oben/Userspace - und im Prinzip kann es
ihm auch wurscht sein).

Am Level höher: Mein Node hat einen Tunnel Richtung 0xFF-Netz und eine
LinkSys an eth0 dranhängen. Da schaun die Routen so aus:
----  snip  ----
[...]
78.41.112.179 via 78.41.112.2 dev tap0  metric 5 
78.41.112.176 via 78.41.112.2 dev tap0  metric 6 
78.41.115.128/25 via 78.41.112.2 dev tap0  metric 1 
193.238.157.0/25 via 78.41.112.2 dev tap0  metric 1 
default via 78.41.112.2 dev tap0  metric 1 
{117}fgrep -c " via 78.41.112.2" ~/routes
478
{118}fgrep -vc " via 78.41.112.2" ~/routes
3
{119}fgrep -v " via 78.41.112.2" ~/routes
193.238.156.204 dev eth0  scope link  metric 1 
78.41.112.2 dev tap0  scope link  metric 1 
193.238.156.189 via 193.238.156.204 dev eth0  metric 1 
----  snip  ----
D.h. bei *allen* Routen, die über den Tunnel gehen, steht hintern "via"
die 1. IP-Adresse hintere der anderen Seite des Tunnels.
Wenn jetzt 78.41.112.2 nicht mehr erreichbar ist, weil openvpn den
Tunnel restartet und die IP-Adresse löscht, dann löscht der Kerne
lsofort alle Routen dort drüber.
Der olsrd  kriegt das übers OLSR-Protokoll etwas später mit, löscht sie
intern und versucht sie im Kernel auch zu löschen - nur das sind sie ja
schon längst weg.

Obiges erklärt natürlich nicht, warum ein Routen eintragen am ersten
Ansatz was schief geht.

	Bernd
-- 
Firmix Software GmbH                   http://www.firmix.at/
mobil: +43 664 4416156                 fax: +43 1 7890849-55
          Embedded Linux Development and Services





Mehr Informationen über die Mailingliste Discuss