Linuxカーネルの内部にルーティングテーブルはどこに保存されていますか?


11

を実行するroute -nと、どこから(どのstructs から)表示された情報が正確に取得されますか?

実行してみましたstrace route -nが、保存されている適切な場所を見つけるのに役立ちませんでした。



それはメモリに保存されます。それが存在するメモリアドレスを探していますか?
Bandrami、2015年

@Bandrami私はstruct情報を保持するために責任があるものを見たいのですが。
syntagma

ディスク上でファイルを探している人にとって、それはDHCPサーバーが提供するものから、または/etc/sysconfig/network-scripts/ifcfg-${DEV}単純なケースで見つかるものから、および/または/etc/sysconfig/network-scripts/route-${DEV}より複雑なケースで見つかるものから作成されます(Red Hat / CentOSのケース) 7)。後者のファイルには、の出力が含まれていますip -rCentOSに静的ルート追加するを参照してください
デビッドトンホーファー2018年

回答:


16

routeまたはipユーティリティと呼ばれる疑似ファイルシステムからその情報を取得しますprocfs。通常はの下にマウントされ/procます。と呼ばれるファイルがあり/proc/net/route、カーネルのIPルーティングテーブルを確認できます。cat代わりにを使用してルーティングテーブルを印刷できますが、IPアドレスは16進数で格納されるため、ルートユーティリティは出力を人間が読める形式にします。

そのファイルは通常のファイルではありません。これは、procファイルシステム内のすべてのファイルとして、開こうとしたときに読み取ろうとしたときに常に生成されます。

私はあなたがそのファイルがどのように書かれるかについて興味があるなら、あなたはカーネルソースを見る必要があります:その関数はルーティングテーブルを出力します。2510行目を見ると、ルーティングテーブルのヘッダーが出力されています。ルーティングテーブルfib_infoは、ヘッダーファイルip_fib.hの98行目で定義されている構造体にほとんどあるようです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.