LINUX.ORG.RU
ФорумAdmin

Чем мониторить StrongSwan?

 , , ,


0

1

Есть 4 туннеля. В принципе работают стабильно, но тем не менее хотелось бы обвешать их мониторингом, который на прометее с визуализацией в графану.

Условно, в консоли, по swanctl -l, я вижу следующее:

to-novosibirsk: #5, ESTABLISHED, IKEv2, 7ca172d094bab75e_i 9acc6e17e7c32145_r*
  local  'main-novosibirsk' @ 1.2.3.4[4500]
  remote 'novosibirsk-main' @ 5.6.7.8[4500]
  AES_GCM_16-256/PRF_HMAC_SHA2_256/ECP_256
  established 13931s ago, rekeying in 13s
  children: #30, reqid 2, INSTALLED, TUNNEL-in-UDP, ESP:AES_GCM_16-128
    installed 557s ago, rekeying in 2794s, expires in 3403s
    in  c51ee6c2 (-|0x0000000b), 459121603 bytes, 330334 packets,     1s ago
    out ccdeca8b (-|0x0000000b), 4922903 bytes, 93420 packets,     2s ago
    local  0.0.0.0/0
    remote 0.0.0.0/0

Хотелось бы тоже самое смотреть в графане, да и на случай отлёта туннеля, чтоб в ТГ алерт прилетал, но погуглив, ничего коробочного не нашёл. Даже дашборда в графану нет =(

Подскажите, кто-нить настраивал подобное на мониторинг?


Когда-то искал для openvpn и тоже ничего готового не нашел. Хотел навайбкодить свой экспортер, но руки не дошли. Пока остановился на мониторинге самих портов в Uptime Kuma.

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

Когда-то искал для openvpn и тоже ничего готового не нашел

А я заморочился пару дней и нашёл решение. Выглядит у меня сейчас это -> вот так <-. Правда пришлось компилить сам экспортёр, потому как сейчас это распространяется в докере, а у меня нищебродская VPS’ка, которая не потянет контейнеры.

Загугли openvpn-exporter, там в статьях и пару дашбордов даже для графаны найдёшь

Dodik
() автор топика

Ну strongswan понятие относительное, можно его и как туннель сделать а потом на каждое соединение свой гре. Ну а гре собирай как хотишь, тем же smtp можно …

anonymous
()
Ответ на: комментарий от Khnazile

Спасибо. Сразу нарылся ;)

github.com/torilabs/ipsec-prometheus-exporter/releases/tag/v1.9.1

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

а потом на каждое соединение свой гре

Нахрена лишние накладные расходы? Реализация route‑based с xfrm интерфейсами (современная альтернатива VTI), а для динамической маршрутизации OSPF.

Dodik
() автор топика
Ответ на: комментарий от Khnazile

А как с route-based делать trap для автоматического поднятия туннеля?

Где-то в рекомендациях я встречал параметр start_action = trap указанный в children, но мне достаточно start_action = start в том же месте.
Смоделировал падение сперва одного узла, потом другого. Туннель отлично поднимается как только хост становится доступным.

Dodik
() автор топика
Ответ на: комментарий от Dodik

Нахрена лишние накладные расходы? Реализация route‑based с xfrm интерфейсами (современная альтернатива VTI),

