Де таблиця маршрутизації зберігається всередині ядра Linux?


12

Коли я виконую route -n, звідки саме (з яких struct) відображається інформація, що виводиться?

Я спробував виконати, strace route -nале мені не допомогли знайти потрібне місце, де воно зберігається.



Це зберігається в пам'яті. Ви шукаєте адресу пам'яті, на якій знаходиться?
Бандрамі

@Bandrami Я хотів би побачити, що structвідповідає за зберігання інформації.
синтагма

Для тих, хто шукає файл на диску, він або побудований з того, що видає сервер DHCP, або з того, що можна знайти /etc/sysconfig/network-scripts/ifcfg-${DEV}в простих випадках та / або з того, що можна знайти /etc/sysconfig/network-scripts/route-${DEV}в більш складних випадках (випадок Red Hat / CentOS 7). Останній файл містить вихід ip -r. Див. Розділ Додавання статичного маршруту на CentOS .
Девід Тонхофер

Відповіді:


17

routeАбо ipутиліти отримують інформацію з псевдо файлової системи називається procfs. Зазвичай він монтується під /proc. Існує файл, який називається /proc/net/route, де ви можете побачити таблицю маршрутизації IP ядра. catЗамість цього ви можете роздрукувати таблицю маршрутизації , але утиліта маршруту формує вихідний текст, прочитаний людиною, оскільки адреси IP зберігаються у шістнадцятковій формі.

Цей файл - це не просто звичайний файл. Він завжди генерується саме в той момент, коли його відкривають із спробою прочитати, як усі файли файлової системи proc.

Якщо ви зацікавлені, як цей файл записаний, то вам потрібно подивитися джерела ядра: Ця функція виводить таблицю маршрутизації. Ви бачите в рядку 2510 друкується заголовок таблиці маршрутизації. Таблиця маршрутизації, як правило, знаходиться в структурі fib_info, визначеній у файлі заголовка ip_fib.h, рядок 98 .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.