[resolu] disfonction étrange du routage suite à coupure

voici les symptômes:
j’ai trois interfaces, une intégré à la cm qui marche bien, et deux cartes filles rtl8139. j’utilise les postup suivant dasn le fichier interfaces car je fais du load balancing entre les deux cartes fille pour la connection internet. Mais, bizarrement depuis hier soir apres une coupure de courrant de plus d’une heure, le serveur n’execute plus la commande ip route add global default pour les nexthops 1 et 2. de plus le cache de la table de routage montre l’adresse de broadcast dans la colonne passerelle…

[code]auto lo eth0 eth1 eth2

The loopback network interface

iface lo inet loopback

The primary network interface

iface eth0 inet static
address 192.168.1.253
netmask 255.255.255.0
broadcast 192.168.1.255
network 192.168.1.0
pre-up echo 1 > /proc/sys/net/ipv4/ip_forward

iface eth1 inet static

Vers routeur 1

address 10.0.1.2
netmask 255.255.255.252
broadcast 10.0.1.3
network 10.0.1.0
# LOAD BALANCING ================================================
    post-up ip route add 10.0.1.2/30 dev eth1 src 10.0.1.2 table UPL1
    post-up ip route add default via 10.0.1.2 table UPL1
    post-up ip rule add from 10.0.1.2 table UPL1
    post-down ip rule del from 10.0.1.2 table UPL1

iface eth2 inet static

Vers routeur 0

address 10.0.0.2
netmask 255.255.255.252
broadcast 10.0.0.3
network 10.0.0.0
# LOAD BALANCING ================================================
    post-up ip route add 10.0.0.2/30 dev eth2 src 10.0.0.2 table UPL2
    post-up ip route add default via 10.0.0.2 table UPL2
    post-up ip rule add from 10.0.0.2 table UPL2
    post-up ip route add default scope global nexthop via 10.0.1.1 dev eth1 weight 1 nexthop via 10.0.0.1 dev eth2 weight 1
    post-down ip rule del from 10.0.0.2 table UPL2[/code]

en plus d’avoir des interfaces qui ne se démontent plus avec ifdown -a…
ni avec if up -a…

j’ai droit à RTNETLINK ansower: invalid argument en effectuant les commandes ip route.
et surtout un “interface non configuré” et Fail to up interface lors des commandes ifdown eth1 eth2 et ifup eth1 eth2

(sans parler du fait que malgré un fonctionnement normal des services proxy firewall, apache etc… plus aucun poste , même pas le serveur lui même, n’accede à internet. Et cela même si le routeur charge internet.)

une idée sur la question ?

Une idée ?.

personne ?

Pas d’idée claire mais une démarche.

  1. Commente les lignes post-up et post-down et fais un ifup -a. Si tout va bien, c’est iproute qui merdouille réinstalle le. (je n’y crois pas)

  2. Si ça merdouille comme je le pense, essaye un ifup eth1 et ifup eth2. Si les deux merdouillent, essaye de remettre un module 8139too, il doit être endommagé. Si comme je le pense une seule coince, change la, tu dois avoir une panne matérielle…

Bha le crois pas si tu veux mais apres tes test je me trouve dans le cas N°1 :stuck_out_tongue:, j’ai décomenté les lignes pre up et down. (sauf le preup de eth0 puisqu’il ne fais pas appel à ip route) et les commandes ifup -a et if down -a fonctionnent à merveille…

je vais essayé de réinstaller ip route pour voûar! :stuck_out_tongue:

Bon apres réinstallation, il s’avere que la config de eth2 pêche toujours. par contre je ne vois pas pourquoi ca a marché pendant un moi… C’est curieux.

J’ai fait quelques modifs:

#UPL1
iface eth1 inet static
        address 10.0.1.2
        netmask 255.255.255.252
        broadcast 10.0.1.3
        network 10.0.1.0
        # LOAD BALANCING ================================================
        post-up ip route add 10.0.1.0/30 dev eth1 src 10.0.1.2 table UPL1
        post-up ip route add default via 10.0.1.2 table UPL1
        post-up ip rule add from 10.0.1.2 table UPL1
        post-down ip rule del from 10.0.1.2 table UPL1

