Contexto
Estou trabalhando no Centos 7 e tenho uma interface de rede eth0
configurada com vários endereços IP fixos (estou preocupado apenas com os endereços IPv4 aqui, não me importo com o que acontece com o IPV6):
$ ip a
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:50:56:bf:83:39 brd ff:ff:ff:ff:ff:ff
inet 192.168.220.92/24 scope global eth0:311
valid_lft forever preferred_lft forever
inet 192.168.220.82/24 scope global secondary eth0:312
valid_lft forever preferred_lft forever
inet6 fe80::250:56ff:febf:8339/64 scope link
valid_lft forever preferred_lft forever
Esses endereços são afetados automaticamente por algum software, portanto, não tenho controle sobre seu valor IP (192.168.220.92), seu nome alternativo (eth0:311) ou a ordem em que são afetados (primário/secundário).
Objetivo
O que eu quero é uma maneira de desativar temporariamente o 192.168.220.92 enquanto mantenho o 192.168.220.82 em funcionamento.
Então, preciso encontrar uma maneira de colocar 192.168.220.92 novamente online, sem interferir em 192.168.220.82.
Tentativas
O que tentei até agora (sem sucesso, ou não estaria aqui):
Tentei vários
ifconfig
comandos sem sucesso e li que eles estavam obsoletos de qualquer maneira, então me concentrei nosip
comandos.Desligue a interface virtual com
ip link set eth0:311 down
. Isso remove todos os endereços nesta interface:
$ ip a
2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
link/ether 00:50:56:bf:83:39 brd ff:ff:ff:ff:ff:ff
- Remova o IP apenas com
ip addr del 192.168.220.94/24 dev eth0:311
. Isso remove todos os endereços IPv4 nesta interface:
$ ip a
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:50:56:bf:83:39 brd ff:ff:ff:ff:ff:ff
inet6 fe80::250:56ff:febf:8339/64 scope link
valid_lft forever preferred_lft forever
- Remover 192.168.220.84 apenas com o método 3) funciona (mantém 192.168.220.92), mas não é isso que eu preciso, então comecei a procurar uma maneira de trocar endereços IP primários e secundários, mas não consegui encontrar nenhum. O post mais relevante que encontrei foi este que concluiu que não era possível...
A configuração para remover todos os IPs quando o primário é removido é uma configuração que existe no Linux, não tenho certeza de por que você deseja esse comportamento e presumo que historicamente seja para emular alguma compatibilidade com versões anteriores de kernels 2.4.x mais antigos.
A maioria das distros modernas define isso como 1 por padrão da última vez que verifiquei.
Defina o
sysctl
valorpromote_secondaries
como 1.Você deve adicionar o bit relevante
/etc/sysctl.conf
se quiser tornar a alteração permanente.Como observação lateral, EL7 é uma distribuição muito antiga e você pode querer considerar a atualização se valoriza a integridade e segurança geral de seus sistemas.
Com base na resposta de @Matthew Ife abaixo, aqui está o que fiz para atingir o objetivo:
Atualize as configurações do sistema para que o endereço secundário se torne primário quando o primário for removido:
Remova o endereço IP da interface:
Adicione-o novamente quando necessário:
Observe que após esta operação a afetação "primária" e "secundária" de ambos os IPs IPv4 agora é invertida em comparação com o que era inicialmente, mas isso não foi um problema no meu caso.