Ketika saya mengeksekusi route -n
, dari mana tepatnya (dari mana struct
s) informasi yang ditampilkan diambil?
Saya mencoba mengeksekusi strace route -n
tetapi saya tidak membantu saya menemukan tempat yang tepat itu disimpan.
linux
networking
kernel
linux-kernel
route
syntagma
sumber
sumber
struct
yang bertanggung jawab untuk menyimpan informasi./etc/sysconfig/network-scripts/ifcfg-${DEV}
kasus sederhana dan / atau dari apa yang dapat ditemukan dalam/etc/sysconfig/network-scripts/route-${DEV}
kasus yang lebih berbelit-belit (kasus Red Hat / CentOS 7). File terakhir berisi output dariip -r
. Lihat Menambahkan Rute Statis pada CentOS .Jawaban:
The
route
atauip
utilitas mendapatkan informasi dari filesystem semu yang disebutprocfs
. Biasanya dipasang di bawah/proc
. Ada sebuah file bernama/proc/net/route
, di mana Anda dapat melihat tabel routing IP kernel. Anda dapat mencetak tabel routing dengancat
gantinya, tetapi utilitas rute memformat output yang dapat dibaca manusia, karena alamat IP disimpan dalam hex.File itu bukan hanya file biasa. Itu selalu dihasilkan pada saat ketika membukanya dengan upaya untuk membaca, karena semua file dalam sistem file proc.
Jika Anda ditanya bagaimana file itu ditulis, maka Anda perlu melihat sumber kernel: Fungsi itu menampilkan tabel rute. Anda lihat di baris 2510 , header dari tabel routing dicetak. Tabel routing tampaknya sebagian besar di struct
fib_info
yang didefinisikan dalam file header ip_fib.h, baris 98 .sumber