Faire un don ! | | style | statistiques | contactez-nous | plan | lettre d'information

Liens connexes

Dépêche modérée par

Dépêche éditée par

Articles : Netconsole, log de messages noyaux via UDP

Posté par Colin Leroy (page perso, ). Modéré le 29 septembre 2004.
Noyau
Un pseudo driver réseau a fait son apparition dans le noyau 2.6 il y a neuf mois, et n'a pas été remarqué malgré son utilité plutôt importante dans certains cas.

Il s'agit de netconsole, écrit par Ingo Molnar et Matt Mackal, qui permet de logger les messages du noyau via réseau (UDP). Cela présente les mêmes avantages qu'une console série, c'est-à-dire que c'est bien pratique pour débugguer un noyau sans écran, ou dont le pilote graphique est cassé pour une raison X ou Y. L'avantage supplémentaire est que ça fonctionne sans port série, port qui n'existe plus sur bon nombre de portables ou architectures (PPC, Sparc, ...).

> Lire la dépêche (10 commentaires, moyenne: 4,1).  

Netconsole tente de s'initialiser le plus tôt possible, il fonctionne donc mieux si le pilote de la carte réseau est dans le noyau plutôt qu'en module. Il envoie ensuite tous les messages vers une adresse définie, en UDP sur le port 6666 par défaut. Ainsi, un simple netcat sur la machine de destination suffit pour lire ces messages: `nc -u -l -p 6666`.

Pour utiliser netconsole, il faut d'abord une carte réseau dont le pilote supporte le polling (la plupart le font, sinon il est trivial de l'ajouter). Ensuite il faut ajouter le support netconsole dans le noyau (CONFIG_NETCONSOLE=y, "Devices drivers / Networking support / Network console logging support"). Enfin, il faut ajouter la configuration de netconsole dans la ligne de commande du noyau (ligne 'append' dans le fichier de configuration de Lilo, par exemple), au format suivant :

netconsole=src-port@src-ipaddr/src-if,dst-port@dst-ipaddr/dst-macaddr

Par exemple,
"netconsole=32768@192.168.0.11/eth0,6666@192.168.0.4/08:00:20:76:3C:57" enverra les logs de 192.168.0.11:32768 à 192.168.0.4:6666 en utilisant l'interface eth0.

Il faut prendre en compte le fait que n'importe quelle machine peut envoyer des messages au destinataire ; pour éviter un possible ennui de sécurité il faut par exemple utiliser le firewall sur la machine de destination.

Le résultat sur la machine (192.168.0.11) :
[colin@jack ~]# dmesg
[...]
netconsole: local port 32768
netconsole: local IP 192.168.0.11
netconsole: interface eth0
netconsole: remote port 6666
netconsole: remote IP 192.168.0.4
netconsole: remote ethernet address 08:00:20:76:3c:57
[...]
eth0: Sun GEM (PCI) 10/100/1000BaseT Ethernet 00:0a:95:a9:ff:bc PHY ID: 4061e4, addr: 0
eth0: Found BCM5221 PHY
netconsole: device eth0 not up yet, forcing it
eth0: Link is up at 10 Mbps, half-duplex.
eth0: Pause is disabled
netconsole: network logging started
[...]

Et sur la machine destination (192.168.0.4 dans notre cas) :
[colin@paperstreet ~]# nc -u -l -p 6666
Total memory = 640MB; using 2048kB for hash table (at c0400000)
Linux version 2.6.9-rc2 (colin@jack.colino.net) (gcc version 3.2.3 20030422 (Gentoo Linux 1.4 3.2.3-r4, propolice)) #5 Wed Sep 29 14:43:14 CEST 2004
[...]

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.

Redondant ?

Posté par sylvain cherrier (page perso, ) le 30/09/2004 à 06:44. (lien). Évalué à 5.

syslogd avait déja la possibilité d'envoyer tous ou certains logs vers une machine..
Il s'agit ici seulement des logs du kernel ?
Je ne vois pas ce que cela ajoute à la fonction réseau de syslogd..
J'ai peut etre raté un épisode ?

[+] syslogd

Posté par Rolland Dudemaine () le 30/09/2004 à 06:44. (lien). Évalué à -1.

Je croyais que syslogd etait capable d'envoyer des logs sur le reseau ?

Quel est l'interet d'avoir ca dans le noyau si un demon y arrive bien et depuis des lustres ?
Il doit bien y avoir une raison mais je ne la trouve pas ...

y'a pas une erreur?

Posté par cedricv () le 30/09/2004 à 08:56. (lien). Évalué à 5.

Pour utiliser netcat, il faut d'abord une carte réseau dont le driver supporte le polling (la plupart le font, sinon il est trivial de l'ajouter).

ca ne serait pas plutot netconsole?

IPv6

Posté par Bernard Massot () le 30/09/2004 à 12:46. (lien). Évalué à 3.

D'après ce que j'ai pu constater en lisant les sources du noyau, netconsole ne peut envoyer des messages qu'en IPv4. Est-il planifié de pouvoir utiliser IPv6 pour ça?

Revenir en haut de page