#UPL2
iface eth2 inet static
        address 10.0.0.2
        netmask 255.255.255.252
        broadcast 10.0.0.3
        network 10.0.0.0
        # LOAD BALANCING ================================================
        post-up ip route add 10.0.0.0/30 dev eth2 src 10.0.0.2 table UPL2
        post-up ip route add default via 10.0.0.2 table UPL2
        post-up ip rule add from 10.0.0.2 table UPL2
        post-up ip route add default scope global nexthop via 10.0.1.1 dev eth1 weight 1 nexthop via 10.0.0.1 dev eth2 weight 1
        post-down ip rule del from 10.0.0.2 table UPL2

mais apres les modifs il s’avère que je peut monter et démonter les interfaces eth0 et eth1 mais toujours pas eth2…:

jai décoché et coché ligne par ligne il en est sortie que c’est cette ligne là qu’il n’accepte pas d’executer en post-up:
post-up ip route add default scope global nexthop via 10.0.1.1 dev eth1 weight 1 nexthop via 10.0.0.1 dev eth2 weight 1.

quelqu’un saurrais pourquoi ?

si tu ne mets que:

code
#UPL2
iface eth2 inet static
address 10.0.0.2
netmask 255.255.255.252
broadcast 10.0.0.3
network 10.0.0.0
# LOAD BALANCING ================================================
post-up ip route add 10.0.0.0/30 dev eth2 src 10.0.0.2 table UPL2
post-up ip route add default via 10.0.0.2 table UPL2
post-up ip rule add from 10.0.0.2 table UPL2
post-down ip rule del from 10.0.0.2 table UPL2[/code]et qu’aprés, tu fais un:ip route add default scope global nexthop via 10.0.1.1 dev eth1 weight 1 nexthop via 10.0.0.1 dev eth2 weight 1 && echo "Execution correcte" || echo "Execution avec erreur"
Enfin je veux dire: l’execution de la commande ne renverrait pas un code d’erreur non nul par hasard ?

Quand j’execute la commande apres l’automontage des interface via “interfaces” ca marche. Mais dans le fichier en post up ca en marche pas.

Je n’ai pas cette erreur non, j’ai soit file exist quand la rules existe dejas, soit not configured quand l’interface n’a pu être configuré par ifup a cause du post-up mal famé.

Ce qui est étrange maintenant c’est que j’ai branché un routeur sur le port eth1 qui fonctionne à coup sûr j’ai dejas essayé en direct sur un autre poste. Avec les routes correctement affichés:

[quote]10.0.0.0/30 dev eth2 proto kernel scope link src 10.0.0.2
10.0.1.0/30 dev eth1 proto kernel scope link src 10.0.1.2
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.4
default
nexthop via 10.0.1.1 dev eth1 weight 1
nexthop via 10.0.0.1 dev eth2 weight 1
[/quote]
mais je n’arrive toujours pas à avoir un ping qui fonctionne sur google.fr ni sur son IP. par contre je ping tres bien le routeur lui même.

[quote]# ~>traceroute 209.85.135.104
traceroute to 209.85.135.104 (209.85.135.104), 30 hops max, 40 byte packets
1 10.0.0.2 (10.0.0.2) 3002.285 ms !H 3001.372 ms !H 3003.953 ms !H
[/quote]
avec ca on remarque que le paquet est envoyé vers le 10.0.0.2 ???
alors qu’il devrais passer par le 10.0.1.2. qui n’est pas une passerelle mais l’interface du proxy vers la passerelle internet 10.0.1.1. Il y a quelque chose qui m’échappe…

[quote=“megs”]Quand j’execute la commande apres l’automontage des interface via “interfaces” ca marche. Mais dans le fichier en post up ca en marche pas.(…)[/quote]Oui, mais ce que tu n’as pas dit, c’est si l’execution de la commande que je t’ai donnée:

ip route add default scope global nexthop via 10.0.1.1 dev eth1 weight 1 nexthop via 10.0.0.1 dev eth2 weight 1 && echo "Execution correcte" || echo "Execution avec erreur"t’affiche bien “Execution correcte” si elle t’affiche “Execution avec erreur”.
Dans le deuxiême cas, tu remplaces ta ligne post-up par:

post-up ip route add default scope global nexthop via 10.0.1.1 dev eth1 weight 1 nexthop via 10.0.0.1 dev eth2 weight 1 || true (peut être || false, d’ailleurs, j’ai un doute).

[quote]francois@totoche:~$ false ; echo $?
1
francois@totoche:~$ true ; echo $?
0
francois@totoche:~$

[/quote]

donc c’est true. Mais quand même, un code d’erreur signale un souci…

quand il faut que ça marche, même l’illogique est bon.

“execution correcte”… en ligne de commande…quand aucun route par defaut n’est déjas actif.

