4 votos

¿Cómo cambiar las reglas de udev sin reiniciar (por ejemplo, para cambiar eth1 a eth0)?

TLDR; ¿Cómo se aplican los cambios a /etc/udev/rules.d/70-persistent-net.rules sin reiniciar? (Ver esta documentación acerca de la interfaz de ethernet nombres lógicos.)

Versión larga:

Tengo una unidad flash USB de arranque ejecutando una imagen hecha por remastersys de 11.04. Quiero ser capaz de utilizar esta unidad USB de arranque para ejecutar un servidor de DHCP desde cualquier ordenador. Para hacer esto, tengo que asignar una dirección IP estática a eth0 en /etc/network/interfaces y de referencia eth0 en /etc/default/isc-dhcp-server.

Sin embargo, la tarjeta de red se le asigna ethX basado en la dirección MAC, así que esto sólo funciona en el primer equipo, donde la unidad flash USB se utiliza-cada equipo posteriores de la NIC serán asignados a eth1, eth1, etc.

Parece que hay dos estrategias que podrían trabajar para resolver este problema:

  1. Dinámicamente reescribir /etc/network/interfaces y /etc/default/isc-dhcp-server basado en la primera ethX que aparece al ejecutar ifconfig -- esto debe ser lo que NIC es en realidad en el equipo.
  2. Reescribir /etc/udev/rules.d/70-persistent-net.rules , de modo que cualquiera que sea la dirección MAC asignada a la NIC es nombrado eth0.

Sé que puedo hacer #1 debido a que los cambios en estos archivos pueden ser aplicados por reiniciar networking y isc-dhcp-server.

Sin embargo, #2 parece que el limpiador de mí como yo creo que la /etc/udev/rules.d/70-persistent-net.rules de acumular un montón de crud como USB de esta unidad se utiliza en equipos diferentes.

Cualquier ayuda se agradece.

0voto

Paul Praet Puntos 121

Terminé yendo con la opción #1 (de forma dinámica en la reescritura de los distintos archivos de configuración que necesita ethX). Esto fue fácil de hacer con un simple script en Ruby.

Si la secuencia de comandos haciendo de la dinámica de la reescritura es startup.rb, he creado un contenedor llamado startup-wrapper.rb que llama a la secuencia real con exec 'sudo startup.rb' , de modo que startup.rb se ejecuta con permisos de root.

Luego he creado una entrada en las Aplicaciones de Inicio con el siguiente comando: gnome-terminal -e /path/to/startup-wrapper.rb. Esto le pedirá al usuario su contraseña de la sudo en el arranque.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: