LINUX.ORG.RU
ФорумAdmin

Старт сервиса после получения ip (systemd)

 , ,


2

2

Всем привет! Есть программа которая биндитится к ip адресу vpn (openvpn) сети. При перезагрузке происходит ситуация, когда сервис стартует до момента настройки tun интерфейса и как следствие возникает крит о том что не возможно создать сервер на заданном ip. Прописывание After openvpn не помогает, потому что последнему требуется время на создание и настройку интерфейса, а systemd считает что сервис успешно запустился еще за долго до этих действий. Вопрос - как без костыля в виде промежуточного скрипта запустить мой сервис после получения ip на tun?

Обязательно через systemd? Запускать приложение через up в конфиге openvpn не вариант?

А вообще по идее должно помочь

BindsTo=sys-subsystem-net-devices-ИНТЕРФЕЙС.device
After=sys-subsystem-net-devices-ИНТЕРФЕЙС.device
micronekodesu ★★ ()
Последнее исправление: micronekodesu (всего исправлений: 1)

Как вариант использовать target network-online и соответствующий системе управления сетью юнит *-wait-online (systemd-networkd-wait-online.service, ifupdown-wait-online.service и прочие).

Cast intelfx

Radjah ★★★★★ ()
Ответ на: комментарий от Radjah

Во-первых, плюсую @BOOBLIK.

Во-вторых, network-online.target не особо поможет, потому что тут ТСу нужен не просто выход в сеть через любой интерфейс, а адрес на конкретном интерфейсе. Но можно сделать похожим образом: можно взять модуль systemd, который отвечает за ожидание поднятия сети, и запустить его вручную, передав имя VPN-интерфейса.

ТС, имя интерфейса фиксированное? Если да, то возьми /usr/lib/systemd/systemd-networkd-wait-online и запихни его в ExecStartPre=:

[Service]
ExecStartPre=+/usr/lib/systemd/systemd-networkd-wait-online --interface=tunX
intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

Только ради интереса.
Вопрос знатоку.

systemd-networkd-wait-online

Оно работает на этапе появления интерфейса или после получения адреса на интерфейсе?

anc ★★★★★ ()
Ответ на: комментарий от anc

Почему бы не почитать ман?

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

intelfx ★★★★★ ()
Ответ на: комментарий от anc

Нет, неправильно. configured — это setup status, а там нужно указывать operational status (по умолчанию подразумевается degraded, aka есть хотя бы один адрес, возможно линк-локальный).

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от anc

Идиотизм. А если openvpn вообще не поднялся или сломался, то в каком логе ты увидишь ошибку запуска приложения? Ни в каком. А если вдруг конфигурация сети поменяется и OpenVPN будет заменён на что-то ещё, кто вспомнит, что нужно пойти в конфиг OpenVPN и вытащить оттуда побочные эффекты? Никто.

Костыли, говно и палки. И эти люди ещё что-то говорят про стабильность, наблюдаемость, простоту администрирования.

systemd же тебе явно напишет «мы пытались сделать X, ждали наступления Y, не дождались, вот вам ошибка в лог».

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 3)
Ответ на: комментарий от intelfx

Идиотизм.

Написан вами.

А если openvpn вообще не поднялся или сломался

Значит нам и приложение не надо запускать. Л-Логика.

А если вдруг конфигурация сети поменяется и OpenVPN будет заменён на что-то ещё, кто вспомнит, что нужно пойти в конфиг OpenVPN и вытащить оттуда побочные эффекты? Никто.

Очень смешно. Этот «кто-то» так же не вспомнит и о поправке сервиса. И копаться ему придется так же долго.

Костыли, говно и палки. И эти люди ещё что-то говорят про стабильность, наблюдаемость, простоту администрирования.

Теже /etc/ppp/ip-up/ip-down чего-то костылями не называют. А тут сразу костыли. Почему эти скрипты до сих пор не являются сервисами systemd ? Даже странно, не правда ли. «А что, а вдруг мне понадобиться l2tp на что-то другое менять? Кто-то другой не вспомнит что нужно посмотреть старые конфиги»

anc ★★★★★ ()
Ответ на: комментарий от anc

Написан вами.

Отнюдь.

Значит нам и приложение не надо запускать

Сервер работает ради OpenVPN или ради приложения? Ради приложения. А в логе про приложение ни слова.

Очень смешно. Этот «кто-то» так же не вспомнит и о поправке сервиса

Он посмотрит в лог и увидит, что конкретно помешало запуску сервиса.

Теже /etc/ppp/ip-up/ip-down чего-то костылями не называют

Кто-то не называет. А я вполне себе называю, это лютейшие костыли.

Почему эти скрипты до сих пор не являются сервисами systemd ?

