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

0

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

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

ip route add 1.2.3.4 via 5.6.7.8

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

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

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

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

Ответы:

1

Добро пожаловать в чудеса 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 )

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