Systemd удаляет (хост) маршруты при приостановке

283
allo

Система удаляет пользовательские маршруты после приостановки и возобновления.

Когда я добавляю маршрут

ip route add 1.2.3.4 via 5.6.7.8 

Он удаляется после приостановки и возобновления. Это раздражает, потому что, например, он удаляет маршруты хостов из openvpn, что впоследствии делает vpn-соединение непригодным для использования.

Я подтвердил ошибку в Debian и Ubuntu, и в Debian я подтвердил, что это не происходит с sysvinit.

Что мне нужно настроить, чтобы systemd вообще не касался таблицы маршрутизации?
У меня есть несколько сценариев, которые выполняют небольшую настройку сети и хотели бы, чтобы никакая другая часть системы не изменяла конфигурацию.

0
Если вы подтвердили, что это _bug_, зачем даже предполагать, что его можно настроить? Большинство ошибок нуждаются в исправлении ошибок. grawity 6 лет назад 0
Прежде чем подтвердить ошибку, я должен знать, не является ли это просто проблемой конфигурации. Я бы не поверил, что никто не заметил, что systemd в конфигурации по умолчанию удаляет маршруты, так что, вероятно, это не ошибка, а то, что вы можете настроить. По крайней мере, я на это надеюсь. allo 6 лет назад 0

1 ответ на вопрос

1
Ljm Dullaart

Добро пожаловать в чудеса systemd. Насколько я знаю, вы не можете заставить systemd игнорировать маршрутизацию. Насколько я знаю, он делает это явно (т.е. функция, а не ошибка). Тем не менее, вы можете запускать сценарии во время сна / возобновления. Смотрите man systemd-suspend.serviceподробности

По сути, вы вставляете скрипт /usr/lib/systemd/system-sleep/, который выполняет следующее:

#!/bin/bash if [ "$1" = "post" ] ; then ip route add 1.2.3.4 via 5.6.7.8 # or call the script that already creates the routing table fi 

Примечание: каталог может быть /lib/systemd/system-sleep/(без /usr)

Вы предполагаете, что все функции systemd находятся в одной программе. Менеджер сервисов не касается сетей; менеджер сети _systemd-networkd_ делает это - то есть, если OP выбрал его включение и использование. grawity 6 лет назад 0
Нет, я ссылался на systemd как на весь пакет, а не на единственный экземпляр демона. Ljm Dullaart 6 лет назад 0
Это работает как обходной путь, но мне нужно поставить `` sleep`` перед командой vpn restart. `` sleep 3`` работает для меня, но, вероятно, это зависит от системы и от того, насколько медленная или быстрая systemd перенастраивает связанные с сетью вещи после возобновления работы. allo 6 лет назад 0