ความแตกต่างระหว่างคำสั่ง 'ifconfig' และ 'ip'


19

ฉันอ่านบทความ / บทช่วยสอนเกี่ยวกับคำสั่ง 'ifconfig' ส่วนใหญ่ประกอบด้วยคำสั่งทั่วไป -

"ifconfig เลิกใช้แล้วโดยคำสั่ง ip"

และแนะนำให้เรียนรู้คำสั่ง ip แต่ไม่มีใครอธิบายว่าคำสั่ง 'ip' มีประสิทธิภาพมากกว่า 'ifconfig' อย่างไร

ความแตกต่างระหว่างพวกเขาทั้งสองคืออะไร?



คำตอบ:


21

ifconfigมาจากnet-toolsซึ่งไม่สามารถติดตามเครือข่าย Linux ได้อย่างสมบูรณ์เป็นเวลานาน นอกจากนี้ยังใช้ioctlสำหรับการกำหนดค่าเครือข่ายซึ่งเป็นวิธีที่น่าเกลียดและมีประสิทธิภาพน้อยกว่าในการโต้ตอบกับเคอร์เนล

การเปลี่ยนแปลงจำนวนมากในรหัสเครือข่าย Linux และคุณลักษณะใหม่มากมายไม่สามารถเข้าถึงได้โดยใช้net-toolsการกำหนดเส้นทางแบบหลายเส้นทางการกำหนดนโยบาย (ดูที่ RPDB) routeช่วยให้คุณทำสิ่งที่โง่เช่นเพิ่มเส้นทางหลายเส้นทางไปยังปลายทางเดียวกันด้วยตัวชี้วัดเดียวกัน

นอกจากนี้:

  • ifconfig ไม่ได้รายงานที่อยู่ฮาร์ดแวร์ที่เหมาะสมสำหรับอุปกรณ์บางอย่าง
  • คุณไม่สามารถกำหนดค่าipip, sit, gre, l2tpฯลฯ ในเคอร์เนลคงอุโมงค์
  • คุณไม่สามารถสร้างtunหรือtapอุปกรณ์
  • วิธีการเพิ่มที่อยู่หลายรายการไปยังอินเทอร์เฟซที่กำหนดมีความหมายไม่ดี
  • คุณไม่สามารถกำหนดค่าระบบควบคุมปริมาณการใช้ Linux ได้net-toolsเช่นกัน

ดูเพิ่มเติมครับifconfig

แก้ไข : ลบการยืนยันเกี่ยวกับnet-toolsการพัฒนาหยุดที่โดยตอนนี้ฉันลืมที่ฉันได้รับสำหรับโพสต์นี้ net-tools'ได้รับการทำงานตั้งแต่iproute2เปิดตัวแม้ว่าส่วนใหญ่จะแก้ไขข้อผิดพลาดและการปรับปรุงเล็กน้อยและคุณสมบัติเช่นสากล


NET-3 ifconfigสุทธิเครื่องมือไม่ได้เป็นเพียง มีสิ่งที่แตกต่างใน GNU inetutils เช่น และนั่นไม่ใช่ทั้งหมด unix.stackexchange.com/a/504084/5132
JdeBP

7

ifconfigเป็นคำสั่งดั้งเดิมที่แสดงข้อมูลเกี่ยวกับอินเทอร์เฟซเครือข่ายและเปลี่ยนการตั้งค่าบางอย่าง โดยเฉพาะอย่างยิ่งมันสามารถนำอินเตอร์เฟสขึ้นและลง มันมีอยู่ในรูปแบบยูนิกซ์ส่วนใหญ่

บน Linux ifconfigคำสั่งไม่ได้วิวัฒนาการมาเป็นเวลานาน มันยังดีอย่างสมบูรณ์แบบสำหรับสิ่งที่มันทำ หากคุณกำลังใช้ifconfigงานบางอย่างไม่มีเหตุผลที่จะหยุด

Linux ยังจัดเตรียมipคำสั่งจากชุดเครื่องมือiproute2 ipคำสั่งรวมคำสั่งคลาสสิกหลายและอื่น ๆ รวมทั้งifconfig, และroute สามารถทำมากขึ้นกว่า ในทางตรงกันข้ามมันไม่ได้มีอยู่เสมอโดยเฉพาะอย่างยิ่งในระบบฝังตัวarpipifconfigip

การแยกประเภทifconfigเอาท์พุทของครับ การแยกประเภทipเอาท์พุทของครับ ไม่มีผู้ชนะ


ฉันคิดเสมอว่าการแยกวิเคราะห์ipผลลัพธ์จะค่อนข้างง่ายและแน่นอนว่าง่ายกว่าifconfigมาก ฉันชอบที่ในหลาย ๆ กรณีเอาต์พุตของipคำสั่งสามารถใช้เป็นอินพุตไปยังipคำสั่งอื่นที่มีการแก้ไขเพียงเล็กน้อยหรือไม่มีเลย (ตัวอย่างเช่นทุกบรรทัดip route showสามารถใช้เป็นอาร์กิวเมนต์ได้ip route add)
Patrick

1
@ แพทริกแยกวิเคราะห์ip routeและip ruleเอาท์พุทค่อนข้างชัดเจนและง่ายต่อการแยกวิเคราะห์ แต่ip linkหรือip addrเป็นความเจ็บปวด ผมต้องการคนที่จะส่งแพทช์หรือบางสิ่งบางอย่างที่จะทำให้การพิมพ์ออกงบที่แน่นอนอาจจะมีสวิทช์ที่คุณจะใช้การตั้งค่าการกำหนดค่าปัจจุบันเช่นคุณได้รับด้วยip addr ip route show
Zoredache

5

เพียงแค่เพิ่มบิตไปยังคำตอบโดย pilona รอบปี 2005 กลไกใหม่สำหรับการควบคุมเครือข่าย stack ได้รับการแนะนำ - ซ็อกเก็ต netlink

เมื่อต้องการกำหนดค่าอินเทอร์เฟซเครือข่ายiproute2ใช้กลไกซ็อกเก็ต netlink ฟูลดูเพล็กซ์ในขณะที่ifconfigอาศัยioctlสายระบบ นี่ 2 เอกสารหลัก ๆ เป็นแรงจูงใจที่อยู่เบื้องหลัง netlinkและการใช้งานของ rtnetlink

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