"Network Unreachable" et fichier "/etc/hosts"

Bonjour à la communauté “debian-fr”,

Je suis en train de tester le principe de mise place et de communication de 2 réseaux (réseau1: 192.168.1.0 et réseau2: 192.168.2.0) connectés via un hub (je pourrais utiliser “1” hub par réseau et une machine avec 2 cartes réseau ; ce que je ferai, mais je ne crois pas que cela soit ici le problème).

Les 2 machines ont été installées avec debian 6 via la connection “box” du réseau1 (adressage DHCP) puis affectées à des adresses statiques sur des 2 réseaux différents (cf. les fichiers “/etc/network/interfaces” plus bas), on a:

  • Réseau1 : incluant en particulier “machine1” (eth0) et connecté au web via une “box” (elle même connectée au hub)
  • Réseau2 : incluant en particulier “machine1” (eth0:0) et “machine2” (eth0)
  • Les ping des “adresses IP” ne posent pas de problème:
  • de machine1 vers machine1 : ping 192.168.1.100 = ok!
  • de machine1 vers machine1 : ping 192.168.2.100 = ok!
  • de machine1 vers machine2 : ping 192.168.2.200 = ok!
  • de machine2 vers machine2 : ping 192.168.2.200 = ok!
  • de machine2 vers machine1 : ping 192.168.2.100 = ok!
  • Les ping des “hostname” ne posent pas de problème, SAUF! le cas suivant:
  • de machine2 vers machine1 : ping machine1

a) Ce cas est OK, lorsque dans le fichier “/etc/hosts” de “machine2” l’ip de “machine1” dans NET2 est définie AVANT celle de “machine1” dans NET1 :

NET 2

192.168.2.100 machine1.smecaflux.net machine1

NET 1

192.168.1.100 machine1.smecaflux.net machine1

b) Ce cas n’est PAS OK, avec message “Network is Unreachable” dans le cas contraire :

NET 1

192.168.1.100 machine1.smecaflux.net machine1

NET 2

192.168.2.100 machine1.smecaflux.net machine1

Question N°1:
Pourquoi ce problème du cas b) (“Network is Unreachable”) alors que :

  • à priori les fichiers “/etc/hosts” sont pris en compte de façon prioritaire (option “files” définie en premier pour le champs “hosts” du fichier “/etc/nsswitch.conf”)

  • le fichier “/etc/host.conf” des 2 machines contiennent l’option “multi on”

Question N°2 (désolé de ne pas ouvrir un 2nd fil, mais le context de la config et du problème sont liés):
La machine2 n’est PAS connecté directement au web via la “box” (appartenant au réesau1).
Y a-t-il un moyen de le faire en passant par machine1 (connectée au réseau1 via “eth0” et au réseau2 via “eth0:O”) ?

En vous remerciant par avance pour vos réponses et votre patience à la lecture de ce long post.

Cordialement,


  • Infos Machine N°1 (connectée réseau N°1 via eth0) *
  •               (connectée réesau N°2 via eth0:0)*
    

1a) Retour commandes “hostname” et “uname -n”: machine1
1b) Retour commandes “hostname -d” et “dnsdomainname” : smecaflux.net
1c) Retour commande “hostname -f” : machine1.smecaflux.net
1d) Contenu du fichier “/etc/hostname” : machine1

1e) Contenu du fichier “/etc/hosts”:
127.0.0.1 localhost.localdomain localhost

NET 1

192.168.1.100 machine1.smecaflux.net machine1
192.168.1.1 box

NET 2

192.168.2.100 machine1.smecaflux.net machine1
192.168.2.200 machine2.smecaflux.net machine2

1f) Contenu fichier /etc/network/interfaces:

loopback

auto lo
iface lo inet loopback

Interface RESEAU1

auto eth0
iface eth0 inet static
network 192.168.1.0
address 192.168.1.100
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.1
dns-nameservers 192.168.1.1

Interface RESEAU2

auto eth0:0
iface eth0:0 inet static
network 192.168.2.0
address 192.168.2.100
netmask 255.255.255.0
broadcast 192.168.2.255

1g) Retour commande “ifconfig”:
eth0 Link encap:Ethernet HWaddr 00:1d:09:a4:02:20
inet adr:192.168.1.100 Bcast:192.168.1.255 Masque:255.255.255.0
adr inet6: fe80::21d:9ff:fea4:220/64 Scope:Lien
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:35340 errors:0 dropped:0 overruns:0 frame:0
TX packets:37032 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:24650432 (23.5 MiB) TX bytes:6671541 (6.3 MiB)
Interruption:17

