Configuration LAN plus passerelle

Tags: #<Tag:0x00007fd6f48bdbc0> #<Tag:0x00007fd6f48bda58>

Bonjour à tous;
Je vous sollicite parce que je m’arrache les cheveux sur une petite configuration réseau…

J’ai une machine A sous Buster, que je veux connecter en réseau filaire avec une machine B sous CentOS 6 par mon interface eth0. De plus, je souhaite me connecter depuis A à un réseau d’entreprise par mon interface eth1. Idéalement, la machine B utilise A comme passerelle pour accéder à l’extérieur.

La personne qui gérait ça m’a laissé les adresse IP des machines et des dns, et j’avais réussi à configurer tout ça, en passant 2 jours sur des forums. J’utilise l’« ancienne » méthode en configurant mon /etc/network/interface qui contient:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
    adress 192.168.10.100
    netmask 255.255.255.0
    network 192.168.10.0
    gateway 192.168.10.100
    dns-nameservers 10.1.aa.aa 10.2.bb.bb 192.168.10.100
    dns-search notre-dns.fr

auto eth1
iface eth1 inet static
    adress 10.4.1.76
    netmask 255.255.0.0
    gateway 10.4.0.255
    dns-nameservers 10.1.aa.aa 10.2.bb.bb
    dns-search notre-dns.fr

Ça a marché avec ifup/ifdown (on a viré NetworkManager), puis on a débranché/rebranché le réseau, puis ça ne fonctionne plus… Et franchement je suis une bille en réseau, je ne comprends rien à la doc Debian (chapitre 5: configuration du réseau). En particulier: section 5.1.1: résolution du nom d’hôte (cette section est très obscure pour moi).

Est-ce que vous avez des pistes? Par où commencer pour débuger le réseau?
Merci par avance!
Antoine

Bonjour,

Nous pourrions t’indiquer les éléments qui ne vont pas dans ce que tu as indiqué, mais je pense que ce serait plus efficace que tu demandes conseil à la personne en charge du réseau pour l’entreprise en question.

D’autant plus que comme administrateur réseau d’entreprise, si je me rends compte que quelqu’un a fait un tel montage sans que mes collègues ou moi en ayons été informés, la personne va très vite avoir des problèmes.


AnonymousCoward

Merci de ce retour.
Peut être expliquer pourquoi je dois faire ça:
(i) Nous avons un réseau spécial pour l’équipe constitué de machines debian/ubuntu que notre DSI refuse d’administrer.
(ii) Il s’agit d’un LAN dans une salle, et la machine A ci-dessus sert de passerelle d’accès pour le réseau d’entreprise sur ce réseau LAN.
(iii) Ils sont au courant, rien n’est fait dans leur dos.
Mais merci de prendre ces précautions :wink:

