Hapus IP dengan perintah ip di linux

12

Jika saya menambahkan dua IP seperti ini:

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

dan kemudian saya mencoba untuk menghapus salah satu dari ini:

ip addr del 1.1.1.2/24 dev eth2

KEDUA IP akan dihapus dan saya tidak tahu bagaimana menanganinya.

Adakah yang tahu bagaimana mengatasinya?

Jed Hamed
sumber
Permintaan Anda tidak jelas. Bisakah Anda memberi tahu apa output yang diharapkan di sini?
Guru
Saya perlu mengatakan ip hanya untuk menghapus satu IP tidak keduanya
Hamed JML
Silakan tambahkan ip addr showkeluaran
Gevial

Jawaban:

10

Menghapus alamat IP utama dari sebuah antarmuka, secara default, akan menghapus semua alamat lain pada subnet yang sama.

Ini adalah balasan untuk bug REHL 1136733 yang dilaporkan oleh pengguna lain yang memberikan jawaban pada 12-Mar-13 ...

Anda menambahkan beberapa alamat dalam subnet yang sama, sehingga yang kedua dan selanjutnya menjadi sekunder. Ini dapat dilihat pada output "ip addr show", catat kata kunci "sekunder" di sebelah alamat-alamat itu.

Secara default, ketika menghapus alamat utama, kernel juga menghapus semua sekunder masing-masing.

Jika Anda ingin salah satu dari secondaries dipromosikan menjadi primer baru pada penghapusan primer, atur net.ipv4.conf.eth9.promote_secondaries sysctl.

bvs
sumber
sudo systemctl net.ipv4.conf.eth0.promote_secondariesOperasi net.ipv4.conf.eth0.promote_secondaries tidak dikenal.
Laryx Decidua
@LaryxDecidua systemctl adalah perintah yang sama sekali berbeda dari sysctl
yahol
7

Ini terjadi karena Anda menggunakan / 24 topeng jaringan saat menghapus. Ini diterapkan ke alamat yang Anda input. Coba yang berikut ini:

ip addr del 1.1.1.2/32 dev eth2

Topeng / 32 mendefinisikan tepat satu host.

Gevial
sumber
Ini tidak berfungsi karena saya telah memberikan sistem / 24 netmask tidak / 32.
Hamed JML
Coba tanpa netmask sama sekali:ip addr del 1.1.1.2 dev eth2
Gevial
Sekali lagi Hapus kedua IP !!
Hamed JML
Aneh. Pada pengujian saya, kotak CentOS menghapus tanpa netmask berhasil. Meskipun menghapus dengan / 24 juga hanya mempengaruhi satu alamat. Distro apa yang Anda gunakan?
Gevial
1
Saya menggunakan Ubuntu 12.04
Hamed JML
2

Saya tidak memiliki eth2 untuk memeriksanya tetapi berfungsi dengan benar pada eth0 dan saya tidak melihat alasan mengapa eth2 harus bersifat magis. Saya kira Anda menggunakan ip addr show dev eth2karena ifconfig eth2tidak muncul untuk menunjukkan alamat tambahan yang ditambahkan oleh ip.

Satu hal yang saya perhatikan adalah bahwa urutan Anda membuat / menghapus alamat itu penting. Alamat kedua dan selanjutnya yang ditambahkan dalam jaringan yang sama akan dihapus jika alamat primer dihapus. Pertimbangkan ...

    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

Jika Anda menghapus 1.1.1.1 maka alamat 1.2 dan 1.3 akan dihapus juga. Jika Anda menghapus alamat lain, maka hanya alamat itu yang akan dihapus.

user9517
sumber
Jadi, bagaimana saya bisa menghapus alamat pertama tanpa menghapus yang lain?
Hamed JML
0

Saya akan mencoba yang berikut:

ip addr del 1.1.1.2 dev eth2

otak
sumber
0

The jawaban dari @bvs menunjuk persis ke arah yang benar dari masalah dan dipecahkan itu untuk saya. Di sini, ada beberapa perincian tentang perintah yang tepat. Adapun banyak antarmuka default eth0, saya mengambil itu dalam perintah berikut, yang harus diganti oleh eth2untuk pertanyaan awal.

Untuk solusi sementara (sampai reboot) gunakan

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

untuk solusi permanen yang tetap ada setelah reboot membuat file /etc/sysctl.d/ip-promote.conf(atau nama file lain yang diakhiri .conf) dengan konten berikut:

# 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
sumber