ตารางเส้นทางจะถูกเก็บไว้ภายในในเคอร์เนล Linux ที่ไหน?


12

เมื่อผมดำเนินการroute -nจากที่ว่า (จากการที่structs) เป็นข้อมูลที่แสดงดึง?

ฉันพยายามดำเนินการstrace route -nแต่ฉันไม่ได้ช่วยฉันหาสถานที่ที่เหมาะสมซึ่งเก็บไว้



มันเก็บไว้ในหน่วยความจำ คุณกำลังมองหาที่อยู่หน่วยความจำมันอยู่ที่?
Bandrami

@Bandrami ฉันต้องการดูสิ่งที่structรับผิดชอบในการเก็บข้อมูล
syntagma

สำหรับใครก็ตามที่กำลังมองหาไฟล์บนดิสก์มันก็สร้างจากสิ่งที่เซิร์ฟเวอร์ DHCP มอบให้หรือจากสิ่งที่สามารถพบได้ใน/etc/sysconfig/network-scripts/ifcfg-${DEV}กรณีง่าย ๆ และ / หรือจากสิ่งที่สามารถพบได้ใน/etc/sysconfig/network-scripts/route-${DEV}กรณีที่ซับซ้อนมากขึ้น (กรณีของ Red Hat / CentOS 7) ip -rแฟ้มหลังมีการส่งออกของ ดูเพิ่มเส้นทางแบบคงที่บน CentOS
David Tonhofer

คำตอบ:


17

routeหรือยูทิลิตี้ได้รับข้อมูลของพวกเขาจากระบบแฟ้มหลอกที่เรียกว่าip มันจะติดตั้งอยู่ตามปกติprocfs /procมีไฟล์ชื่อ/proc/net/routeซึ่งคุณสามารถดูตารางการเราต์เคอร์เนลได้ คุณสามารถพิมพ์ตารางเส้นทางด้วยcatแทนได้ แต่ยูทิลิตี้เส้นทางจัดรูปแบบเอาต์พุตที่มนุษย์สามารถอ่านได้เนื่องจากที่อยู่ IP ถูกเก็บไว้ในรูปแบบเลขฐานสิบหก

ไฟล์นั้นไม่ใช่แค่ไฟล์ปกติ มันถูกสร้างขึ้นเสมอในขณะที่เมื่อเปิดมันด้วยความพยายามที่จะอ่านเป็นไฟล์ทั้งหมดในระบบไฟล์ proc

ฉันคุณกำลัง interessted วิธีการเขียนไฟล์นั้นแล้วคุณต้องดูที่แหล่งเคอร์เนล: ฟังก์ชั่นที่ออกตารางเส้นทาง คุณเห็นที่บรรทัด 2510ส่วนหัวของตารางเส้นทางถูกพิมพ์ ตารางเส้นทางที่ดูเหมือนจะเป็นส่วนใหญ่ในที่ struct fib_infoที่กำหนดไว้ในแฟ้มหัวip_fib.h สาย 98

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