Рейтинг:1

Интерфейс по ссылке

флаг id

Машина с дебианом 10. На ней 3 интерфейса с разными айпи. Один из них нужен в редких случаях, у него статический маршрут к сети управления (остальные маршруты работают по ospf через другой интерфейс).
Проблема в том, что если выдернуть кабель из сетевой карты, интерфейс все равно встанет, а маршрут останется. Нельзя ли это автоматизировать? А по этому вопросу ничего не нашел, может я что-то не так делаю?
К тому же, если я использую auto или allow-hotplug, то интерфейс включается после перезагрузки даже без ссылки, так что при необходимости приходится вручную поднимать.

Рейтинг:1
флаг cl
A.B

Инструменты высокого уровня, такие как NetworkManager, обычно удаляют адрес и маршрут в ссылках «linkdown» (т. е. с флагом NO-CARRIER, отображаемым на интерфейсе). Таким образом, если интерфейс управляется таким инструментом, можно ожидать, что его маршрут будет появляться и исчезать при подключении и отключении.

Я понимаю, что использование NetworkManager может быть слишком навязчивым с протоколом динамической маршрутизации, используемым в то же время, и поэтому может быть не лучшей идеей.

Но на самом деле стек маршрутизации ядра уже предоставляет такую ​​функцию без необходимости изменять какой-либо адрес или маршрут: ignore_routes_with_linkdown.

Как и несколько других записей, эта появилась в ядре 4.2 (поэтому доступна в ядре 4.19 Debian 10) и была показано затем в kernelnewbies.org когда он появился, был задокументировано только с ядра 5.11:

ignore_routes_with_linkdown — логическое значение
Игнорировать маршруты, канал которых не работает, при выполнении поиска FIB.

Итак, если интерфейс называется мгмт0 и маршрут, который он предоставляет, следует использовать только тогда, когда на нем обнаружен перевозчик, нужно просто сделать:

sysctl -w net.ipv4.conf.mgmt0.ignore_routes_with_linkdown=1

или вставьте это /etc/sysctl.conf.

Теперь, когда этот интерфейс, все еще поддерживаемый административно, отключен, запись маршрута отображается обратно IP-маршрут показал бы флаги мертвая ссылка вместо единого флага связь чтобы сообщить пользователю, что действительно этот маршрут в настоящее время игнорируется во время поиска FIB.

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


Полный пример:

ip link add name vethtest1 up type veth имя однорангового узла vethtest1peer
ip link add name vethtest2 up type veth имя пира vethtest2peer
ip link set dev vethtest2peer up
IP-адрес добавить 192.0.2.2/25 dev vethtest1
IP-адрес добавить 192.0.2.3/24 dev vethtest2

Установка адресов устанавливает автоматические маршруты ядра LAN. vethtest1 чей одноранговый интерфейс не был поднят, будет иметь статус NO-CARRIER, а его маршруты получат связь флаг.

# ip route show to root 192.0.2.0/24
192.0.2.0/25 dev vethtest1 ссылка на область ядра proto src 192.0.2.2 linkdown 
192.0.2.0/24 dev vethtest2 ссылка на область ядра proto src 192.0.2.3 

Маршрут до 192.0.2.100 будет использовать vethtest1 так как он получил более узкий маршрут (несмотря на наличие связь флаг).

# ip маршрут получить 192.0.2.100
192.0.2.100 dev vethtest1 src 192.0.2.2 uid 0 
    тайник 

Затем с новой настройкой:

sysctl -w net.ipv4.conf.vethtest1.ignore_routes_with_linkdown=1

приходит новое поведение:

# ip route show to root 192.0.2.0/24
192.0.2.0/25 dev vethtest1 ссылка на область ядра proto src 192.0.2.2 мертвая ссылка вниз 
192.0.2.0/24 dev vethtest2 ссылка на область ядра proto src 192.0.2.3 
# ip -4 netconf show dev vethtest1
inet vethtest1 переадресация вкл. rp_filter выкл. mc_forwarding выкл. proxy_neigh выкл. ignore_routes_with_linkdown вкл. 
# ip маршрут получить 192.0.2.100
192.0.2.100 dev vethtest2 src 192.0.2.3 uid 0 
    тайник 

Теперь, если интерфейс получает носитель (здесь моделируется запуск его однорангового интерфейса):

ip link set dev vethtest1peer up

маршрут восстанавливается через него:

# ip route show to root 192.0.2.0/24
192.0.2.0/25 dev vethtest1 ссылка на область ядра proto src 192.0.2.2 
192.0.2.0/24 dev vethtest2 ссылка на область ядра proto src 192.0.2.3 
# ip маршрут получить 192.0.2.100
192.0.2.100 dev vethtest1 источник 192.0.2.2 uid 0 
    тайник 
Mystic avatar
флаг id
Ты потрясающая! Большое спасибо за исчерпывающую информацию!! И всего вам наилучшего. Я проверю это завтра.

Ответить или комментировать

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