Linux не отвечает на сообщения ARP-запросов, если запрашиваемый IP-адрес связан с другим (отключенным) интерфейсом

Как еще нет никаких ответов...

У меня нет легкого предложения (как переключатель iotop), но если это важно для Вас затем, можно записать модуль FUSE, который просто повторно монтирует файловые системы в другом месте (chroot, чтобы процесс был исследован), и считает чтение объема данных / записанным. Это должно быть довольно легкой адаптацией существующих модулей. Можно спросить сообщество FUSE, которое могло бы быть лучшим существующим решением начать с. Вероятно, даже их демонстрационный модуль сделает.

9
04.06.2015, 11:18
2 ответа

Для полноты, вот неловкое решение:

$ awk '{print;} /22/{system("cat file1");}' file2
11
22
aa
bb
cc
33
44
-121--81326-

Я бы поставил

* * * * * /sbin/reboot

в корневой crontab.

Пояснение: поскольку cron не запускается до тех пор, пока система не будет полностью запущена, вы не получите конфликтов между процедурами запуска и завершения работы.

-121--78960-

Таблица маршрутизации точно не игнорируется. Она отменяется таблицей маршрутизации с более высоким приоритетом.

Что происходит

Таблица маршрутизации, отображаемая при вводе ip route show , не является единственной таблицей маршрутизации, используемой ядром. По умолчанию существует три таблицы маршрутизации, поиск в которых выполняется в порядке, указанном командой ip rule :

# ip rule show
0:      from all lookup local
32766:  from all lookup main
32767:  from all lookup default

Наиболее знакомая вам таблица является основной , а таблица маршрутизации с наивысшим приоритетом - локальной . Эта таблица управляется ядром для поддержания трека локальных и широковещательных маршрутов: другими словами, локальная таблица сообщает ядру о том, как выполнять маршрутизацию по адресам собственных интерфейсов. Выглядит примерно так:

# ip route show table local
broadcast 127.0.0.0 dev lo  proto kernel  scope link  src 127.0.0.1
local 127.0.0.0/8 dev lo  proto kernel  scope host  src 127.0.0.1
local 127.0.0.1 dev lo  proto kernel  scope host  src 127.0.0.1
broadcast 127.255.255.255 dev lo  proto kernel  scope link  src 127.0.0.1
broadcast 192.168.1.0 dev eth0  proto kernel  scope link  src 192.168.1.2
local 192.168.1.1 dev tun0  proto kernel  scope host  src 192.168.1.1
local 192.168.1.2 dev eth0  proto kernel  scope host  src 192.168.1.2
broadcast 192.168.1.255 dev eth0  proto kernel  scope link  src 192.168.1.2

Проверьте, что строка ссылается на tun0 . Вот что вызывает ваши странные результаты от маршрут получить . Он говорит, что 192.168.1.1 является локальным адресом, что означает, что если мы хотим отправить ARP ответ на 192.168.1.1, это легко; мы отправляем его себе. Так как мы нашли маршрут в локальной таблице, мы прекращаем поиск маршрута и не пытаемся проверить основные или таблицы по умолчанию .

Почему несколько таблиц?

Как минимум, приятно иметь возможность вводить ip route и не видеть все «очевидные» маршруты, загромождающие дисплей (попробуйте ввести route print на компьютере с ОС Windows). Он также может служить некоторой минимальной защитой от неправильной конфигурации: даже если основная таблица маршрутизации перепуталась, ядро все равно умеет разговаривать с самим собой.

(Зачем в первую очередь сохранять местные маршруты? Таким образом, ядро может использовать тот же код поиска для локальных адресов, что и для всего остального. Это делает вещи проще внутри.)

Есть и другие интересные вещи, которые вы можете сделать с этой схемы с несколькими таблицами. В частности, можно добавить собственные таблицы и указать правила поиска. Это называется «политикой маршрутизацией», и если вы когда-либо хотели маршрутизировать пакет на основе его адреса источника , это как сделать в Linux.

При выполнении особо сложных или экспериментальных операций можно самостоятельно добавить или удалить локальные маршруты, указав таблицу local в команде ip route . Если вы не знаете, что делаете, вы, скорее всего, запутаете ядро. И конечно, ядро все равно продолжит добавлять и удалять свои собственные маршруты, поэтому нужно смотреть, чтобы ваше не перезаписали.

Наконец, если требуется просмотреть все таблицы маршрутизации одновременно:

# ip route show table all

Для получения дополнительной информации ознакомьтесь с ip-правилом (8) справочная страница или документы iproute2 . Для получения некоторых примеров действий можно также воспользоваться Advanced Routing and Traffic Control HOWTO .

15
27.01.2020, 20:05

Вероятно, проблема в конфигурации фильтрации обратного пути . RFC3704 - раздел 2.4

В распределениях Предприятия Linux (RHEL, CentOS, Научный Linux, и др.) вероятный лучший способ решить это состоит в том, чтобы изменить /etc/sysctl.conf с rp_filter = 2

https://access.redhat.com/solutions/53031

1
27.01.2020, 20:05

Теги

Похожие вопросы