ถ้าฉันเพิ่มสอง 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 addr showผลลัพธ์
ถ้าฉันเพิ่มสอง 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 addr showผลลัพธ์
คำตอบ:
การลบที่อยู่ 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
สิ่งนี้เกิดขึ้นเนื่องจากคุณใช้ / 24 เครือข่ายมาสก์เมื่อลบ มันใช้กับที่อยู่ที่คุณป้อน ลองทำสิ่งต่อไปนี้:
ip addr del 1.1.1.2/32 dev eth2
หน้ากาก / 32 กำหนดหนึ่งโฮสต์อย่างแน่นอน
ip addr del 1.1.1.2 dev eth2
ฉันไม่มี 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 จะถูกลบด้วย หากคุณลบที่อยู่อื่น ๆ จะมีเพียงที่อยู่นั้นเท่านั้นที่จะถูกลบ
ฉันจะลองต่อไปนี้:
ip addr del 1.1.1.2 dev eth2
คำตอบของ @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