je pense d’apres tout se que nous avons fait que l’interface n’est pas terminé d’être configuré quand on fait appel à l’ajout du route par defaut double. du coup il refuse ll’ajout de la règle.

J’ai crée un script qui se lancera dans rc.local… en espérant que ca démarre avec le serveur…


j’ai essayé avec un route simple… route add default gw 10.0.1.1…
forcement tout marche bien.

J’en conclus que quand on utilise le load balancing avec ip route, la seconde interface configuré deviens l’interface utilisé en premier. (et comme le premier routeur est celui qui avais flanché…ca expliquerais sans doute le pourquoi…).

Ce qui me choque c’est qu’il m’avait semblé avoir lu quelque part que si une interface ne fonctionnait pas ca passait sur l’autre automatiquement… et là ca n’est pas le cas…


Je vais donc tenter de brancher les deux routeurs ce soir , et de mettre la regle pour balancer les deux tables… pour voir si ca se met à fonctionner.

en cherchant dans un autre sens, je sais qu’on a eu une discussion là dessus:
karlesnine.com/spip.php?article99
mais je ne sais plus pourquoi dans le cas qui nous interressait, le bonding n’avait pas solutionné le problême.
Ca me parait pourtant idéal pour faire de l’équilibrage de charge.

J’ai moi même deux liens chez moi et ça fait un bail que je me dis que je testerais bien une agregation du cable et de l’adsl.
Faut juste que je trouve le courage d’entamer. :wink:

et d’ailleurs, c’etait avec toi qu’on en avait causé :laughing:
forum.debian-fr.org/viewtopic.php?p=60781#60781

oui je m’en souvient tres bien, aussi du fait que le bonding nécéssitait une relation compatible des deux points de connexion. ce pourquoi j’ai laissé tombé. et surtout que les paquetsqui sortait par une interface pouvais rentrer par une autre en posant quelques problemes dasn les protocoles sécurisé et les tunnels ipsec…et j’en ai en sortie…

Par contre comme un imbécile, je n’ai pas changé ma passerelle pour tester le proxy… donc finalement, rien ne passe, même avec un route unique…

vais quand même essayer avec les deux routeurs:

NADA DE NADA! LE FLOU ARTISTIQUE TOTAL… est ce une instabilitée des noyaux récents ? j’ai eu presque le même soucis avec une ubuntu.

Bref voilà se que squid me répond:

[code]ERROR
The requested URL could not be retrieved

While trying to retrieve the URL: http://www.google.fr/

The following error was encountered:

* Connection to 209.85.135.103 Failed 

The system returned:

(113) No route to host

The remote host or network may be down. Please try the request again.

Your cache administrator is webmaster.[/code]

# ~>ip route
10.0.0.0/30 dev eth2  proto kernel  scope link  src 10.0.0.2
10.0.1.0/30 dev eth1  proto kernel  scope link  src 10.0.1.2
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.4
default via 10.0.1.1 dev eth1
# ~>route
Table de routage IP du noyau
Destination     Passerelle      Genmask         Indic Metric Ref    Use Iface
10.0.0.0        *               255.255.255.252 U     0      0        0 eth2
10.0.1.0        *               255.255.255.252 U     0      0        0 eth1
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0
default         10.0.1.1        0.0.0.0         UG    0      0        0 eth1
# ~>traceroute www.google.fr
traceroute: Warning: www.google.fr has multiple addresses; using 209.85.135.147
traceroute to www.l.google.com (209.85.135.147), 30 hops max, 40 byte packets
 1  10.0.1.2 (10.0.1.2)  3002.613 ms !H  3004.222 ms !H  3003.953 ms !H

:imp: :imp: :imp: :imp: :imp: :exclamation: :exclamation: :exclamation:

devinez quoi par dépis j’ai essayé ceci:

