Usar este software mío para la configuración de la red es muy fácil.
http://code.google.com/p/badvpn/wiki/NCD
El siguiente programa de ENT servirá. También muestra cómo puede extender la configuración, en este caso ejecutando algo cuando la red sube / baja.
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);
}
Tenga en cuenta que esto no solo manejará el cable de red que está enchufado o desconectado, sino también la interfaz de red que aparece y desaparece (útil si es USB).
La ventaja de usar NCD en comparación con otro software como ifplugd es que su diseño permite una gran flexibilidad. Básicamente le permite programar su propia configuración de red, en lugar de limitarse a un conjunto limitado de capacidades codificadas.
ACTUALIZACIÓN: hice paquetes de Ubuntu para BadVPN y NCD. También actualicé el wiki con instrucciones de instalación y uso para Ubuntu: http://code.google.com/p/badvpn/wiki/NCD#Running_it
ifplugd
ynetplugd
aparecerá sin mantenimiento. Sin embargo, esta pregunta similar parece tener una buena respuesta (simple) usando las reglas de udev: no se necesita un paquete adicional. serverfault.com/a/312296/275255