Rimuovere IP con comando ip in linux


12

Se aggiungo due IP in questo modo:

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

e quindi provo a eliminare uno dei seguenti:

ip addr del 1.1.1.2/24 dev eth2

Entrambi gli indirizzi IP verranno eliminati e non so come gestirli.

Qualcuno sa come risolverlo?


Il tuo requisito non è chiaro. Puoi dire qual è l'output previsto qui?
Guru

Devo dire ip solo per cancellare un IP non entrambi
Hamed JML

Aggiungi un ip addr showoutput
Gevial

Risposte:


10

L'eliminazione di un indirizzo IP primario da un'interfaccia, per impostazione predefinita, eliminerà tutti gli altri indirizzi sulla stessa sottorete.

Questa è una risposta a un bug REHL 1136733 segnalato dall'utente che ha fornito una risposta il 12-mar-13 ...

Stai aggiungendo più indirizzi nella stessa sottorete, quindi il secondo e quelli successivi diventano secondari. Questo può essere visto nell'output "ip addr show", notare la parola chiave "secondaria" accanto a quegli indirizzi.

Per impostazione predefinita, quando si elimina un indirizzo primario, il kernel elimina anche tutti i rispettivi secondari.

Se si desidera che uno dei secondari venga promosso come nuovo primario all'eliminazione primaria, impostare il sysctl net.ipv4.conf.eth9.promote_secondaries.


sudo systemctl net.ipv4.conf.eth0.promote_secondariesOperazione sconosciuta net.ipv4.conf.eth0.promote_secondaries.
Laryx Decidua,

@LaryxDecidua systemctl è un comando completamente diverso da sysctl
yahol

7

Ciò accade perché si utilizza la maschera di rete / 24 durante l'eliminazione. Viene applicato per indirizzare gli input. Prova quanto segue:

ip addr del 1.1.1.2/32 dev eth2

La maschera / 32 definisce esattamente un host.


Questo non funziona come ho dato al sistema / 24 netmask not / 32.
Hamed JML

Prova senza maschera di rete:ip addr del 1.1.1.2 dev eth2
Gevial

Ancora una volta Elimina entrambi gli IP !!
Hamed JML

Strano. Nel mio test CentOS box l'eliminazione senza maschera di rete ha avuto esito positivo. Anche se l'eliminazione con / 24 ha influito anche su un solo indirizzo. Quale distro stai usando?
Gevial

1
Sto usando Ubuntu 12.04
Hamed JML

2

Non ho un eth2 per verificarlo, ma funziona correttamente su eth0 e non vedo alcun motivo per cui eth2 dovrebbe essere magico. Suppongo che stai usando ip addr show dev eth2come ifconfig eth2non sembra mostrare gli indirizzi aggiuntivi aggiunti da IP.

Una cosa che ho notato è che l'ordine in cui crei / elimini gli indirizzi è importante. Il secondo e i successivi indirizzi aggiunti all'interno della stessa rete verranno eliminati se viene eliminato l'indirizzo primario. Prendere in considerazione ...

    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 si elimina 1.1.1.1, verranno eliminati anche gli indirizzi 1.2 e 1.3. Se elimini qualsiasi altro indirizzo, verrà eliminato solo quell'indirizzo.


Quindi, come posso cancellare il primo indirizzo senza rimuoverne altri?
Hamed JML

0

Vorrei provare quanto segue:

ip addr del 1.1.1.2 dev eth2


0

La risposta di @bvs ha indicato esattamente la giusta direzione del problema e l'ha risolto per me. Ecco alcuni dettagli sui comandi precisi. Come per molti l'interfaccia predefinita è eth0, la prendo nei seguenti comandi, che deve essere sostituita dalla eth2domanda originale.

Per una soluzione temporanea (fino al riavvio) utilizzare

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

per una soluzione permanente che persiste dopo il riavvio, creare un file /etc/sysctl.d/ip-promote.conf(o un altro nome file che termina con .conf) con il seguente contenuto:

# 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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.