Mit meiner Software für die Netzwerkkonfiguration ist das sehr einfach.
http://code.google.com/p/badvpn/wiki/NCD
Das folgende NCD-Programm reicht aus. Es wird auch gezeigt, wie Sie die Konfiguration erweitern können, in diesem Fall indem Sie etwas ausführen, wenn das Netzwerk hoch / runter geht.
process eth0 {
# Set device.
var("eth0") dev;
# Wait for device to appear, set it up, and wait for cable to be plugged in.
net.backend.waitdevice(dev);
net.up(dev);
net.backend.waitlink(dev);
# DHCP configuration.
# net.ipv4.dhcp() will block here until it obtaines an IP address.
# It doesn't check the obtained address in any way,
# so as a basic security measure, do not proceed if it is local.
net.ipv4.dhcp(dev) dhcp;
ip_in_network(dhcp.addr, "127.0.0.0", "8") test_local;
ifnot(test_local);
# Assign IP address to interface, as obtained by DHCP.
net.ipv4.addr(dev, dhcp.addr, dhcp.prefix);
# Add default route.
net.ipv4.route("0.0.0.0", "0", dhcp.gateway, "20", dev);
# Add DNS servers.
net.dns(dhcp.dns_servers, "20");
# Run an external program when network comes up or goes down.
list("/some/program/to/run/when/up", "argument") do;
list("/some/program/to/run/when/down", "argument") undo;
run(do, undo);
}
Beachten Sie, dass dies nicht nur das Netzwerkkabel behandelt, das eingesteckt oder herausgezogen wird, sondern auch die Netzwerkschnittstelle selbst, die angezeigt wird und verschwindet (nützlich, wenn es sich um USB handelt).
Der Vorteil der Verwendung von NCD im Vergleich zu anderer Software wie ifplugd besteht darin, dass das Design eine große Flexibilität ermöglicht. Grundsätzlich können Sie Ihre eigene Netzwerkkonfiguration programmieren, anstatt sich auf einen begrenzten Satz fest codierter Funktionen zu beschränken.
UPDATE: Ich habe Ubuntu-Pakete für BadVPN und NCD erstellt. Ich habe das Wiki auch mit Installations- und Verwendungsanweisungen für Ubuntu aktualisiert: http://code.google.com/p/badvpn/wiki/NCD#Running_it
ifplugd
undnetplugd
scheinen nicht gepflegt zu sein. Diese ähnliche Frage scheint jedoch eine gute (einfache) Antwort mit udev-Regeln zu haben - es wird kein zusätzliches Paket benötigt. serverfault.com/a/312296/275255