ลบ IP ด้วยคำสั่ง ip ใน linux


12

ถ้าฉันเพิ่มสอง IP เช่นนี้:

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

แล้วฉันพยายามที่จะลบแบบนี้:

ip addr del 1.1.1.2/24 dev eth2

IP ทั้งคู่จะถูกลบและฉันไม่รู้วิธีจัดการกับมัน

มีใครรู้วิธีแก้ปัญหาเหรอ?


ความต้องการของคุณไม่ชัดเจน คุณสามารถบอกได้ว่าผลลัพธ์ที่คาดหวังที่นี่คืออะไร?
ปราชญ์

ฉันต้องพูด ip เพียงเพื่อลบหนึ่ง IP ไม่ใช่ทั้งคู่
Hamed JML

โปรดเพิ่มip addr showผลลัพธ์
Gevial

คำตอบ:


10

การลบที่อยู่ IP หลักจากส่วนต่อประสานจะเป็นการลบที่อยู่อื่นทั้งหมดในซับเน็ตเดียวกัน

นี่คือการตอบกลับข้อผิดพลาดREHL 1136733 ที่รายงานโดยผู้ใช้ที่ได้รับคำตอบเมื่อวันที่ 12-Mar-13 ...

คุณกำลังเพิ่มที่อยู่หลายแห่งในซับเน็ตเดียวกันดังนั้นที่สองและที่อยู่ถัดจากนั้นจึงกลายเป็นที่สอง สามารถดูได้ในเอาต์พุต "ip addr show" โปรดสังเกตคำหลัก "รอง" ถัดจากที่อยู่เหล่านั้น

ตามค่าเริ่มต้นเมื่อลบที่อยู่หลักเคอร์เนลจะลบลำดับที่สองทั้งหมดตามลำดับ

หากคุณต้องการเลื่อนขั้นหนึ่งในสองเป็นหลักใหม่ในการลบหลักให้ตั้งค่า net.ipv4.conf.eth9.promote_secondaries sysctl


sudo systemctl net.ipv4.conf.eth0.promote_secondariesการดำเนินการที่ไม่รู้จัก net.ipv4.conf.eth0.promote_secondaries
กล่องเสียง Decidua

@ LaryxDecidua systemctlเป็นคำสั่งที่แตกต่างอย่างสิ้นเชิงจากsysctl
yahol

7

สิ่งนี้เกิดขึ้นเนื่องจากคุณใช้ / 24 เครือข่ายมาสก์เมื่อลบ มันใช้กับที่อยู่ที่คุณป้อน ลองทำสิ่งต่อไปนี้:

ip addr del 1.1.1.2/32 dev eth2

หน้ากาก / 32 กำหนดหนึ่งโฮสต์อย่างแน่นอน


สิ่งนี้ไม่ทำงานเนื่องจากฉันได้ให้ระบบ / 24 netmask ไม่ใช่ / 32
HML JML

ลองโดยไม่ใช้ netmask เลย:ip addr del 1.1.1.2 dev eth2
Gevial

ลบ IP ทั้งสองอีกครั้ง !!
Hamed JML

แปลก. ในการทดสอบ CentOS ของฉันลบกล่องโดยไม่ต้อง netmask ก็ประสบความสำเร็จ แม้ว่าการลบด้วย / 24 จะส่งผลกระทบต่อที่อยู่เดียวเท่านั้น คุณใช้ distro อะไร
Gevial

1
ฉันใช้ Ubuntu 12.04
Hamed JML

2

ฉันไม่มี eth2 เพื่อตรวจสอบเรื่องนี้ แต่มันทำงานได้อย่างถูกต้องบน eth0 และฉันไม่เห็นเหตุผลว่าทำไม eth2 จึงน่าอัศจรรย์ ฉันคิดว่าคุณกำลังใช้ip addr show dev eth2เพราะifconfig eth2ดูเหมือนจะไม่แสดงที่อยู่เพิ่มเติมที่เพิ่มโดย ip

สิ่งหนึ่งที่ฉันสังเกตเห็นคือลำดับที่คุณสร้าง / ลบที่อยู่นั้นมีความสำคัญ ที่อยู่ที่สองและที่ตามมาที่เพิ่มภายในเครือข่ายเดียวกันจะถูกลบหากที่อยู่หลักถูกลบ พิจารณา ...

    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

หากคุณลบ 1.1.1.1 ดังนั้นที่อยู่ 1.2 และ 1.3 จะถูกลบด้วย หากคุณลบที่อยู่อื่น ๆ จะมีเพียงที่อยู่นั้นเท่านั้นที่จะถูกลบ


ดังนั้นฉันจะลบที่อยู่แรกโดยไม่ลบที่อยู่อื่นได้อย่างไร
Hamed JML


0

คำตอบของ @bvsชี้ว่าในทิศทางที่ถูกต้องของปัญหาและแก้ไขได้สำหรับฉัน นี่คือรายละเอียดบางอย่างเกี่ยวกับคำสั่งที่แม่นยำ สำหรับอินเทอร์เฟซเริ่มต้นจำนวนมากeth0ฉันกำลังใช้มันในคำสั่งต่อไปนี้ซึ่งจะต้องถูกแทนที่ด้วยeth2สำหรับคำถามดั้งเดิม

สำหรับการแก้ปัญหาชั่วคราว (จนกระทั่งรีบูต) ให้ใช้

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

สำหรับโซลูชันถาวรที่ยังคงมีอยู่หลังจากรีบูตเครื่องให้สร้างไฟล์/etc/sysctl.d/ip-promote.conf(หรือชื่อไฟล์อื่นที่ลงท้ายด้วย.conf) ด้วยเนื้อหาต่อไปนี้

# 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.