Потому что PPP — мёртвая технология.

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 5)
Ответ на: комментарий от intelfx

Сервер работает ради OpenVPN или ради приложения? Ради приложения. А в логе написано только про какой-то OpenVPN, а про приложение не написано.

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

Потому что PPP — мёртвая технология.

Эм мёртвая? А какая живая тогда по вашему мнению? Просто уже интересно стало.

anc ★★★★★ ()
Ответ на: комментарий от pekmop1024

Сейчас даже IPSec вне соединений точка-точка выкинут отовсюду

Отовсюду - это откуда?

в пользу вариаций SSL VPN (AnyConnect, OpenVPN, SSTP, etc.).

В голос! Песок плохая замена овсу. IPSec ядрючий и многопоточный использующий SSL конечно легаси по сравнению с однопоточным юзерспэйсным ovpn. Ну не смешите мои тапочки.

anc ★★★★★ ()
Ответ на: комментарий от anc

Отовсюду - это откуда?

Отовсюду - это отовсюду. Все road warrior’ы нынче исключительно на SSL VPN сидят, все корпоративные VPN для подключения удаленщиков - тоже.

В голос! Песок плохая замена овсу.

IPSec остался там, где ему место - роутеры, соединения точка-точка. У road warrior’ов ему делать нечего, одни проблемы с пробитием NAT’ов.

pekmop1024 ★★★★★ ()
Ответ на: комментарий от pekmop1024

Вы прочитали что я написал?

на SSL VPN сидят

ipsec не умеет в ssl ? Рили?

одни проблемы с пробитием NAT’ов.

Из криокамеры? В том же strongswan даавно уже NAT-T выпилить можно только если вручную из кода выпилить и пересобирать.

все корпоративные VPN для подключения удаленщиков - тоже

Ну вот, крупная компания (не ИТ), этой зимой (до пандемии) устроила подключение ipsec+l2tp. И что вы хотите мне сказать за это?

anc ★★★★★ ()
Ответ на: комментарий от anc

Ну то есть по другим аргументам вы слились.

Нет, просто не вижу смысла объяснять любителю обмазываться легаси, чем ему это грозит. Естественный отбор сам сработает.

pekmop1024 ★★★★★ ()
Ответ на: комментарий от anc

Сработает чем? ovpn как полноценная замена ipsec ?

Ты сейчас зачем пытаешься натянуть сову на глобус? Да, для road warrior’ов тот же AnyConnect, да и OpenVPN тоже - лучшее решение, чем построенный на говне и палках, часто не совместимый между своими реализациями IPSec. Ему не место на клиентских машинах, это забивание гвоздей микроскопом. Равно как не место упомянутому выше OpenVPN на роутерах в качестве туннелей точка-точка.

pekmop1024 ★★★★★ ()
Последнее исправление: pekmop1024 (всего исправлений: 1)
Ответ на: комментарий от pekmop1024

чем построенный на говне и палках, часто не совместимый между своими реализациями IPSec.

Ну начнем с того что это не на «говне и палках» а вполне себе рабочее решение. Несовместимое бывает, на уровне реализаций, но не протокола, это да. Хотя вроде уже всё устаканилось.

OpenVPN

Который на разной версионности так же нагадит. У него просто проще решить логи хорошие. Пример микрот tcp only и без компрессии. Такое себе решение получаеться «для всех».

AnyConnect

Который юзает в том числе и ipsec и l2tp. Ну-ну.

Дальше топить будем про что-то ещё?

anc ★★★★★ ()
Последнее исправление: anc (всего исправлений: 1)
Ответ на: комментарий от anc

Если вы не в курсе что и как у вас работает, то это вы ссзб

Если принцип “Explicit is better than implicit” вам нужно объяснять на протяжении полустраницы ЛОРа, то я не собираюсь больше участвовать в этом процессе — бесполезно.

Эм мёртвая? А какая живая тогда по вашему мнению?

OpenVPN, IPsec, WireGuard — первое что в голову пришло.

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 2)
Ответ на: комментарий от intelfx

Если принцип “Explicit is better than implicit” вам нужно объяснять на протяжении полстраницы ЛОРа, то я не собираюсь больше участвовать в этом обсуждении.

Что вы такой агрессивный нонче. Заметьте я спросил из личного любопытства. Мой пост начинался со слов «Только ради интереса.»
И ответ получил ещё до вашего ответа (блин тавтология конечно).

IPsec

А ipsec+l2tp ? Это уже тоже легаси?

ЗЫ Я на этом форуме в части туннелей постоянно говорю, нельзя считать реализация 1 однозначно хорошо, а реализация 2 однозначно плохо. Исключение пожалуй это pptp тут мне кажется не о чем спорить.

