SIOCADDRT ou Le monde fabuleux des réseaux

Bonjour à toutes et à tous :slightly_smiling:

Je suis ici aujourd’hui pour poser une question simple niveau réseau.
Voici mon petit réseau :

.+===+…+====+…
.|| PC 1 ||====wifi====|| Freebox ||.
.+===+…+====+…
…||…
…||RJ45…
…||…
+=====+… +===+.
|| Routeur ||====RJ45====|| NAS ||…
+=====+…+===+.

[code]* PC 1 :
- Sous Debian Squeeze
- eth0 : IP statique 192.168.3.2 (port de la carte mère)
- wlan0 : IP statique 192.168.4.2 (carte wifi Linksys en PCI-e)

  • Freebox :

    • Point d’accès wifi / routeur
    • DHCP activé
    • IP privée : 192.168.4.254
  • Routeur (Linksys WRT54GL) :

    • IP statique : 192.168.3.1
    • DHCP activé
  • NAS (sous Debian) :

    • IP statique 192.168.3.3[/code]

Mon souci est que je n’arrive pas à faire fonctionner mes deux sous-réseaux (192.168.4.0/24 et 192.168.3.0/24) simultanément sur mon ordinateur (PC 1 sur le schéma).
Je me suis demandé s’il ne faudrait pas que j’ajoute une route et une nouvelle gateway sur cet ordinateur pour dire “si tu cherches 192.168.3.0/24, va sur eth0, sinon utilises wlan0” mais je ne vois pas vraiment comment faire.

Mon dernier essai a ressemblé à ça :

# route add default gw 192.168.3.1 eth0 SIOCADDRT: Aucun processus de ce type

Je suis admin système essentiellement, mais le réseau m’est encore bien inconnu, je vous demanderai donc toute votre indulgence :smiley:

Donc au final :
- Mon installation peut-elle est améliorée ? Si oui que dois-je modifier ?
- Dois-je effectivement ajouter des routes pour utiliser ces deux réseaux simultanément ?

Pour info, voici le résultat d’un route -n sur PC 1 :

Table de routage IP du noyau Destination Passerelle Genmask Indic Metric Ref Use Iface 192.168.4.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0 0.0.0.0 192.168.4.254 0.0.0.0 UG 0 0 0 wlan0

Merci d’avance.

Pourquoi as-tu un routeur entre ton PC et ton NAS? Un switch n’aurait-il pas fait l’affaire? Pourquoi activer le DHCP?

Pourquoi l’adresse câblée de ton PC est dans un sous-réseau différent de celui de ton routeur?

Peux-tu me montrer ton fichier /etc/network/interfaces tel qu’il est actuellement, et le fichier interfaces que tu voudrais avoir?

Pour moi, si tu veux garder ton réseau avec les câbles tels qu’ils sont là, il te faut 3 sous-réseaux.
192.168.4.0/24 entre ta freebox et ton PC1 (et les autres clients je suppose)
192.168.3.0/24 entre ton routeur et ton NAS
192.168.2.0/24 entre ton PC et ton Routeur.

Il faudra que tu rajoutes une route vers 192.168.3.0 sur ton PC (en passant par le routeur).

Mais sincèrement, je trouve que le routeur ne sert à rien ici. S’il a une utilité, rajoute des sous-réseaux, sinon, vire le.

PS : il faut un câble croisé entre un routeur et un PC. La plupart des cartes réseaux sont capables de croiser automatiquement, mais ce n’est peut-être pas le cas ici.

Hello, merci pour ta réponse rapide !

Oui pardon j’ai oublié de préciser.
Ce routeur me servira plus tard réellement, là il ne sert à rien sauf à m’aider dans l’apprentissage de l’administration d’un petit réseau :smiley:
Je compte remplacer ma connexion wifi Freebox<=>PC1 par une connexion Freebox<=>Routeur filaire (à moins qu’il y ait un moyen de faire du WRT54GL un client wifi de ma freebox ??).

Parce que je me suis dit “deux DHCP dans un même réseau ça ne va pas le faire” =p
Mais si je peux avoir les deux interfaces (wlan0 et eth0) dans un même réseau en désactivant le dhcp du routeur, je suis tout ouï :slightly_smiling:

Ce que j’ai actuellement sur PC1 se résume à cela :

allow-hotplug eth0 iface eth0 inet static address 192.168.3.2 netmask 255.255.255.0 broadcast 192.168.3.255 gateway 192.168.3.1

Dans l’idéal, j’aimerais gérer mes deux connexions (eth0 et wlan0) via ce fichier mais je n’ai jamais réussi à mettre ce qu’il fallait pour la wifi (shame on me)…

J’avais commencé un truc du genre :

auto wlan0 iface wlan0 inet dhcp wireless-essid my_wifi wireless-mode managed wireless-key "Ma phrase de pass pour la wifi"

