1

Я могу понять вывод strace route -n , но действительно ли route считывает какие-либо файлы в /proc чтобы получить таблицу маршрутизации? Кроме того, если маршруты и IP-адреса хранятся в каталоге /proc , почему strace не показывает доступ к этим файлам?

root@xxxx:/etc/postfix# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.21.58.0     0.0.0.0         255.255.254.0   U     0      0        0 eth0
0.0.0.0         10.21.58.1     0.0.0.0         UG    100    0        0 eth0

Изменить, после дополнительных исследований:

Кажется , что route делает чтение файла в /proc в частности, /proc/net/route Как же тогда появилась информация о маршрутизации?

3 ответа3

4

Содержимое файлов в каталоге /proc или в любом другом каталоге, в котором смонтирована файловая система proc , генерируется на лету. Различные системные вызовы, связанные с файловой системой, направляются на уровень VFS в ядре Linux в код процесса, который получает информацию из структур данных в памяти внутри пространства памяти ядра, форматирует их, маскирует их как содержимое этих файлов.

Вот файл, отвечающий за распечатку информации о маршрутизации для IPv4 в ядре.

2

Да, он использует /proc , смотрите эту часть strace route -n :

open("/proc/net/route", O_RDONLY)       = 3

он читает всю информацию оттуда. Источником информации является само ядро. Ядро предлагает информацию о маршрутизации через файлы в procfs .

Файлы в /proc обычно создаются и заполняются (информацией) самим ядром. Через этот интерфейс ядро может безопасно предоставлять внутреннюю информацию для пользовательского пространства. В большинстве случаев это даже для человека.

0

Начальная таблица маршрутизации загружается из конфигурационных файлов во время загрузки. Позже вы можете вручную добавить записи с помощью команды route . Кроме того, routed или gated прослушивает в сети информацию о маршрутизации и динамически обновляет таблицу маршрутизации.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .