Bảng định tuyến được lưu trữ nội bộ trong nhân Linux ở đâu?


11

Khi tôi thực thi route -n, structthông tin được hiển thị lấy từ đâu chính xác (từ đó )?

Tôi đã thử thực thi strace route -nnhưng tôi không giúp tôi tìm đúng nơi lưu trữ.



Nó được lưu trữ trong bộ nhớ. Bạn đang tìm kiếm địa chỉ bộ nhớ tại?
Bandrami

@Bandrami Tôi muốn xem những gì structchịu trách nhiệm giữ thông tin.
cú pháp

Đối với bất kỳ ai đang tìm kiếm tệp trên đĩa, nó được xây dựng từ bất cứ thứ gì mà máy chủ DHCP đưa ra hoặc từ những gì có thể tìm thấy /etc/sysconfig/network-scripts/ifcfg-${DEV}trong các trường hợp đơn giản và / hoặc từ những gì có thể tìm thấy trong /etc/sysconfig/network-scripts/route-${DEV}các trường hợp phức tạp hơn (trường hợp Red Hat / CentOS 7). Các tập tin sau chứa đầu ra của ip -r. Xem Thêm tuyến tĩnh trên CentOS .
David Tonhofer

Câu trả lời:


16

Các routehoặc iptiện ích có được thông tin của họ từ một hệ thống tập tin giả gọi procfs. Nó thường được gắn dưới /proc. Có một tệp được gọi /proc/net/route, nơi bạn có thể thấy bảng định tuyến IP của kernel. catThay vào đó, bạn có thể in bảng định tuyến , nhưng tiện ích định tuyến định dạng con người đầu ra có thể đọc được, bởi vì các địa chỉ IP được lưu trữ trong hex.

Tập tin đó không chỉ là một tập tin bình thường. Nó luôn được tạo ra chính xác tại thời điểm khi mở nó với nỗ lực đọc, vì tất cả các tệp trong hệ thống tệp Proc.

Nếu bạn đang xen vào cách tập tin đó được viết, thì bạn cần xem các nguồn kernel: Hàm đó xuất ra bảng định tuyến. Bạn thấy ở dòng 2510 , tiêu đề của bảng định tuyến được in. Bảng định tuyến dường như chủ yếu nằm trong cấu trúc fib_infođược xác định trong tệp tiêu đề ip_fib.h, dòng 98 .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.