anc ★★★★★ ()
Последнее исправление: anc (всего исправлений: 3)
Ответ на: комментарий от anc

Пример микрот tcp only и без компрессии

Давай не будем здесь про это говно. Оно - в принципе целиком такое, не только в реализации OpenVPN. И никакого отношения к OpenVPN не имеет в принципе, и сделано там, как и 99% другого функционала, чтобы в маркетинговый буллщит строчку добавить.

Который юзает в том числе и ipsec и l2tp. Ну-ну.

AnyConnect это строго SSL VPN, не путай с IKE v1/v2, который легаси.

pekmop1024 ★★★★★ ()
Ответ на: комментарий от intelfx

И ещё про легаси. Вот у меня два проводных прова, один l2tp второй pppoe. Пожалуйста подскажите что мне делать, прибежать к ним и кричать «легаси-легаси-легаси» (при то что меня всё устраивает)? Или ещё какой вариант предложите?

anc ★★★★★ ()
Ответ на: комментарий от pekmop1024

AnyConnect это строго SSL VPN, не путай с IKE v1/v2, который легаси.

Секундочку. А как же у меня ikev1 ikev2 нормально используют клиентские сертификаты? Может я что-то пропустил в этой жизни?

anc ★★★★★ ()
Ответ на: комментарий от anc

Или ещё какой вариант предложите?

На потребительском уровне? Или пользоваться, или не пользоваться. На деловом уровне? Настаивать на обновлении стека технологий. Других вариантов в мире не существует.

при то что меня всё устраивает

Я рад за вас. Ваш личный выбор. А мне вот например нервы дороже.

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

На потребительском уровне? Или пользоваться, или не пользоваться.

Вот. О чем и речь. Меня всё устраивает. Но следуя вашей логике я только из-за слов легаси должен что ли отказаться? Я простите не хипстер. Мне надо «работу работать» а не с ветряными мельницами бороться.

На деловом уровне? Настаивать на обновлении стека технологий.

Настаивать. Билайну «настаивать». Боюсь тут надо быть каким-нибудь Грефом что настоять сделать изменения.

Я рад за вас. Ваш личный выбор. А мне вот например нервы дороже.

Я разве написал что я нервничаю? Вроде нет.

anc ★★★★★ ()
Последнее исправление: anc (всего исправлений: 1)
Ответ на: комментарий от anc

Да какая мне вообще разница, что вы там делаете? Был задан вопрос, являются ли скрипты ppp/ip-{up,down} костылями и почему они до сих пор не являются «сервисами systemd». Ответ звучит так, как он звучит. Ещё вопросы?

intelfx ★★★★★ ()
Ответ на: комментарий от anc

Да. Терминологический урок. IKE не может быть назван чистым SSL VPN, потому что там этот SSL сбоку скотчем примотан и является опциональным. Под SSL VPN понимается вариант VPN, который без SSL не работает от слова «никак».

pekmop1024 ★★★★★ ()
Ответ на: комментарий от pekmop1024

Так можно и «до мышей дойти», gre как и любой другой тунель априори не подразумевает шифрования. Другой вопрос в реализациях. И если у меня настроен ipsec с использованием ssl, а у соседа без. Можно ли сходу говорить что вот ipsec как таковой говно и легаси?
Про тот же ovpn вы в курсе, что с точностью до наоборот у него можно выключить шифрование. Сюрпрайз?

И вы пропустили видимо, мне не лениво повторю:

AnyConnect

Который юзает в том числе и ipsec и l2tp. Ну-ну.

«Где правда брат»?

anc ★★★★★ ()
Ответ на: комментарий от anc

Про тот же ovpn вы в курсе, что с точностью до наоборот у него можно выключить шифрование.

Можно. Но он без сертификатов все равно не заработает. Сюрприз?

«Где правда брат»?

Правда в том, что ты путаешь AnyConnect с IKE. AnyConnect использует исключительно свой протокол.

pekmop1024 ★★★★★ ()
Ответ на: комментарий от pekmop1024

Можно. Но он без сертификатов все равно не заработает. Сюрприз?

Заработает. Читаем оф доки. Чуток напильничка приложить надо, конечно. Но это официально. У себя да. Но к общению с клиентом это уже не имеет отношения.

Правда в том, что ты путаешь AnyConnect с IKE. AnyConnect использует исключительно свой протокол.

Я в курсе выше у же писал, но так же отметил что эта проприетарная фигня (все в одном) робит и в ipsec c l2tp.

PS Смешная история получаеться. Обычно это я оспариваю выражения «ovpn это плохо», а тут получилось наоборот :)

anc ★★★★★ ()
Последнее исправление: anc (всего исправлений: 4)