Remover IP com o comando ip no linux

12

Se eu adicionar dois IPs como este:

ip addr add 1.1.1.1/24 dev eth2
ip addr add 1.1.1.2/24 dev eth2

e então eu tento excluir um dos seguintes:

ip addr del 1.1.1.2/24 dev eth2

Ambos os IPs serão excluídos e eu não sei como lidar com isso.

Alguém sabe como resolver isso?

Hamed JML
fonte
Sua exigência não está clara. Você pode dizer qual é a saída esperada aqui?
Guru
Eu preciso dizer ip apenas para apagar um não IP ambos
Hamed JML
Por favor, adicione ip addr showsaída
Gevial ​​12/13/13

Respostas:

10

A exclusão de um endereço IP primário de uma interface excluirá, por padrão, todos os outros endereços na mesma sub-rede.

Esta é uma resposta a um bug do REHL 1136733 relatado pelo usuário lain que forneceu uma resposta em 12 de março de 13 ...

Você está adicionando vários endereços na mesma sub-rede, assim o segundo e os subsequentes se tornam secundários. Isso pode ser visto na saída "ip addr show", observe a palavra-chave "secundário" ao lado desses endereços.

Por padrão, ao excluir um endereço primário, o kernel exclui também todos os respectivos secundários.

Se você deseja que um dos secundários seja promovido como novo primário na exclusão primária, configure o sysctl net.ipv4.conf.eth9.promote_secondaries.

bvs
fonte
sudo systemctl net.ipv4.conf.eth0.promote_secondariesOperação desconhecida net.ipv4.conf.eth0.promote_secondaries.
Laryx Decidua
@LaryxDecidua systemctl é totalmente diferente comando sysctl
yahol
7

Isso acontece porque você usa a máscara de rede / 24 ao excluir. É aplicado para endereçar sua entrada. Tente o seguinte:

ip addr del 1.1.1.2/32 dev eth2

A máscara / 32 define exatamente um host.

Gevial
fonte
Isso não funciona, porque eu forneci o sistema / 24 máscara de rede não / 32.
Hamed JML
Tente sem máscara de rede:ip addr del 1.1.1.2 dev eth2
Gevial ​​12/03
Mais uma vez, exclua os dois IPs !!
Hamed JML
Estranho. Nos meus testes, a exclusão da caixa do CentOS sem máscara de rede foi bem-sucedida. Embora a exclusão com / 24 também tenha afetado apenas um endereço. Que distro você está usando?
Gevial
1
Estou usando o Ubuntu 12.04
Hamed JML 12/13/13
2

Não tenho um eth2 para verificar isso, mas funciona corretamente em eth0 e não vejo razão para que o eth2 deva ser mágico. Presumo que você esteja usando, ip addr show dev eth2pois ifconfig eth2não parece mostrar os endereços adicionais adicionados pelo ip.

Uma coisa que notei é que a ordem em que você cria / exclui os endereços é importante. O segundo e os endereços subsequentes adicionados na mesma rede serão excluídos se o endereço principal for excluído. Considere ...

    inet 1.1.1.1/24 scope global eth0
    inet 1.1.2.3/24 scope global eth0
    inet 1.1.1.2/24 scope global secondary eth0
    inet 1.1.1.3/24 scope global secondary eth0

Se você excluir 1.1.1.1, os endereços 1.2 e 1.3 também serão excluídos. Se você excluir qualquer outro endereço, somente esse endereço será excluído.

user9517
fonte
Então, como posso excluir o primeiro endereço sem remover outros?
Hamed JML
0

Eu tentaria o seguinte:

endereço IP do 1.1.1.2 dev eth2

cérebro
fonte
0

A resposta do @bvs apontou exatamente na direção certa do problema e a resolveu para mim. Aqui estão alguns detalhes sobre os comandos precisos. Quanto a muitos, a interface padrão é eth0o seguinte nos seguintes comandos, que devem ser substituídos pela eth2pergunta original.

Para uma solução temporária (até a reinicialização), use

sudo sysctl -w net.ipv4.conf.eth0.promote_secondaries=1

para uma solução permanente que persista após a reinicialização, crie um arquivo /etc/sysctl.d/ip-promote.conf(ou outro nome de arquivo que termine com .conf) com o seguinte conteúdo:

# The following makes that a second IP on the eth0 interface
# is promoted as primary IP instead of being removed.
net.ipv4.conf.eth0.promote_secondaries=1
freiheitsnetz
fonte