เหตุใดจึงลบที่อยู่ IP ที่ไม่ได้ใช้ออกจากส่วนต่อประสานที่ไม่เกี่ยวข้องกับที่อยู่นั้น


35

เมื่อวานนี้ฉันทำการติดตั้งเซิร์ฟเวอร์ (ทางกายภาพ) ใหม่อีกครั้งอย่างรวดเร็วในดาต้าเซ็นเตอร์และตั้งแต่ฉันสั้นตรงเวลาและไม่สามารถเข้าถึงฐานข้อมูลของเราได้อย่างง่ายดายฉันเพิ่งกำหนด IP ที่ฉันรู้ว่ามีอยู่แล้ว ที่อยู่ที่ถูกต้องและดำเนินการจัดเตรียมจากสถานที่ที่อบอุ่น

วันนี้ฉันเข้าสู่เซิร์ฟเวอร์ (ที่ 172.16.130.10/22) และทำสิ่งต่อไปนี้:

ip addr add 172.16.128.67/22 dev eth0

จากเทอร์มินัลในเวิร์กสเตชันท้องถิ่นของฉันฉันตรวจสอบว่ามันตอบสนองต่อการ ping ที่อยู่ใหม่และเข้าสู่ระบบผ่านมัน:

$ ping 172.16.128.67
PING 172.16.128.67 (172.16.128.67) 56(84) bytes of data.
64 bytes from 172.16.128.67: icmp_req=2 ttl=62 time=3.61 ms
64 bytes from 172.16.128.67: icmp_req=3 ttl=62 time=4.87 ms
^C
$ ssh 172.16.128.67

จนถึงตอนนี้ฉันก็เชื่อมต่อผ่านที่อยู่ IP ใหม่และไม่จำเป็นอีกต่อไป ฉันไปข้างหน้าและลบมันออก:

ip addr del 172.16.130.10/22 dev eth0

แต่ทันทีที่ฉันเข้าสู่Enterเซสชัน SSH ของฉันเย็นตัวลงและฉันไม่สามารถเชื่อมต่อได้อีกต่อไป ฉันต้องขอโอเปอเรเตอร์ในสถานที่เพื่อรีบู๊ตเซิร์ฟเวอร์ให้ฉัน

ฉันไปผิดที่ไหน ทำไมการลบที่อยู่นั้นถึงทำให้การเชื่อมต่อของฉันไม่ทำงาน


2
นอกเหนือจากคำตอบที่ยอดเยี่ยมของ Mathews: ในระบบ Unix (และ Unix-like) การเปลี่ยนแปลงใด ๆ กับ IP-address (es) ที่ถูกผูกไว้จะตัดการเชื่อมต่อเซสชันที่เปิดอยู่ทั้งหมดไปยังอินเทอร์เฟซสั้น ๆ ดังนั้นจะทำให้คุณออกจากเซสชัน SSH ของคุณ แต่คุณสามารถเชื่อมต่อใหม่ได้ทันทีในกรณีนั้น
Tonny

ฉันเชื่อว่าปัญหานี้มีอยู่เฉพาะกับ IPv4 ฉันไม่คิดว่ามันจะเกิดขึ้นถ้าคุณใช้ IPv6
kasperd

คำตอบ:


53

ใน linux ที่อยู่ IP มีแนวคิดของที่อยู่ 'หลัก' และ 'รอง' โดยทั่วไปหลักจะเป็นที่อยู่แรกที่คุณเพิ่มลงในระบบ การลบที่อยู่หลักมีการดำเนินการโดยนัยของการล้างรายการที่อยู่รองทั้งหมดด้วย

คุณสามารถหลีกเลี่ยงพฤติกรรมนี้ได้โดยตั้งค่า sysctl net.ipv4.conf.all.promote_secondariesเป็น 1 ดังนี้:

sysctl -w net.ipv4.conf.all.promote_secondaries=1

สิ่งนี้จะเปลี่ยนลักษณะการทำงานเช่นเมื่อมีการลบ IP หลักจะไม่ล้างที่อยู่ที่เหลือและจะส่งเสริมที่อยู่ IP ใหม่เป็นหลัก


6
ขอบคุณ! ฉันเพิ่งเจอสิ่งนี้เช่นกัน:An IP address becomes secondary if another address within the same prefix (network) already exists. The first address within the prefix is primary and is the tag address for the group of all the secondary addresses. When the primary address is deleted all of the secondaries are purged too.
GnP
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.