Т.е. gre это типа накладные расходы а vti/xfrm нет. Ага :(

P.S. Лучше расскажите а зачем в принципе юзать route-based? Чем родной режим strongswan не катит?

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

Давай ты сходишь в библиотеку, почитаешь про разницу между vti/xfrm и GRE, а так же про route-based и policy-based, а потом вернёшься с вопросами

Dodik
() автор топика
Ответ на: комментарий от Dodik

Давай ты сходишь в библиотеку,

Я держал ipsec еще со времен openswan, libreswan и т.д. так что могли просто написать что не в курсе делов то, это нормально. Современные пользователи компов даже ИИ выхлоп не могут нормально распарсить.

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

Чем родной режим strongswan не катит?

Например тем, что иногда принимать решение о необходимости заворачивания пакета в туннель необходимо по большему количеству признаков, нежели ip адрес источника и назначения. Типичная ситуация: один и тот же адрес доступен по разным интерфейсам, но заворачивать в туннель надо только пакеты, пришедшие с одного из них, и соответственно пакеты, вышедшие из туннеля надо отправлять через тот же интерфейс.

Khnazile ★★★★★
()

забавно, что вместо одного запроса в гугл/LLM strongswan exporter (первые 3 релеватных результата кстати) ТС решил создать увлекательную тему на форуме с интересными рассуждениями про policy based routing, видимо истинный сетевик

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

Я ТС это писал не для того чтобы он мне что то объяснил а просто решил уточнить для себя, так ли оно реально нужно.

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

Ну в туннель то они идут не правилам фирвевалла а по раутингу. Т.е. в любом случае будут и входящие интерфейсы (в случае форварда) ну и как минимум адрес назначения. Так что думаю фиревалл тут справится.

и соответственно пакеты, вышедшие из туннеля надо отправлять через тот же интерфейс.

Ну так мы все таки про форвардинг что ли? Ну тут тоже есть тот же фиревалл …

P.S. Да я по всякому думал, крутил и так и так, не особо он нужен то route-based, причем динамически можно даже в 220 таблицу маршруты руками напихать (ну если не разрывать соединение а сетку подкинуть нужно)

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

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

Только если у тебя route-based лол. Иначе policy работает так: ищется совпадение адреса назначения и источника, если они соответствуют политике, пакет шифруется (расшифровывается). Ни firewall, ни маршрутизатор в этом не участвуют.

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

Только если у тебя route-based лол.

Да ладно. Поднимите соединение и удалите маршрут в 220 таблице увидите что все.

Ну может я не понятно пишу, это тоже самое как эта сеть вываливается из rightsubnet.

Иначе policy работает так: ищется совпадение адреса назначения и источника, если они соответствуют политике, пакет шифруется (расшифровывается).

Шифруется но это не значит что этим задается направление движения.

P.S. Я не наезжаю, просто хочу сам убедиться, для себя, что мыслю верно.

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

Представь ситуацию: у тебя 3 туннеля, и у каждого rightsubnet 10.0.0.0/8, но при этом они ведут в разные места. У них только адресное пространство пересекается, физически там разные сети. Одной таблицей 220 тут не обойдещься.

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

у тебя 3 туннеля, и у каждого rightsubnet 10.0.0.0/8

в смысле 3 туннеля? Это конфа с одного центрального ящика у которого 3 туннеля с rightsubnet 10.0.0.0/8? Да ладно. Может подрезать это дело?

P.S. У меня в одном месте есть: 192.168.1.0/24,192.168.2.0/23,192.168.4.0/22,192.168.8.0/21 чтобы накрыть 1-15.

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

А нельзя порезать, ты не отвечаешь за инфраструктуру на том конце, только на своем. Оно так, потому что так исторически сложилось, вполне реальная ситуация.

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

А нельзя порезать, ты не отвечаешь за инфраструктуру на том конце, только на своем. Оно так, потому что так исторически сложилось, вполне реальная ситуация.

Так тут нужно мне разъяснить.

rightsubnet 10.0.0.0/8 это же твоя сторона, т.е. что там наковырял в iptables знаешь какой именно 10.х туда то. Т.е. эту сетку(сети) и прописывай. Главное чтобы твой диапазон был внутри того, а не зная того ты на нужный интерфейс не завернешь (обычным раутингом, не подрежешь фиреваллом и т.д.).

(х.з. но вроде понятно пишу)

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

rightsubnet 10.0.0.0/8 это же твоя сторона

Ну я не пользуюсь вашим ipsec.conf, с ущербным наркоманским синтаксисом, потому не помню как там правильно. В swanctl.conf используются нормальные, человекочитаемые local/remote

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

Ну я не пользуюсь вашим ipsec.conf, с ущербным наркоманским синтаксисом, потому не помню как там правильно. В swanctl.conf используются нормальные, человекочитаемые local/remote

Ну это ответ не совсем по сути. (просто полно еще ящиков с rhel6х)

P.S. rightsubnet == remote_ts

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

Ну смотри, у есть три разных удаленных сети, которые используют адреса 10.0.0.0/8. Ты с этим ничего не можешь сделать. Но тебе надо держать до них туннели и что-то делать, чтобы трафик от машин в твоей локальной сети попадал куда надо (и соответственно, чтобы обратный трафик тоже доходил куда надо). Не очень понимаю, как такое сделать без виртуальных интерфейсов и правил маршрутизации для них.

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

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

К примеру что Вы записываете в : правил маршрутизации для них? (вы же знаете что там к примеру 10.0.1.0/24)

Это то же самое нужно записать в remote_ts, для каждого туннеля свой. Тогда этот маршрут будет сам подниматься …

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

Так не получится, там есть реальные пересечения с одинаковыми адресами. Приходится уже на своей стороне делать NAT/подменять DNS, чтобы это обойти.

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

реальные пересечения с одинаковыми адресами.

:( Мда уж. Жесть какая то. 10 и берут те кому мало 192.168 … вроде на ЖД была 10-ка, но там было жесткое разделение подсетей по дорогам.

anonymous
()

Подскажите, кто-нить настраивал подобное на мониторинг?

Своими скриптами.

anc ★★★★★
()
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария