L'utilisateur 3439894 a répondu à la partie de la question concernant la façon de désactiver Ethernet et de le faire rester en bas ; j'aimerais aborder la question du pourquoi. ifconfig en0 down
ne le fait pas.
La raison fondamentale est que MacOS possède deux niveaux différents de configuration réseau : l'état actif (qui ifconfig en0 down
) et la "base de données de configuration" qui correspond aux paramètres créés dans le volet Réseau des Préférences Système et/ou dans l'onglet networksetup
commandement. Et il y a un "démon de configuration" ( configd
) dont le rôle est d'ajuster l'état du réseau en direct pour qu'il corresponde à ce que la base de données dit qu'il devrait être.
La raison de ce fonctionnement est que la base de données de configuration décrit les paramètres du réseau d'une manière plus souple et cohérente que l'état réel. Par exemple, la base de données de configuration peut contenir plusieurs groupes de paramètres ("emplacements") et passer facilement de l'un à l'autre, en ajustant les paramètres du réseau. tout -- état de l'interface, paramètres IP, routage, DNS, etc -- en une seule opération.
Quoi qu'il en soit, lorsque vous utilisez ifconfig en0 down
vous avez créé une incohérence entre l'état réel et ce que la base de données de configuration indique comme état. configd
ne le remarqueront pas immédiatement, car ce n'est pas le genre d'évènement configd
(branchement ou débranchement d'un câble Ethernet, connexion ou abandon d'un réseau WiFi, etc.) Mais un peu plus tard, un peu de la chose se réveillera configd
et cela peut (ou non) réinitialiser l'état de l'interface à ce que la base de données de configuration dit qu'il devrait être.
Donc, la solution est d'utiliser les préférences du réseau ou networksetup
. Ils apportent tous deux des modifications à la base de données de configuration, puis réveillent configd
afin d'appliquer les changements à l'état réel.