CentOS 7 - Renomear interface de rede sem reiniciar

18

Estou renomeando interfaces de rede modificando os arquivos em /etc/sysconfig/network-scripts .

  • eth0 - > nic0
  • eth1 - > nic1

O conteúdo dos scripts da rede se parece com isso, após a modificação:

# cat /etc/sysconfig/network-scripts/ifcfg-nic0
DEVICE=nic0
BOOTPROTO=static
ONBOOT=yes
HWADDR=xx:xx:xx:xx:xx:xx
USERCTL=no
IPV6INIT=no
MASTER=bond0
SLAVE=yes

Uma reinicialização ativa a nova configuração. Mas como eu ativo essa configuração sem reiniciar?

Um systemctl restart network não faz o truque.

Eu posso desligar uma interface pelo nome antigo ( ifdown eth0 ), mas ifup resulta na mensagem abaixo, não importa se o nome antigo ou novo foi fornecido:

ERROR : [/etc/sysconfig/network-scripts/ifup-eth] Device nic0 does not seem to be present, delaying initialization.

/etc/init.d/network status mostra esta saída:

Configured devices:
lo bond0 nic0 nic1
Currently active devices:
lo eth0 eth1 bond0

Ambos, ifconfig e ip a mostram os nomes das interfaces antigas.

    
por udondan 22.05.2015 / 11:07

5 respostas

23

Você pode renomear o dispositivo usando o comando ip:

/sbin/ip link set eth1 down
/sbin/ip link set eth1 name eth123
/sbin/ip link set eth123 up

Editar :

I am leaving the below for the sake of completeness and posterity (and for informational purposes,) but I have confirmed swill's comment and Marco Macuzzo's answer that simply changing the name and device of the interface /etc/sysconfig/network-scripts/ifcfg-eth0 (and renaming the file) will cause the device to be named correctly as long as the hwaddr= field is included in the configuration file. I recommend using this method instead after the referenced update.

Você também pode querer ter certeza de que você configurou uma regra do udev, para que isso funcione na próxima reinicialização também. O caminho para o udev foi movido no CentOS 7 para /usr/lib/udev/rules.d/60-net.rules, mas você ainda é capaz de gerenciá-lo da mesma maneira. Se você adicionou "net.ifnames = 0 biosdevname = 0" à sua seqüência de inicialização do kernel para retornar ao antigo esquema de nomes para suas nics, você pode remover

ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{type}=="1", PROGRAM="/lib/udev/rename_device", RESULT=="?*", NAME="$result"

E substitua-o por

ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{address}=="00:50:56:8e:3f:a7", NAME="eth123"

Você precisa de uma entrada por nic. Certifique-se de usar o endereço MAC correto e atualize o campo NAME. Se você não usou "net.ifnames = 0 biosdevname = 0", tenha cuidado, pois pode haver conseqüências não intencionais.

    
por 30.07.2015 / 17:26
7

Na verdade, a melhor resposta que acredito é a combinação das duas respostas já postadas. Para alterar o nome do dispositivo sem reiniciar os serviços de rede, use os comandos ip link sugeridos por James Shewey (conjunto de links ip < old_device_name & gt ;; nome < new_device_name >).

Para fazer com que as mudanças sobrevivam a uma reinicialização no Red Hat Linux, modifique o arquivo relevante em / etc / sysconfig / network-scripts /. Renomeie o arquivo ifcfg_ < old_device_name > para ifcfg_ < new_device_name > e altere a variável DEVICE para < new_device_name & gt ;. Além disso, verifique se a variável HWADDR está definida e está correta. Não há necessidade de tocar nas regras do udev , pois o 60-net.rules está lá para ler os arquivos de configuração do ifcfg em / etc / sysconfig / network-scripts.

    
por 20.06.2016 / 10:16
2

A resposta dada por @James Shewey parece ser o caminho certo para fazê-lo.

Se você quiser apenas trabalhar com os arquivos de configuração em /etc/sysconfig/network-scripts e depois acionar um recarregamento, descarregar e carregar o módulo do kernel como mencionado pelo @Tom Hunt nos comentários também funciona:

service network stop
modprobe -r igb
modprobe igb
service network start

Se você acessar a máquina remotamente, certifique-se de executar todos os comandos em um nohup ou você irá se bloquear:

nohup sh -c "service network stop && modprobe -r igb && modprobe igb ; service network start"

O driver para recarregar depende da sua interface.

    
por 01.06.2016 / 15:13
2

Para restaurar a antiga convenção de nomenclatura, você precisa editar o arquivo /etc/default/grub e adicionar o seguinte

net.ifnames=0 biosdevname=0 

no final da variável GRUB_CMDLINE_LINUX

    
por 18.11.2016 / 13:44
0
ip link set ens33 down
ip link set ens33 name eth0
ip link set eth0 up

mv /etc/sysconfig/network-scripts/ifcfg-{ens33,eth0}

sed -ire "s/NAME=\"ens33\"/NAME=\"eth0\"/" /etc/sysconfig/network-scripts/ifcfg-eth0

sed -ire "s/DEVICE=\"ens33\"/NAME=\"eth0\"/" /etc/sysconfig/network-scripts/ifcfg-eth0

MAC=$(cat /sys/class/net/eth0/address)

echo -n 'HWADDR="'$MAC\" >> /etc/sysconfig/network-scripts/ifcfg-eth0
    
por 13.09.2018 / 20:10