Quelques éléments supplémentaires:

  • un « iptables --list » sur A renvoie rien sous chaque entête (INPUT, FORWARD et OUTPUT).
  • Sortie de ifconfig:
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.10.100  netmask 255.255.255.0  broadcast 192.168.10.255
        inet6 fe80::21f:29ff:fe05:85a5  prefixlen 64  scopeid 0x20<link>
        ether 00:1f:29:05:85:a5  txqueuelen 1000  (Ethernet)
        RX packets 3299  bytes 663709 (648.1 KiB)
        RX errors 0  dropped 6  overruns 0  frame 0
        TX packets 72  bytes 8589 (8.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 16  

eth1: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 10.4.1.76  netmask 255.255.0.0  broadcast 10.4.255.255
        ether 00:1f:29:05:85:a4  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 17  

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Boucle locale)
        RX packets 316  bytes 26900 (26.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 316  bytes 26900 (26.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  • sortie de route -n:
Table de routage IP du noyau
Destination     Passerelle      Genmask         Indic Metric Ref    Use Iface
0.0.0.0         10.4.0.255      0.0.0.0         UG    0      0        0 eth1
10.4.0.0        0.0.0.0         255.255.0.0     U     0      0        0 eth1
192.168.10.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
  • sortie de ifdown sur eth0: interface eth0 not configured
  • sortie de ifup sur eth0: failed to bring up eth0
  • sortie de ip_link_show:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether 00:1f:29:05:85:a5 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000
    link/ether 00:1f:29:05:85:a4 brd ff:ff:ff:ff:ff:ff

Impossible d’aller sur internet par eth1 et d’aller sur B par eth0. Franchement je ne comprends rien:
Pourquoi eth0 est en state UP alors que ifupdown me dit qu’il n’est pas configuré?
Pourquoi eth1 est en state DOWN alors que j’ai fait un ifup dessus qui n’a pas bronché (et echo $? m’a renvoyé 0)?

Dans ce cas, peut-être que ce qui suit pour le /etc/network/interfaces peut faire l’affaire :

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
    adress 192.168.10.100/24

auto eth1
iface eth1 inet static
    adress 10.4.1.76/16
    gateway 10.4.0.255
    dns-nameservers 10.1.aa.aa 10.2.bb.bb
    dns-search notre-dns.fr

En effet, la directive « gateway » indique que l’on configure une « route par défaut ». Or, il ne peut y en avoir qu’une seule par système/ordinateur.

Il est indispensable, en plus du fichier /etc/network/interfaces , d’activer le routage IPv4 dans le fichier /etc/sysctl.conf :

  • modifier le fichier /etc/sysctl.conf pour avoir net.ipv4.ip_forward = 1
  • recharger la configuration en faisant sudo sysctl -p

puis d’activer du « masquerade » ou « snat » avec, par exemple :

  • sudo iptables -t nat -A POSTROUTING --out-interface eth1 -j SNAT --to-source 10.4.1.76

Accessoirement, installer le package iptables-persistent pour que la règle iptables pour faire du SNAT soit sauvegardée et présente au prochain redémarrage.

En complément, tu peux appliquer directement les réglages concernant le DNS dans le fichier /etc/resolv.conf puis le rendre non modifiable avec une commande telle que sudo chattr +i /etc/resolv.conf .

Sinon, les commandes route et ifconfig sont obsolètes sous Linux depuis début 2002. Il te faut utiliser à la place les commandes ip link ls, ip -4 addr ls et ip -4 route ls .
Pour plus de détails, voir https://baturin.org/docs/iproute2/ .


AnonymousCoward

Parce que ifup a commencé à configurer l’interface mais une opération a échoué. (peut-être à cause de l’option gateway aberrante car une machine ne peut pas faire pointer sa route par défaut vers elle-même ou bien de l’option address mal orthographiée adress). Il faut bien comprendre que l’état d’ifupdown ne reflète pas l’état réel de l’interface mais l’état de configuration. Tu peux afficher des détails en exécutant ifup avec l’option -v.

D’après la sortie d’ifconfig un peu plus haut, l’interface est administrativement activée (UP) mais n’a pas de liaison (absence de RUNNING/LOWER_UP).

Note : lest options dns-*n’ont d’effet que si le paquet resolvconf est installé.

Si possible il vaut mieux configurer le routage de 192.168.10.100/24 via 10.4.1.76 sur le réseau principal et éviter le NAT qui ne doit être utilisé qu’en dernier recours.

C’est très sale, et parfaitement inutile.

Nan mais de quoi j’me mêle ?!

As-tu seulement lu ce qui a été écrit comme quoi leur service informatique ne voulait pas s’en mêler ?


AnonymousCoward

Il me semble que ce n’est pas tout-à-fait la même chose. Le routage concerne le reste du réseau. Je suppose aussi (j’espère) que c’est la DSI qui a alloué l’adresse IP de la machine A dans le réseau principal.

Bonjour;

Tout d’abord: merci beaucoup de vos réponses! J’ai passé la journée dessus et ça a un peu avancé: il semble que la configuration pour eth1 et eth0 lui plaise mieux :wink: i.e. suite à un ifup eth1, le résultat d’unifconfigfait bien apparaitre les interfaces en RUNNING. Ce que j’ai fait à partir de vos recommandations:

  • J’ai modifié /etc/network/interfaces sur A comme indiqué: (j’ai juste corrigé adress en address)
  • J’avais déjà activé le MASQUERADE et le forward d’IP. Et j’avais ajouté une route vers B.

  • résultat de ip link ls:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether 00:1f:29:05:85:a5 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether 00:1f:29:05:85:a4 brd ff:ff:ff:ff:ff:ff
  • résultat de ip -4 addr ls:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    inet 192.168.10.100/24 brd 192.168.10.255 scope global eth0
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    inet 10.4.1.76/16 brd 10.4.255.255 scope global eth1
       valid_lft forever preferred_lft forever
  • résultat de ip -4 route ls:
default via 10.4.0.255 dev eth1 onlink 
10.4.0.0/16 dev eth1 proto kernel scope link src 10.4.1.76 
192.168.10.0/24 dev eth0 proto kernel scope link src 192.168.10.100 
  • résultat de ifconfig -a:
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.10.100  netmask 255.255.255.0  broadcast 192.168.10.255
        inet6 fe80::21f:29ff:fe05:85a5  prefixlen 64  scopeid 0x20<link>
        ether 00:1f:29:05:85:a5  txqueuelen 1000  (Ethernet)
        RX packets 46820  bytes 7055299 (6.7 MiB)
        RX errors 0  dropped 24  overruns 0  frame 0
        TX packets 351  bytes 35842 (35.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 16  

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.4.1.76  netmask 255.255.0.0  broadcast 10.4.255.255
        inet6 fe80::21f:29ff:fe05:85a4  prefixlen 64  scopeid 0x20<link>
        ether 00:1f:29:05:85:a4  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 268  bytes 35204 (34.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 17  

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Boucle locale)
        RX packets 10878  bytes 902836 (881.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 10878  bytes 902836 (881.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Oui: C’est la DSI qui nous a fourni l’IP pour cette machine A sur le réseau principal (d’entreprise). Le reste de nos machines est géré en LAN par mes soins (mais une nouvelle fois ce n’est pas du tout ma spécialité! je reprends cette partie suite au décès d’un collègue).

Et un ping depuis A vers B ou vers le gateway 10.4.0.255 me renvoie un beau « host unreachable ». Par contre, j’ai découvert un truc très bizarre: lorsque je reboot la machine et lance immédiatement firefox, il arrive à se connecter à la page d’accueil (startpage.fr); mais si, même instatanément, je cherche à actualiser la page ou à aller sur un autre site, il me dit qu’il n’a pas de connexion.

Encore merci pour le temps déjà passé!

Antoine

Comment ça ? Sur quelle machine ? Pour quoi faire ? Il n’y a besoin d’aucune route vers B.

Donc échec de la résolution ARP.
Tu n’aurais pas interverti les deux interfaces ?

Quelle machine ?

Sur quelle machine ?

Merci de la réactivité!

Une route sur A vers B, en suivant aveuglément les consignes (obsolètes?) laissées par mon prédécesseur. En réalité, je comprends à peu près bien le concept TCP/IP, netmask, gateway, etc. Mais par contre je ne comprends rien à nat/route/ARP/MASQUERADE, etc.

Par contre je comprends qu’il faut que je la retire :slight_smile:

Heu… à priori non (j’avais fait une photo avant de débrancher). Mais au cas où j’essaierai demain de les intervertir.

Lorsque je reboot la machine A et que je lance firefox sur A…
Sinon aucune connexion.

En relisant mon post initial, je vois que j’ai oublié de préciser que jusqu’ici l’utilisation est la suivante:

  • On se connecte sur A depuis le réseau d’entreprise pour lancer des calculs sur B (d’où, je crois, une route de A vers B?).
  • Pour installer des paquets sur B, on passe par A pour accéder à l’internet.

Je trouve que tout cela manque cruellement d’informations concrètes.
Par exemple tu écris

mais tu n’indiques pas précisément comment, et je ne vois aucune trace de cette route dans les retours des commandes route ou ip route que tu as postés.

Tu n’indiques pas comment.

Tu n’indiques pas comment.

Pour faire simple, le réseau isolé doit utiliser une plage d’adresse IP non utilisé dans le reste de l’entreprise.

La machine A doit être configurée comme un routeur. Le réseau isolé utilise A eth0 comme passerelle, puis A utilise son interface eth1 comme passerelle par defaut. Il faut penser à activer le forwarding afin que les paquets puisse passer de eth0 vers eth1.

donc eth0 config ip dans le réseau isolé (même plage d’adresse) avec passerelle par defaut dans le réseau d’entreprise.

la machine B a comme passerelle l’ip de eth0 sur A

avec le paquet forwarding ca devrait marcher.