Что делает "scope" в ip route и почему необходимо настроить статический маршрут в Linux?

Если я хочу заменить стандартные правила маршрутизации dhcp статическими, я должен добавить правило ip route add scope link dev eth0, Или я получу ошибку: "У Nexthop неверный шлюз".

Вот мои вопросы:
Q1: Что означает "ссылка на область" в ip route?
Q2: Почему необходимо изменить правила dhcp на статические правила?

1 ответ

Решение

Эти маршруты показывают ядру Linux, в каких подсетях вы находитесь.

Эта информация не сохраняется в скрытом поле "Моя текущая подсеть" при добавлении IP-адреса; вместо этого он всегда преобразуется в маршрут 'scope link' без указания шлюза (также называемый "маршрут устройства" или "интерфейсный маршрут"), и всякий раз, когда ядру необходимо определить, доступен ли какой-либо адрес напрямую, он просто выполняет проверку таблицы маршрутизации.,

Обычно эти маршруты добавляются автоматически, как только вы настраиваете IP-адрес - например, работает ip addr add 192.168.1.5/24 назначает IP-адрес 192.168.1.5 и создает маршрут подсети для 192.168.1.0/24. Таким образом, нет необходимости добавлять эти маршруты при обычном использовании.

Но когда вы слепо "удаляете все маршруты", вы также в конечном итоге удаляете эти автоматически созданные маршруты, и проверки "этот адрес в моей подсети" ядра больше не работают. Вот почему вам приходится заново добавлять маршруты вручную.

(Ядро должно выполнить эту проверку во время ip route add потому что шлюзы маршрута (nexthops) должны быть напрямую доступны по тому же соединению L2 - они не могут быть позади другого шлюза. То есть шлюз должен быть в вашей подсети.

Области маршрута - это общий механизм для выражения этого ограничения: следующий маршрут нового маршрута должен быть доступен через существующий маршрут с меньшей областью действия. Другими словами, вы должны пройти через локальный хост (область ссылок), прежде чем сможете достичь удаленного хоста (глобальная область).)

Другие вопросы по тегам