eth0:0 Link encap:Ethernet HWaddr 00:1d:09:a4:02:20
inet adr:192.168.2.100 Bcast:192.168.2.255 Masque:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interruption:17

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:266 errors:0 dropped:0 overruns:0 frame:0
TX packets:266 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:0
RX bytes:22520 (21.9 KiB) TX bytes:22520 (21.9 KiB)

1h) Retour commande “route -n” :
Table de routage IP du noyau
Destination Passerelle Genmask Indic Metric Ref Use Iface
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth0
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0


  • Infos Machine N°2 (connectée réseau N°2 via eth0)*

2a) Retour commandes “hostname” et “uname -n”: machine2
2b) Retour commandes “hostname -d” et “dnsdomainname” : smecaflux.net
2c) Retour commande “hostname -f” : machine2.smecaflux.net

2d) Contenu du fichier “/etc/hostname” : machine2

2e) Contenu du fichier “/etc/hosts”:
127.0.0.1 localhost.localdomain localhost

NET 1

192.168.1.100 machine1.smecaflux.net machine1

NET 2

192.168.2.100 machine1.smecaflux.net machine1
192.168.2.200 machine2.smecaflux.net machine2

2f) Contenu fichier /etc/network/interfaces:

loopback

auto lo
iface lo inet loopback

Interface RESEAU2

auto eth0
iface eth0 inet static
address 192.168.2.200
netmask 255.255.255.0
broadcast 192.168.2.255

2g) Retour commande “ifconfig”:
eth0 Link encap:Ethernet HWaddr 00:21:85:96:9d:48
inet adr:192.168.2.200 Bcast:192.168.2.255 Masque:255.255.255.0
adr inet6: fe80::221:85ff:fe96:9d48/64 Scope:Lien
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:553 errors:0 dropped:0 overruns:0 frame:0
TX packets:46 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:80963 (79.0 KiB) TX bytes:6672 (6.5 KiB)
Interruption:28 Adresse de base:0xa000

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:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:0
RX bytes:560 (560.0 B) TX bytes:560 (560.0 B)

2h) Retour commande “route -n” :
Table de routage IP du noyau
Destination Passerelle Genmask Indic Metric Ref Use Iface
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

machine2 n’a pas de route vers le réseau NET 1, voilà tout. Rien à voir avec les fichiers hosts, host.conf, nsswitch.conf… qui concernent la résolution de nom, pas le routage. En permutant les lignes dans /etc/hosts, tu changes juste l’adresse IP qui est retournée pour le nom machine1 ; l’une est joignable, l’autre pas.

Pour la deuxième question, il suffit de configurer machine1 en routeur (avec NAT si tu n’ajoutes pas une route vers le réseau NET 2 via machine1 sur la box) et de définir son adresse dans le réseau NET 2 comme passerelle par défaut dans la configuration IP de machine2, sans oublier les détails mineurs comme les DNS…

[quote=“PascalHambourg”]machine2 n’a pas de route vers le réseau NET 1,

Pour la deuxième question, il suffit de configurer machine1 en routeur (avec NAT si tu n’ajoutes pas une route vers le réseau NET 2 via machine1 sur la box) et de définir son adresse dans le réseau NET 2 comme passerelle par défaut dans la configuration IP de machine2, sans oublier les détails mineurs comme les DNS…[/quote]

Merci beaucoup pour les infos, tout est ok!

Question N°1:

  • SUR machine2 : “route add -net 192.168.1.0 netmask 255.255.255.0 dev eth0”
  • le “ping machine1” marche indépendamment de la définition des adresses de machine1 dans “/etc/hosts” de machine2

Question N°2:

  • SUR machine1 (routeur NAT), une règle en “sus” dans le fichier de config firewall : “/etc/init.d/monfirewall_avec_nat” :
    "iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.1.100

  • SUR machine2 une ligne en “sus” dans son “/etc/network/interfaces” définissant machine1 comme passerelle :
    “gateway 192.168.2.100” et l’accès au web est ok!

NOTA: je remarque que dans ce cas où machine1 est configurée comme routeur NAT et définie comme passerelle pour machine2, alors on peut même explicitement supprimer la route vers NET1 et le “ping machine1” marche quand même …
Est-ce grâce au “/etc/resolv.conf” de machine2 qui contient le ligne “nameserver 192.168.1.1” (suite à l’intall. debian-DHCP de machine2) ???

Non, c’est grâce à la route par défaut créée par l’option gateway, qui dit que le reste du monde (y compris NET 1) est joignable via l’adresse définie comme passerelle.
resolv.conf ne concerne que la résolution de nom par DNS, pas le routage.