puis j’ai fais un restart du networking, puis l’ajout d’un route unique via ip route et non route tout cour… et là ca yest ca marche… (je précise qu’au montage de l’interface J’ai ceci:

RTNETLNK answers: Invalid argument
Failed to bring up eth1…

RTNETLNK answers: Invalid argument
Failed to bring up eth2…

et comble de la stupiditée… ca MARCHE…et les interfaces sont bien montées… dois je me changer en chevre ?
evidement le load balancing ne passe pas…

on dirais que c’est plus grave que prévu… ca ne marche pas apres un reset, mais seulement quand je fais ceci (et uniquement pour un seul route):

# ~>ip route add default scope global nexthop via 10.0.1.1 dev eth1 weight 1
# ~>ping www.google.fr
PING www.l.google.com (209.85.135.99) 56(84) bytes of data.
From 10.0.1.2 icmp_seq=2 Destination Host Unreachable
From 10.0.1.2 icmp_seq=3 Destination Host Unreachable
From 10.0.1.2 icmp_seq=4 Destination Host Unreachable

--- www.l.google.com ping statistics ---
7 packets transmitted, 0 received, +3 errors, 100% packet loss, time 6001ms
, pipe 3
# ~>nano /etc/network/interfaces
# ~>/etc/init.d/networking restart
* /etc/network/options is deprecated (see README.Debian of netbase).
Setting up IP spoofing protection...done (rp_filter).
Reconfiguring network interfaces...RTNETLINK answers: Invalid argument
Failed to bring up eth1.
RTNETLINK answers: Invalid argument
Failed to bring up eth2.
done.
# ~>ip route add default scope global nexthop via 10.0.1.1 dev eth1 weight 1
# ~>ping www.google.fr
PING www.l.google.com (209.85.135.99) 56(84) bytes of data.
64 bytes from mu-in-f99.google.com (209.85.135.99): icmp_seq=1 ttl=239 time=592 ms
64 bytes from mu-in-f99.google.com (209.85.135.99): icmp_seq=2 ttl=239 time=599 ms
64 bytes from mu-in-f99.google.com (209.85.135.99): icmp_seq=3 ttl=239 time=595 ms

Si vous arrivez à trouver pourquoi, je vous offre mon …heu qu’est se que je peux offrir…bhaa un sourir…c’est pas top mais bon : :smiley:

[code]# ~>ip address show
1: eth0: <BROADCAST,MULTICAST,UP,10000> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:0c:6e:0b:d2:d0 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.4/24 brd 192.168.1.255 scope global eth0
inet6 fe80::20c:6eff:fe0b:d2d0/64 scope link
valid_lft forever preferred_lft forever
2: lo: <LOOPBACK,UP,10000> mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,10000> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:50:fc:9f:27:85 brd ff:ff:ff:ff:ff:ff
inet 10.0.1.2/30 brd 10.0.1.3 scope global eth1
inet6 fe80::250:fcff:fe9f:2785/64 scope link
valid_lft forever preferred_lft forever
4: eth2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:50:fc:9f:31:46 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.2/30 brd 10.0.0.3 scope global eth2
5: sit0: mtu 1480 qdisc noop
link/sit 0.0.0.0 brd 0.0.0.0

#ip route show
10.0.0.0/30 dev eth2 proto kernel scope link src 10.0.0.2
10.0.1.0/30 dev eth1 proto kernel scope link src 10.0.1.2
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.4
default via 10.0.1.1 dev eth1

~>ip rule list

0: from all lookup 255
32766: from all lookup main
32767: from all lookup default

~>ip route list table local

broadcast 192.168.1.0 dev eth0 proto kernel scope link src 192.168.1.4
broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1
broadcast 10.0.0.0 dev eth2 proto kernel scope link src 10.0.0.2
local 192.168.1.4 dev eth0 proto kernel scope host src 192.168.1.4
broadcast 10.0.0.3 dev eth2 proto kernel scope link src 10.0.0.2
local 10.0.0.2 dev eth2 proto kernel scope host src 10.0.0.2
broadcast 192.168.1.255 dev eth0 proto kernel scope link src 192.168.1.4
broadcast 10.0.1.0 dev eth1 proto kernel scope link src 10.0.1.2
broadcast 10.0.1.3 dev eth1 proto kernel scope link src 10.0.1.2
broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1
local 10.0.1.2 dev eth1 proto kernel scope host src 10.0.1.2
local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1
local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1

~>ip route list table main

10.0.0.0/30 dev eth2 proto kernel scope link src 10.0.0.2
10.0.1.0/30 dev eth1 proto kernel scope link src 10.0.1.2
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.4
default via 10.0.1.1 dev eth1

[/code]

… JE SUIS UN ABRUTIT…
la déclaration des routes par défaut dans chacune des tables, avis été changé en l’ip de l’interface du proxy… genre je ne sais pas qui a fait ca…
bon et bien tout marche bien, la etch marche du feu de dieux, et cela même lorsque l’on est à, mayotte et que l’on a du essuyer la mise a jour avec des paquets cassé ( a cause de la connexion trop irrégulière)…
n’applaudissez pas tous a la foi…je vais me cacher das un coin…