mais ça ne fonctionne pas :blush:

Je suis assez mauvais en explications, n’hésite pas à me dire si tu ne comprends pas tout.

[quote=“OpenPanic”]

Parce que je me suis dit “deux DHCP dans un même réseau ça ne va pas le faire” =p
Mais si je peux avoir les deux interfaces (wlan0 et eth0) dans un même réseau en désactivant le dhcp du routeur, je suis tout ouï :slightly_smiling:[/quote]

Qu’il y ait un DHCP ou non, cela n’a aucune importance dans ce cas-ci. Je crois que le DHCP de ton routeur ne sert juste à rien pour le moment. (tant que ton routeur ne reçoit pas de requêtes DHCP, il ne fait rien du tout).

Seulement, pour que ton PC puisse contacter ton routeur, il faut que leurs 2 cartes réseaux soit dans le même sous-réseau. Un routeur sert à séparer 2 sous réseaux.

Si ton PC a 2 cartes dans le même sous-réseau, ton PC fera de la merde. Il enverra des infos un peu dans tous les cotés.

[quote=“OpenPanic”]
Ce que j’ai actuellement sur PC1 se résume à cela :

allow-hotplug eth0 iface eth0 inet static address 192.168.3.2 netmask 255.255.255.0 broadcast 192.168.3.255 gateway 192.168.3.1[/quote]
Hum, ça ne correspond pas avec ton schéma dans ton premier message.
Par contre, si je me rappelle bien, “gateway”, c’est la passerelle par défaut. C’est la route vers tous les sous-réseaux que ton PC ne connait pas. Si c’est bien ce que je pense, tu ne peux avoir qu’un seul GATEWAY sur tout ton PC. Si ton PC reçoit une passerelle par défaut par DHCP, ça peut foutre la merde.

Info pas très utile : je vire toujours le “allow-hotplug” et le remplace par “auto”. Quand je fais un restart du service, ça relance l’interface. Pas avec le “allow-hotplug” (qui doit surement avoir une utilité que je ne connais pas).

[quote=“OpenPanic”]
Dans l’idéal, j’aimerais gérer mes deux connexions (eth0 et wlan0) via ce fichier mais je n’ai jamais réussi à mettre ce qu’il fallait pour la wifi (shame on me)…

J’avais commencé un truc du genre :

auto wlan0 iface wlan0 inet dhcp wireless-essid my_wifi wireless-mode managed wireless-key "Ma phrase de pass pour la wifi"

mais ça ne fonctionne pas :blush:[/quote]

Pour la config du wifi, je ne suis pas capable de t’aider.

En fait dans mon esprit, il y avait 2 sous-réseaux, donc un DHCP par sous-réseau. Mais peut-être est-ce inutile ? Ce qui m’a fait faire ça c’est que les deux sous-réseaux sont isolés l’un de l’autre, PC1 étant le seul “lien” entre les deux. Mais comme ce dernier ne relaie pas les paquets entre ses deux interfaces, ça fait donc 2 sous-réseaux isolés. Je me trompe quelque part ?

Là par contre je ne vois pas trop ce que tu veux dire.

Il n’a pas deux cartes dans le même sous-réseau. Il en a une dans 192.168.3.0/24 (eth0) et une dans 192.168.4.0/24 (wlan0).

Ah ?? :blush:

Oui c’est ce que j’ai cru comprendre de ce que j’ai pu lire sur le net effectivement.

Ok, je prends note, merci de l’info :slightly_smiling:

édit : bug de mon navigateur qui réagissait trop lentement, le message a été envoyé 2 fois.

re-édit : en fait non, plutôt que d’éditer, j’ai appuyé sur “retour”, et ai modifié le message comme ça, puis j’ai renvoyé.

à delete

[quote=“OpenPanic”]En fait dans mon esprit, il y avait 2 sous-réseaux, donc un DHCP par sous-réseau. Mais peut-être est-ce inutile ? Ce qui m’a fait faire ça c’est que les deux sous-réseaux sont isolés l’un de l’autre, PC1 étant le seul “lien” entre les deux. Mais comme ce dernier ne relaie pas les paquets entre ses deux interfaces, ça fait donc 2 sous-réseaux isolés. Je me trompe quelque part ?
[/quote]
Pour qu’un réseau fonctionne, le DHCP n’est pas utile. Le DHCP est le protocole qui permet d’allouer dynamiquement des IP aux PC qui ne sont pas en statique. Si tu configures tes adresses IP en statique, le DHCP ne sert à rien du tout.

Pour que ton pc envoie des infos d’un interface vers l’autre, tu dois activer le routage. Je ne me rappelle plus exactement du fichier de config à modifier.
Dans “/proc/sys/net/…” il existe un fichier qui s’appelle un truc comme “ipforward” que tu dois mettre à 1 pour autoriser le routage. ça fonctionne, mais il se remet à 0 chaque fois que t’éteins ta machine. Il y a moyen de l’enregistrer à vie, mais je ne sais plus ce qu’il faut changer.

