La configuration initiale
En tant qu'administrateur Linux, vous avez installé une nouvelle boîte Linux avec 6 cartes réseau eth0 à eth5. L'interface eth0 est correctement configurée et toutes les autres interfaces sont actuellement actives mais sans adresse IP. Les gars du réseau ont simplement attaché quatre câbles à cette boîte. Deux câbles LAN sont utilisés pour connecter le boîtier au réseau de production et deux pour connecter le boîtier à un réseau privé. Vous savez seulement que eth0 est connecté au réseau de production. Mais vous ne savez pas quel autre NIC est connecté au même commutateur car il existe différentes générations de serveurs et / ou les gars du réseau utilisent les mauvais NIC pour leurs connexions.
Tâche à accomplir
Comme cette configuration est typique de votre infrastructure, vous souhaitez automatiser la configuration des interfaces de liaison. Vous avez maintenant la tâche de détecter les cartes réseau qui ne sont pas connectées du tout et celles qui sont liées au même commutateur afin qu'elles puissent être liées. Vous n'avez accès qu'aux boîtes Linux et ne pouvez pas interroger les commutateurs.
Des idées
La détection de l'état du lien est simple:
ethtool $device | grep 'Link detected' | cut -d ':' -f 2
Mais comment faire correspondre les appareils connectés au même commutateur?
Dans HP-UX, il existe un outil à cet effet appelé linkloop [1]. L'outil Linux officiel est manquant (il existe cependant un ancien projet SourceForce).
Les solutions possibles qui me sont déjà venues à l'esprit sont les suivantes:
Écoutez sur toutes les interfaces avec tcpdump. Créez et envoyez un paquet ICMP (diffusion). Les interfaces qui voient ce paquet doivent être connectées au même commutateur. -> besoin de suggestions d'outils simples qui peuvent être utilisés pour cela. Je voudrais utiliser des commandes shell simples ou Python pour les scripts.
Essayez de parler à un boîtier externe via un protocole simple (HTTP?) Et voyez s'il y a une réponse. -> Sujet aux erreurs et dépendant d'un boîtier externe.
Avez-vous d'autres idées ou suggestions pour résoudre cette tâche?
Merci d'avance pour tous les commentaires!
Réponses:
Les commutateurs peuvent déjà vous envoyer les informations souhaitées. S'il s'agit de commutateurs Cisco, ils utiliseront par défaut un processus appelé CDP (Cisco Discovery Protocol) qui vous fournira des informations sur le commutateur auquel il est connecté.
Vous pouvez utiliser tcpdump pour afficher ces informations avec les éléments suivants (en remplaçant l'interface appropriée):
La version standard de CDP est LLDP (protocole de découverte de couche liaison). Certains fournisseurs auront cette option activée par défaut et d'autres désactivés, votre kilométrage variera donc. Il existe certaines implémentations LLDP pour Linux, mais si vous voulez quelque chose de similaire à ce qui précède, vous pouvez l'utiliser (configurer LLDP sur un commutateur Cisco et tester ce qui suit, ce qui est plus cohérent avec ce qui précède):
Sauf cela, je dirais qu'une modification de l'option 1 que vous fournissez pourrait fonctionner, cependant, au lieu d'envoyer un ICMP de diffusion, vous pouvez essayer un ICMP normal (vers un hôte ne figurant pas dans la table ARP) et capturer les paquets ARP. Si la demande ARP est envoyée à eth0 et que vous la recevez sur eth1 et eth3, vous savez que celles-ci se trouvent sur le même VLAN. La commande la plus simple pour cela est la suivante:
la source
Si le commutateur communiquera avec vous à l'aide de LLDP, vous pourrez peut-être exécuter LLDP et y trouver plus d'informations.
la source
Si les commutateurs sont des périphériques Cisco, vous pouvez peut-être obtenir des informations CDP, à condition qu'ils annoncent / diffusent des informations CDP
par exemple outils cdp ou cdpr
la source
Pourquoi ne pas simplement télécharger et créer l'
linkloop
outil? Ce n'est pas si vieux ...Sinon, je voudrais simplement utiliser un outil qui diffusera sur la couche 2 et vérifier que vous le recevez via tcpdump.
L'envoi d'un paquet ICMP de diffusion est facile
ping -b 192.168.1.255
la source