Netlink
Netlink : famille de sockets (AF_NETLINK) qui sert de canal de communication entre le noyau Linux et les programmes de l'espace utilisateur. Contrairement à un appel système ponctuel, elle permet d'échanger des messages structurés dans les deux sens, et au noyau de prévenir les processus abonnés quand quelque chose change.
Plusieurs sous-systèmes l'utilisent, chacun avec son protocole. rtnetlink porte la configuration réseau : ip addr add ou ip route add envoient des messages RTM_NEWADDR et RTM_NEWROUTE, et systemd-networkd parle au noyau de la même façon, sans jamais appeler ip ; ip monitor address route affiche ces messages en direct. nfnetlink sert à nft pour charger les règles de Netfilter. Le sous-système d'audit transmet ses enregistrements à auditd par une socket netlink, et le noyau annonce l'apparition des périphériques (les uevents) à udev par le même moyen.
C'est ce qui rend les modifications faites avec ip immédiates mais éphémères : elles ne touchent que les structures du noyau en mémoire, et disparaissent au redémarrage. Les opérations qui modifient l'état du noyau par netlink exigent en général une capability, comme CAP_NET_ADMIN pour le réseau.
Dans les cours
- Linux : administration système, leçon 7 : Configurer le réseau d'un serveur
- Linux : administration système, leçon 15 : Tracer et contrôler l'intégrité : auditd et AIDE