Dans ton premier message, tu as écrit :

[quote=“OpenPanic”]
- eth0 : IP statique 192.168.4.3 (port de la carte mère)
- wlan0 : IP statique 192.168.4.2 (carte wifi Linksys en PCI-e)[/quote]
Tu as ensuite dit :

[quote=“OpenPanic”]
Il n’a pas deux cartes dans le même sous-réseau. Il en a une dans 192.168.3.0/24 (eth0) et une dans 192.168.4.0/24 (wlan0).[/quote]

[quote=“OpenPanic”]

Là par contre je ne vois pas trop ce que tu veux dire.[/quote]

Je vais reprendre ce que j’avais écrit dans mon tout premier message :

[quote=“patxy”]
Pour moi, si tu veux garder ton réseau avec les câbles tels qu’ils sont là, il te faut 3 sous-réseaux.
192.168.4.0/24 entre ta freebox et ton PC1 (et les autres clients je suppose)
192.168.3.0/24 entre ton routeur et ton NAS
192.168.2.0/24 entre ton PC et ton Routeur.[/quote]

Entre ton PC et ton routeur, tu as 1 câble. Ce câble est relié à 2 cartes réseaux.
C’est sur ces cartes réseaux (~interfaces) que tu mets des adresses IP.
Tu ne peux avoir qu’un seul sous-réseau par câble.

Ce que je voulais dire par “il faut que leurs 2 cartes réseaux soit dans le même sous-réseau”, c’est que leurs adresses IP devait être dans le même sous-réseau.

Je résume :
Ton PC a 2 cartes réseau d’activées, tu dois donc connecter ton PC à 2 sous-réseaux. Tes 2 cartes doivent être dans des sous-réseaux différents.
Un PC ne peut communiquer directement qu’avec des dispositifs qui sont dans son sous-réseau. Je veux dire par là, que si tu veux contacter un sous-réseau distinct, le routeur par lequel tu dois passer doit obligatoirement être dans ton sous-réseau.

Sinon, tu peux désactiver la fonction “routage” de ton routeur. Et faire en sorte qu’il se comporte comme un switch. Dans ce cas, tu n’auras plus que 2 sous-réseaux.

[quote=“patxy”]Pour que ton pc envoie des infos d’un interface vers l’autre, tu dois activer le routage. Je ne me rappelle plus exactement du fichier de config à modifier.
Dans “/proc/sys/net/…” il existe un fichier qui s’appelle un truc comme “ipforward” que tu dois mettre à 1 pour autoriser le routage. ça fonctionne, mais il se remet à 0 chaque fois que t’éteins ta machine. Il y a moyen de l’enregistrer à vie, mais je ne sais plus ce qu’il faut changer.[/quote]
Yep, en l’occurrence je fais exprès de laisser ces deux sous-réseaux isolés :slightly_smiling:

Par contre, toutes mes excuses, je viens de voir que j’avais fait une erreur dans mon post initial. L’IP statique définie pour ma carte eth0 est bien 192.168.3.2 et non 192.168.4… :unamused:

Ton idée de désactiver le mode routeur pour passer mon WRT54GL en mode switch est bonne, je vais tester ça :wink:
Merci en tout cas pour tout ! ça m’a éclairci les idées. Je reviendrai donner des nouvelles dès que la conf aura avancé (ou que j’aurai une autre question, niark niark niark :mrgreen: ).

Le message d’erreur vient probablement de ce que la machine n’a pas de route pour l’adresse définie comme passerelle, comme on peut le voir dans la table de routage : pas de destination 192.168.3.0/24 sur eth0.

Il ne faut pas ajouter une seconde passerelle par défaut. Il ne doit y avoir qu’une seule route par défaut (vers le routeur qui donne accès à internet) ou tu auras des ennuis. Evite aussi le DHCP des deux côtés, c’est le meilleur moyen de récupérer deux routes par défaut.

Ton problème, c’est que eth0 ne semble pas configurée malgré la déclaration dans /etc/network/interfaces (option gateway à supprimer).
Qu’affiche ifconfig -a ? Que donne ifup eth0 ?

Bon finalement mon routeur semble faire switch sans configuration particulière.

Ok donc une seule définition de “gateway” dans mon fichier /etc/network/interfaces, c’est ça ?

J’ai désactivé le DHCP de mon routeur, ça ne devrait donc plus poser de problèmes.

[quote=“PascalHambourg”]Ton problème, c’est que eth0 ne semble pas configurée malgré la déclaration dans /etc/network/interfaces (option gateway à supprimer).
Qu’affiche ifconfig -a ? Que donne ifup eth0 ?[/quote]

Voici quelques résultats de commandes :

[code]$ sudo ifconfig -a
eth0 Link encap:Ethernet HWaddr 14:da:e9:43:2f:14
adr inet6: fe80::16da:e9ff:fe43:2f14/64 Scope:Lien
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:4356 errors:0 dropped:0 overruns:0 frame:0
TX packets:4528 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:448987 (438.4 KiB) TX bytes:350253 (342.0 KiB)
Interruption:40 Adresse de base:0x2000

eth1 Link encap:Ethernet HWaddr 14:da:e9:43:27:ad
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Interruption:20 Mémoire:f7f00000-f7f20000

lo Link encap:Boucle locale
inet adr:127.0.0.1 Masque:255.0.0.0
adr inet6: ::1/128 Scope:Hôte
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:66 errors:0 dropped:0 overruns:0 frame:0
TX packets:66 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:0
RX bytes:7244 (7.0 KiB) TX bytes:7244 (7.0 KiB)

pan0 Link encap:Ethernet HWaddr a2:73:82:f5:7a:7b
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

wlan0 Link encap:Ethernet HWaddr 00:18:f8:a4:6e:10
inet adr:192.168.4.2 Bcast:192.168.4.255 Masque:255.255.255.0
adr inet6: fe80::218:f8ff:fea4:6e10/64 Scope:Lien
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:104149 errors:0 dropped:0 overruns:0 frame:0
TX packets:82018 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:121081260 (115.4 MiB) TX bytes:13098667 (12.4 MiB)

$ sudo ifup eth0
ifup: interface eth0 already configured[/code]

EDIT : J’ai finalement réussi à avoir les deux réseaux en même temps en faisant ceci :

[code]# route add -net 192.168.3.0/24 eth0

route -n

Table de routage IP du noyau
Destination Passerelle Genmask Indic Metric Ref Use Iface
192.168.4.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0
192.168.3.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 192.168.4.254 0.0.0.0 UG 0 0 0 wlan0

ifconfig eth0 192.168.3.2[/code]

Par contre, cela va-t-il rester au reboot de la machine ?
Et comment se fait-il que cette configurattion ne se lance pas directement au démarrage ?

Ce n’est pas ce que j’ai écrit. Une seule route par défaut active sur la machine à un moment donné, et tu te débrouilles comme tu veux pour y parvenir.

D’après le résultat des commandes eth0 était activée mais pas configurée…
Que donne ifup eth0 après avoir exécuté ifdown eth0 ?

L’effet des commandes comme ifconfig et route (qui ne sert à rien ici, ifconfig suffisait) est volatil. Pour que quelque chose persiste, il faut l’écrire dans un fichier.

[quote=“PascalHambourg”]D’après le résultat des commandes eth0 était activée mais pas configurée…
Que donne ifup eth0 après avoir exécuté ifdown eth0 ?[/quote]

[code]$ sudo ifconfig eth0
eth0 Link encap:Ethernet HWaddr 14:da:e9:43:2f:14
adr inet6: fe80::16da:e9ff:fe43:2f14/64 Scope:Lien
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1971809 errors:0 dropped:0 overruns:0 frame:0
TX packets:3925346 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:130588445 (124.5 MiB) TX bytes:5929034031 (5.5 GiB)
Interruption:40 Adresse de base:0x2000

$ sudo ifdown eth0
SIOCDELRT: No such process

$ sudo ifup eth0

$ sudo ifconfig eth0
eth0 Link encap:Ethernet HWaddr 14:da:e9:43:2f:14
inet adr:192.168.3.2 Bcast:192.168.3.255 Masque:255.255.255.0
adr inet6: fe80::16da:e9ff:fe43:2f14/64 Scope:Lien
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1971809 errors:0 dropped:0 overruns:0 frame:0
TX packets:3925356 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:130588445 (124.5 MiB) TX bytes:5929036768 (5.5 GiB)
Interruption:40 Adresse de base:0x2000
[/code]

D’accord. Mais alors, pourquoi ma conf de /etc/network/interfaces n’est-elle pas prise en compte pour eth0 au démarrage ?

Pas la moindre idée. J’avais pensé à une erreur de syntaxe peu visible (genre un caractère invisible, ça s’est déjà vu), mais si ifup marche comme prévu, a priori ce n’est pas ça…
Il n’y a pas autre chose qui pourrait modifier la configuration de l’interface ? Quid du programme qui configure wlan0 ?

J’y avais pensé pour le caractère invisible, mais ça n’est pas ça, j’ai fait un cat -v sur le fichier /etc/network/interfaces et ce n’est pas ça.
J’ai remplacé le network-manager par wicd que je trouve sympa.

Tu as regardé si wicd ne fait pas des trucs pas catholiques avec eth0 ?