Для анализа сетевого трафика в первую очередь вспоминаешь про tcpdump. В принципе, он покрывает все основные потребности. Там можно посмотреть и отфильтровать всё, что угодно. Но не сказать, что он удобен и интуитивен, поэтому существуют более специализированные программы.
Я на днях увидел упоминание утилиты ngrep. Название показалось очень знакомым, как-будто я её знаю и уже писал о ней. Поискал по каналу и сайту и ничего не нашёл. Потом вспомнил, что спутал её с sngrep, которую я постоянно использовал, когда плотно работал с VOIP серверами. Очень её рекомендую, если приходится анализировать SIP протокол. Хотя скорее всего вы про неё знаете, если с ним работаете. Это очень удобная и функциональная утилита, известная в узких кругах.
Возвращаясь к ngrep. Это старая программа, которая есть в базовых репозиториях дистрибутивов. В некоторых случаях она будет удобнее tcpdump. Сразу покажу на конкретном примере. В качестве параметра ngrep принимает regex по содержимому пакетов. То есть можно сделать вот так:
И посмотреть информацию о пакетах, где есть строка HTTP. Собственно, это будут все пакеты данного протокола. В примере выше ключ
Ngrep умеет отображать содержимое пакетов с переходом на новую строку. Это особенно удобно для анализа HTTP или SMTP протокола. Как это выглядит, можно посмотреть на картинках снизу:
Подобным образом можно тут же в консоли отфильтровать все запросы с определённым User-Agent:
Чтобы не анализировать вообще весь трафик, его можно конкретизировать примерно таким же синтаксисом, как у tcpdump:
Указали интерфейс и порт. Если слушаете трафик на шлюзе, то можно конкретизировать сервер назначения, куда идёт трафик:
Host может принимать значения не только IP адреса, но и домена. Если смотрите на веб сервере запросы к конкретному домену, то указать адрес этого домена можно в фильтре для содержимого пакетов:
Подобные выборки по содержимому актуальны для всех протоколов, где иногда приходится заглядывать в сетевой трафик для дебага. Это упомянутый HTTP, а так же SMTP, SIP. Это из того, что я сам делал.
Например, смотрим обмен с конкретным почтовым сервером, добавляя метки времени:
Можно конкретизировать, если нужно посмотреть только EHLO:
Сохраните себе информацию о ngrep. Прямо здесь и сейчас вряд ли он нужен будет, но в будущем может пригодиться.
#network #terminal
Я на днях увидел упоминание утилиты ngrep. Название показалось очень знакомым, как-будто я её знаю и уже писал о ней. Поискал по каналу и сайту и ничего не нашёл. Потом вспомнил, что спутал её с sngrep, которую я постоянно использовал, когда плотно работал с VOIP серверами. Очень её рекомендую, если приходится анализировать SIP протокол. Хотя скорее всего вы про неё знаете, если с ним работаете. Это очень удобная и функциональная утилита, известная в узких кругах.
Возвращаясь к ngrep. Это старая программа, которая есть в базовых репозиториях дистрибутивов. В некоторых случаях она будет удобнее tcpdump. Сразу покажу на конкретном примере. В качестве параметра ngrep принимает regex по содержимому пакетов. То есть можно сделать вот так:
# ngrep -q 'HTTP'И посмотреть информацию о пакетах, где есть строка HTTP. Собственно, это будут все пакеты данного протокола. В примере выше ключ
-q означает отображать только сетевые пакеты. Непонятно зачем ngrep без этого ключа рисует полоску из псевдографики в консоли, когда ожидает пакеты. Ngrep умеет отображать содержимое пакетов с переходом на новую строку. Это особенно удобно для анализа HTTP или SMTP протокола. Как это выглядит, можно посмотреть на картинках снизу:
# ngrep -q 'HTTP' -W bylineПодобным образом можно тут же в консоли отфильтровать все запросы с определённым User-Agent:
# ngrep -q 'YaBrowser' -W bylineЧтобы не анализировать вообще весь трафик, его можно конкретизировать примерно таким же синтаксисом, как у tcpdump:
# ngrep -q 'YaBrowser' -W byline -d ens18 port 80Указали интерфейс и порт. Если слушаете трафик на шлюзе, то можно конкретизировать сервер назначения, куда идёт трафик:
# ngrep -q 'YaBrowser' -W byline 'host 10.20.1.36 and port 80 or 443'Host может принимать значения не только IP адреса, но и домена. Если смотрите на веб сервере запросы к конкретному домену, то указать адрес этого домена можно в фильтре для содержимого пакетов:
# ngrep -q 'example.com' -W byline 'port 80 or 443'Подобные выборки по содержимому актуальны для всех протоколов, где иногда приходится заглядывать в сетевой трафик для дебага. Это упомянутый HTTP, а так же SMTP, SIP. Это из того, что я сам делал.
Например, смотрим обмен с конкретным почтовым сервером, добавляя метки времени:
# ngrep -q '' -t -W byline 'port smtp and host 94.142.141.246'Можно конкретизировать, если нужно посмотреть только EHLO:
# ngrep -q -i 'EHLO' -t -W byline 'port smtp and host 94.142.141.246'Сохраните себе информацию о ngrep. Прямо здесь и сейчас вряд ли он нужен будет, но в будущем может пригодиться.
#network #terminal
2👍125👎3
Ранее я уже поднимал тему выбора размера MTU (maximum transmission unit) для VPN туннелей. Чаще всего об этом не нужно беспокоиться, принимая все параметры по умолчанию, но иногда бывают ситуации, и я с ними сталкивался, когда приходится разбираться из-за заметного уменьшения быстродействия туннеля без видимых причин.
Я вспомнил об этой теме, потому что столкнулся с реальным примером. У меня не возникло каких-то проблем с быстродействием, но получилось на практике посмотреть на эти настройки. Мне нужно было подключиться к старенькому PPTP туннелю. Клиентом выступал Mikrotik.
При создании PPTP интерфейса Mikrotik предлагает выбрать MTU 1450. Я немного погуглил, но не понял, а почему именно это значение ставить? Есть рекомендации сделать либо больше, либо меньше. Не понятно.
Взял под Windows утилиту mturoute. Это лучшее решение для быстрого определения MTU. Она отправляет нефрагментированные ICMP пакеты разного размера, определяя максимальный размер, который доходит до адресата. В настройках Mikrotik для начала указал MTU 1500, запустил туннель и выполнил проверку:
В Linux можно использовать tracepath:
Обе утилиты показали максимальный размер пакета 1492. Его я и установил в настройках PPTP интерфейса. Если бы я оставил то, что предлагалось по умолчанию 1450, то проблемы бы тоже не было. Но теоретически, с 1492 скорость будет немного выше. А вот если поставить 1500, то наверняка будут проблемы, так как стандартные пакеты начнут дополнительно фрагментироваться.
Задался вопросом. А почему, собственно, рабочее MTU 1492? Ведь по идее PPTP уменьшает стандартный размер пакета как минимум на следующие заголовки: IPv4+TCP+GRE. То есть там как минимум будет уменьшение на 20+20+8 = 48 байт. MTU должно быть 1452. Дело тут скорее всего в том, PPTP для передачи данных использует отдельное соединение с помощью протокола GRE. Сначала выполняется управляющее подключение по TCP порту 1723. А потом данные передаются по отдельному GRE соединению. Если верить калькулятору, то GRE с ключом как раз забирает для своих заголовков 8 байт и MTU будет 1492.
Данный вопрос 100% актуален, если у вас используется PPPoE соединение с интернетом, а поверх него VPN туннель. Там точно нужно будет делать поправку на PPPoE. У меня есть одна точка с таким соединением. Без VPN mturoute показывает MTU 1480.
Надеюсь вам эта информация будет полезна и где-то пригодится. Писал больше для себя, чтобы разобраться. Тема с MTU сложная. Нужно хорошо понимать, как вообще устроена передача данных, из чего состоят пакеты, как передаются, фрагментируются и т.д. Я в отдельности всё это изучал, но без практики информация быстро забывается.
Написав текст, я лучше запоминаю и всегда могу к нему вернуться, если понадобится. Главное, не забыть, что об этом уже писал и разбирался 😁 Не всегда удаётся. Успокаивает то, что это не только для меня проблема. Читал недавно статью на сайте, где автор в комментариях написал, что вышел на свою статью через google. Тупо забыл, что уже сталкивался и писал об этом. У меня так тоже не раз бывало.
☝️Из этой заметки стоит сохранить на память как минимум:
◽️Visual packet size calculator, пример расчёта
◽️mturoute.exe
◽️Чем отличаются утилиты traceroute, tracert и tracepath?
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#network
Я вспомнил об этой теме, потому что столкнулся с реальным примером. У меня не возникло каких-то проблем с быстродействием, но получилось на практике посмотреть на эти настройки. Мне нужно было подключиться к старенькому PPTP туннелю. Клиентом выступал Mikrotik.
При создании PPTP интерфейса Mikrotik предлагает выбрать MTU 1450. Я немного погуглил, но не понял, а почему именно это значение ставить? Есть рекомендации сделать либо больше, либо меньше. Не понятно.
Взял под Windows утилиту mturoute. Это лучшее решение для быстрого определения MTU. Она отправляет нефрагментированные ICMP пакеты разного размера, определяя максимальный размер, который доходит до адресата. В настройках Mikrotik для начала указал MTU 1500, запустил туннель и выполнил проверку:
> mturoute 192.168.10.1* ICMP Fragmentation is not permitted. ** Speed optimization is enabled. ** Maximum payload is 10000 bytes. *- ICMP payload of 1472 bytes is too big.+ ICMP payload of 92 bytes succeeded.+ ICMP payload of 1299 bytes succeeded.- ICMP payload of 1466 bytes is too big.+ ICMP payload of 1463 bytes succeeded.+ ICMP payload of 1464 bytes succeeded.- ICMP payload of 1465 bytes is too big.Path MTU: 1492 bytes.В Linux можно использовать tracepath:
# tracepath 192.168.10.1 1?: [LOCALHOST] pmtu 1500 1: ??? 0.586ms 1: ??? 0.256ms 2: 10.8.2.1 5.685ms 3: 10.8.0.3 11.253ms 4: 10.8.0.3 14.199ms pmtu 1492 4: 192.168.10.1 17.783ms reached Resume: pmtu 1492 hops 4 back 4Обе утилиты показали максимальный размер пакета 1492. Его я и установил в настройках PPTP интерфейса. Если бы я оставил то, что предлагалось по умолчанию 1450, то проблемы бы тоже не было. Но теоретически, с 1492 скорость будет немного выше. А вот если поставить 1500, то наверняка будут проблемы, так как стандартные пакеты начнут дополнительно фрагментироваться.
Задался вопросом. А почему, собственно, рабочее MTU 1492? Ведь по идее PPTP уменьшает стандартный размер пакета как минимум на следующие заголовки: IPv4+TCP+GRE. То есть там как минимум будет уменьшение на 20+20+8 = 48 байт. MTU должно быть 1452. Дело тут скорее всего в том, PPTP для передачи данных использует отдельное соединение с помощью протокола GRE. Сначала выполняется управляющее подключение по TCP порту 1723. А потом данные передаются по отдельному GRE соединению. Если верить калькулятору, то GRE с ключом как раз забирает для своих заголовков 8 байт и MTU будет 1492.
Данный вопрос 100% актуален, если у вас используется PPPoE соединение с интернетом, а поверх него VPN туннель. Там точно нужно будет делать поправку на PPPoE. У меня есть одна точка с таким соединением. Без VPN mturoute показывает MTU 1480.
Надеюсь вам эта информация будет полезна и где-то пригодится. Писал больше для себя, чтобы разобраться. Тема с MTU сложная. Нужно хорошо понимать, как вообще устроена передача данных, из чего состоят пакеты, как передаются, фрагментируются и т.д. Я в отдельности всё это изучал, но без практики информация быстро забывается.
Написав текст, я лучше запоминаю и всегда могу к нему вернуться, если понадобится. Главное, не забыть, что об этом уже писал и разбирался 😁 Не всегда удаётся. Успокаивает то, что это не только для меня проблема. Читал недавно статью на сайте, где автор в комментариях написал, что вышел на свою статью через google. Тупо забыл, что уже сталкивался и писал об этом. У меня так тоже не раз бывало.
☝️Из этой заметки стоит сохранить на память как минимум:
◽️Visual packet size calculator, пример расчёта
◽️mturoute.exe
◽️Чем отличаются утилиты traceroute, tracert и tracepath?
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#network
2👍260👎3
Расскажу об одной банальной вещи. Возможно кому-то она поможет, если в голову не приходило такое решение.
Ночь - время для обслуживания и бэкапов. Хорошо, когда ты за ночное окно успеваешь всё сделать и перекинуть данные на бэкап сервера. Но рано или поздно ночного окна начинает не хватать, особенно если бэкапы льются через интернет. Решать вопрос лучше всего комплексно, уменьшая объём передаваемых данных и двигая сервер с бэкапами ближе к источнику.
Если перечисленное выше не приводит к желаемому результату, то я настраиваю ограничение трафика. Вопрос этот непростой, если подразумевать полноценную приоритизацию на основе типов данных. Если ты не занимаешься этим вопросом постоянно, то довольно муторно вникать во все нюансы. Но конкретно в этой задаче не придётся сильно погружаться, так как я предлагаю просто ограничить в определённое время полосу пропускания на основе IP адреса сервера с бэкапами. А это самый простой случай.
В Mikrotik такое ограничение можно настроить с помощью Simple Queue. В шлюзах на базе Linux с помощью tc из пакета iproute2. В других шлюзах и роутерах этот как-то по-другому может решаться.
Для нормальной настройки шейпирования, чтобы не мешать привычной дневной работе, нужно обязательно иметь мониторинг полосы пропускания. Тот же Zabbix или Prometheus без особых проблем решают в типовых ситуациях эти вопросы. Надо знать среднюю загрузку канала и разрешить бэкапам литься с такой скоростью, чтобы днём не было полной утилизации полосы пропускания.
Я обычно делаю отдельные дашборды в мониторинге с загрузкой канала, чтобы во-первых, быстро оценить среднюю дневную загрузку, во-вторых, чтобы потом удобно контролировать загрузку, если бэкапы в ночь не успевают скопироваться.
Делается всё это обычно для того, чтобы если до утра задержится копирование, не парализовать работу. Если бэкапы уже сильно не успевают заливаться и уходят в день, то надо что-то менять. Потому что даже с таким ограничением они мешают полноценной работе. У тебя полезная ёмкость канала уменьшается.
#network #backup
Ночь - время для обслуживания и бэкапов. Хорошо, когда ты за ночное окно успеваешь всё сделать и перекинуть данные на бэкап сервера. Но рано или поздно ночного окна начинает не хватать, особенно если бэкапы льются через интернет. Решать вопрос лучше всего комплексно, уменьшая объём передаваемых данных и двигая сервер с бэкапами ближе к источнику.
Если перечисленное выше не приводит к желаемому результату, то я настраиваю ограничение трафика. Вопрос этот непростой, если подразумевать полноценную приоритизацию на основе типов данных. Если ты не занимаешься этим вопросом постоянно, то довольно муторно вникать во все нюансы. Но конкретно в этой задаче не придётся сильно погружаться, так как я предлагаю просто ограничить в определённое время полосу пропускания на основе IP адреса сервера с бэкапами. А это самый простой случай.
В Mikrotik такое ограничение можно настроить с помощью Simple Queue. В шлюзах на базе Linux с помощью tc из пакета iproute2. В других шлюзах и роутерах этот как-то по-другому может решаться.
Для нормальной настройки шейпирования, чтобы не мешать привычной дневной работе, нужно обязательно иметь мониторинг полосы пропускания. Тот же Zabbix или Prometheus без особых проблем решают в типовых ситуациях эти вопросы. Надо знать среднюю загрузку канала и разрешить бэкапам литься с такой скоростью, чтобы днём не было полной утилизации полосы пропускания.
Я обычно делаю отдельные дашборды в мониторинге с загрузкой канала, чтобы во-первых, быстро оценить среднюю дневную загрузку, во-вторых, чтобы потом удобно контролировать загрузку, если бэкапы в ночь не успевают скопироваться.
Делается всё это обычно для того, чтобы если до утра задержится копирование, не парализовать работу. Если бэкапы уже сильно не успевают заливаться и уходят в день, то надо что-то менять. Потому что даже с таким ограничением они мешают полноценной работе. У тебя полезная ёмкость канала уменьшается.
#network #backup
1👍107👎3
Уже не первый раз сталкиваюсь с ситуацией, что получаешь арендную VPS, а там по умолчанию уже настроены сетевые интерфейсы и ipv4, и ipv6. Делаешь обновление системы через apt, он подключается по ipv6 и ничего не качает, пишет, что no longer has a Release file. Столкнулся вчера лично с репозиторием от Яндекса:
В рунете он популярен. Я и сам всегда его использую. Не знаю, кто тут виноват, сам провайдер или Яндекс (позже выяснилось, что Яндекс, подробности в конце). Не вижу смысла разбираться и тратить время. В данном случае проще отключить ipv6. Это можно сделать разными способами. Можно конкретно apt заставить работать через ipv4. У него есть параметр для этого:
Постоянно так писать не будешь, можно добавить в конфигурацию, создав файл
Я лично поступил проще. Отключил ipv6 на уровне системы. Добавил в
И применил их:
Настройки ipv6 на сетевом интерфейсе сразу пропали, apt успешно заработал по ipv4.
Более радикальный способ отключения через GRUB, но тогда придётся обновлять загрузчик, пересобирать initramfs. Плюс, понадобится перезагрузка. Для этого в его конфиг
После этого нужно обновить загрузчик. В зависимости от системы выглядеть это может по-разному. В Debian можно так:
Заметил ещё такую особенность. До того, как отключил ipv6, заметил, что apt работает то по ipv4, то по ipv6. Можно было несколько раз его запустить и получить желаемый результат. Не знаю, с чем это может быть связано. Возможно первый резолв доменного имени идёт на DNS запись AAAA, а если подключение неудачно, то потом на A. Но не уверен, что это так. Просто догадки.
Уже после написания заметки решил повнимательнее разобраться, что реально происходит в apt при обращении по ipv6 и ipv4. Для этого сделал два отдельных запроса по разным протоколам:
Первый нормально отрабатывает и загружает файл InRelease. А во втором случае репозиторий Яндекса отвечает:
То есть DNS запись для mirror.yandex.ru есть:
Но Nginx, который раздаёт контент, не настроен для работы по ipv6. Не знаю, зачем так сделали. Если не настроили Nginx, зачем настроили ipv6? 🤷♂️ Может какие-то временные проблемы.
☝️В целом, с ipv6 такое бывает, поэтому если не используете, лучше сразу отключить.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#linux #network #ipv6
http://mirror.yandex.ru/debian bookworm mainВ рунете он популярен. Я и сам всегда его использую. Не знаю, кто тут виноват, сам провайдер или Яндекс (позже выяснилось, что Яндекс, подробности в конце). Не вижу смысла разбираться и тратить время. В данном случае проще отключить ipv6. Это можно сделать разными способами. Можно конкретно apt заставить работать через ipv4. У него есть параметр для этого:
# apt -o Acquire::ForceIPv4=true upgradeПостоянно так писать не будешь, можно добавить в конфигурацию, создав файл
/etc/apt/apt.conf.d/disable-ipv6 следующего содержания:Acquire::ForceIPv4 "true";Я лично поступил проще. Отключил ipv6 на уровне системы. Добавил в
/etc/sysctl.conf пару параметров:net.ipv6.conf.all.disable_ipv6 = 1net.ipv6.conf.default.disable_ipv6 = 1И применил их:
# sysctl -pНастройки ipv6 на сетевом интерфейсе сразу пропали, apt успешно заработал по ipv4.
Более радикальный способ отключения через GRUB, но тогда придётся обновлять загрузчик, пересобирать initramfs. Плюс, понадобится перезагрузка. Для этого в его конфиг
/etc/default/grub, конкретно в параметр GRUB_CMDLINE_LINUX, нужно добавить значение ipv6.disable=1. Если там уже указаны другие значения, то перечислены они должны быть через пробел. Примерно так:GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet ipv6.disable=1"После этого нужно обновить загрузчик. В зависимости от системы выглядеть это может по-разному. В Debian можно так:
# dpkg-reconfigure grub-pcЗаметил ещё такую особенность. До того, как отключил ipv6, заметил, что apt работает то по ipv4, то по ipv6. Можно было несколько раз его запустить и получить желаемый результат. Не знаю, с чем это может быть связано. Возможно первый резолв доменного имени идёт на DNS запись AAAA, а если подключение неудачно, то потом на A. Но не уверен, что это так. Просто догадки.
Уже после написания заметки решил повнимательнее разобраться, что реально происходит в apt при обращении по ipv6 и ipv4. Для этого сделал два отдельных запроса по разным протоколам:
# apt -o Debug::Acquire::http=true -o Acquire::ForceIPv4=true update# apt -o Debug::Acquire::http=true -o Acquire::ForceIPv6=true updateПервый нормально отрабатывает и загружает файл InRelease. А во втором случае репозиторий Яндекса отвечает:
Answer for: http://mirror.yandex.ru/debian/dists/bookworm/InReleaseHTTP/1.1 404 Not FoundServer: nginx/1.24.0 (Ubuntu)............................................................Err:2 http://mirror.yandex.ru/debian bookworm Release 404 Not Found [IP: 2a02:6b8::183 80]То есть DNS запись для mirror.yandex.ru есть:
# dig +short mirror.yandex.ru AAAA2a02:6b8::183Но Nginx, который раздаёт контент, не настроен для работы по ipv6. Не знаю, зачем так сделали. Если не настроили Nginx, зачем настроили ipv6? 🤷♂️ Может какие-то временные проблемы.
☝️В целом, с ipv6 такое бывает, поэтому если не используете, лучше сразу отключить.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#linux #network #ipv6
3👍193👎8
Столкнулся на днях с необычной ситуацией. Zabbix прислал уведомление, что внешний канал на одном из Mikrotik забит. Зашёл на него, смотрю локальный трафик, его особо нет, а на WAN интерфейсе всё забито. Я сначала по привычке бридж локальный открыл, чтобы посмотреть через Torch, кто источник повышенного трафика. Там ничего подозрительного не увидел.
Дальше открыл Torch в WAN и вижу там кучу входящего трафика, но что самое интересное, не на мой внешний IP адрес. У меня настроен .242.39, а трафик идёт на другие адреса из выделенной провайдером подсети. Судя по всему это уже давно так продолжается, но канал весь забили только в этот раз. Потом трафик ушёл и всё нормализовалось. Но левые пакеты всё равно светятся на внешнем интерфейсе, хоть и в небольшом количестве.
Первый раз с такой ситуацией сталкиваюсь. Даже не знаю, что делать. Этот трафик адресован не мне, по идее роутер его на входе сразу отбрасывает. Я его ни в списке соединений не вижу, ни файрволом не могу заблокировать. Он и так не обрабатывается. Но при этом в графике загрузки интерфейса я его вижу. То есть он реально забивает канал, или нет?
Я так понимаю, надо писать провайдеру. Его косяк, что он трафик разных абонентов перемешивает, чего при нормальных настройках быть не должно. Это какой-то местечковый провайдер-монополист в одном из бизнес центров. Кто-то сталкивался с подобной ситуацией? Если провайдер ничего не сделает, мне со своей стороны нужно что-то делать? Насколько я понимаю, сам я тут ничего не сделаю, так как входящим трафиком не могу управлять, только отбрасывать его.
#mikrotik #network
Дальше открыл Torch в WAN и вижу там кучу входящего трафика, но что самое интересное, не на мой внешний IP адрес. У меня настроен .242.39, а трафик идёт на другие адреса из выделенной провайдером подсети. Судя по всему это уже давно так продолжается, но канал весь забили только в этот раз. Потом трафик ушёл и всё нормализовалось. Но левые пакеты всё равно светятся на внешнем интерфейсе, хоть и в небольшом количестве.
Первый раз с такой ситуацией сталкиваюсь. Даже не знаю, что делать. Этот трафик адресован не мне, по идее роутер его на входе сразу отбрасывает. Я его ни в списке соединений не вижу, ни файрволом не могу заблокировать. Он и так не обрабатывается. Но при этом в графике загрузки интерфейса я его вижу. То есть он реально забивает канал, или нет?
Я так понимаю, надо писать провайдеру. Его косяк, что он трафик разных абонентов перемешивает, чего при нормальных настройках быть не должно. Это какой-то местечковый провайдер-монополист в одном из бизнес центров. Кто-то сталкивался с подобной ситуацией? Если провайдер ничего не сделает, мне со своей стороны нужно что-то делать? Насколько я понимаю, сам я тут ничего не сделаю, так как входящим трафиком не могу управлять, только отбрасывать его.
#mikrotik #network
👍68👎3
Заметил в 7-й версии RouterOS на Микротике в настройках DHCP сервера новую кнопку Send Reconfigure. Она находится в списке выданных аренд (Leases). Специально заглянул в старое устройство. Её там не было. Стало интересно, что это такое.
Как оказалось, DHCP сервер может инициировать обновление сетевых настроек. Для этого есть специальное DHCP-сообщение типа FORCERENEW. Вообще не знал и никогда не слышал, что это возможно. И не видел, чтобы кто-то так делал. Я всегда обновлял настройки со стороны клиента. Думал, только он может решать, когда ему это делать. Соответственно, если ты поменял настройки на сервере, то либо ждешь, когда закончится аренда, либо клиентом инициируешь обновление.
На эту тему есть RFC 3203 (DHCP reconfigure extension) аж от 2001 года. То есть это не что-то новое и уникальное. Просто в RouterOS добавили поддержку этой функциональности. Дай, думаю, попробую, как это работает. Выглядит удобно. Поменял IP адрес в аренде и отправил команду на обновление настроек. Но ничего не вышло.
Тут не всё так просто. Для того, чтобы кто попало не рассылал по сети сообщения на обновление настроек, в этот механизм добавлена защита, описанная в RFC 6704 (Forcerenew Nonce Authentication). При получении аренды от сервера, клиент сообщает, что он поддерживает механизм аутентификации. В ответ сервер отправляет ему ключ аутентификации.
В Mikrotik этот ключ можно посмотреть в статусе аренды, на вкладке Active, в поле Reconfigure Key. Если ключа там нет, значит обмена ключами не было, клиент не примет запрос FORCERENEW на смену настроек. Сервер, соответственно, когда отправляет запрос, в заголовок добавляет ключ для аутентификации.
Будет или нет работать команда FORCERENEW зависит опять от клиента. В клиенте того же Mikrotik сделали удобно. Там просто добавили опцию в свойства клиента - Allow Reconfigure Messages. Ставишь галочку и клиент обменивается с сервером ключами.
С другими клиентами сложнее. Стандартный
Стандартный DHCP клиент в Windows тоже не имеет такой поддержки.
В итоге фичу в RouterOS завезли, причём весьма удобную, а на практике применить её негде. Только если в качестве DHCP клиентов у вас выступают те же устройства RouterOS. На практике это не особо и нужно, хотя и может где-то пригодиться.
Вы вообще знали о такой возможности? Не понимаю, почему её не реализовали в популярных клиентах. Удобно же.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#mikrotik #network #dhcp
Как оказалось, DHCP сервер может инициировать обновление сетевых настроек. Для этого есть специальное DHCP-сообщение типа FORCERENEW. Вообще не знал и никогда не слышал, что это возможно. И не видел, чтобы кто-то так делал. Я всегда обновлял настройки со стороны клиента. Думал, только он может решать, когда ему это делать. Соответственно, если ты поменял настройки на сервере, то либо ждешь, когда закончится аренда, либо клиентом инициируешь обновление.
На эту тему есть RFC 3203 (DHCP reconfigure extension) аж от 2001 года. То есть это не что-то новое и уникальное. Просто в RouterOS добавили поддержку этой функциональности. Дай, думаю, попробую, как это работает. Выглядит удобно. Поменял IP адрес в аренде и отправил команду на обновление настроек. Но ничего не вышло.
Тут не всё так просто. Для того, чтобы кто попало не рассылал по сети сообщения на обновление настроек, в этот механизм добавлена защита, описанная в RFC 6704 (Forcerenew Nonce Authentication). При получении аренды от сервера, клиент сообщает, что он поддерживает механизм аутентификации. В ответ сервер отправляет ему ключ аутентификации.
В Mikrotik этот ключ можно посмотреть в статусе аренды, на вкладке Active, в поле Reconfigure Key. Если ключа там нет, значит обмена ключами не было, клиент не примет запрос FORCERENEW на смену настроек. Сервер, соответственно, когда отправляет запрос, в заголовок добавляет ключ для аутентификации.
Будет или нет работать команда FORCERENEW зависит опять от клиента. В клиенте того же Mikrotik сделали удобно. Там просто добавили опцию в свойства клиента - Allow Reconfigure Messages. Ставишь галочку и клиент обменивается с сервером ключами.
С другими клиентами сложнее. Стандартный
dhclient в Linux по умолчанию не поддерживает реализацию RFC 3203 и RFC 6704. Нужно брать какой-то другой. Например, цисковский поддерживает, но я не знаю, можно ли его запустить в Linux. Не изучал этот вопрос.Стандартный DHCP клиент в Windows тоже не имеет такой поддержки.
В итоге фичу в RouterOS завезли, причём весьма удобную, а на практике применить её негде. Только если в качестве DHCP клиентов у вас выступают те же устройства RouterOS. На практике это не особо и нужно, хотя и может где-то пригодиться.
Вы вообще знали о такой возможности? Не понимаю, почему её не реализовали в популярных клиентах. Удобно же.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#mikrotik #network #dhcp
👍158👎3
Сейчас появилось очень много программ для построения mesh-сетей. Это локальные сети поверх других сетей, где хосты могут соединяться друг с другом напрямую, если есть возможность. А каждый из членов сети может выступать маршрутизатором для доступа к другим ресурсами.
Известными представителями подобных продуктов являются Nebula, Tailscale, Netmaker, Netbird и ZeroTier. На последнем я бы хотел остановиться поподробнее. Он выделяется из этого списка своим протоколом передачи данных, в то время как остальные в основном используют WireGuard. Плюс, Mikrotik в RouterOS7 имеет реализацию, как клиента, так и своего контроллера на базе ZeroTier.
Я раньше только слышал про него, сам не пробовал. Решил исправить это, развернул и протестировал. Сразу скажу, что это не инструмент для обхода блокировок. Он не для этого придуман и в данной роли работает плохо. Не стоит эту тему развивать.
ZeroTier - платный SaaS сервис. Регистрируетесь, платите деньги и получаете личный кабинет для управления всеми своими сетями. Но при этом серверная часть выложена в open source. Каждый может развернуть свой локальный сервер и управлять им через CLI. Я немного изучил команды, там на самом деле всё относительно просто.
В связи с этим появилось очень много реализаций бесплатного веб интерфейса для управления сервером. Я недавно читал статью про настройку Self-Hosted ZeroTier с помощью интерфейса ZTNET, поэтому не стал смотреть другие интерфейсы, а их много, взял сразу этот. В целом, там всё необходимое для управления есть.
Запускаем так:
Можно и вручную всё это сделать. В репозитории есть описание. Теперь можно идти на 3000 порт сервера и регистрировать учётку админа.
Принцип объединения устройств в единую сеть следующий:
1️⃣ Скачиваете клиента под свою систему (есть под все, в том числе мобильные)
2️⃣ В клиенте указываете Network ID или сканируете QR код, который видно в веб интерфейсе. В этом ID, как я понял, закодирован IP контроллера.
3️⃣ Клиент подключается к серверу, на сервере вы подтверждаете его подключение.
4️⃣ Клиент получает IP адрес внутренней сети.
Я объединил Windows, Linux и Mikrotik. Получилось всё без проблем. Узлы сети сразу же напрямую увидели себя по внутренним адресам сети ZeroTier. Заработали RDP, SSH, Winbox.
Вы можете назначить Mikrotik шлюзом для какой-то подсети, которая находится за ним. Клиенты, которые подключатся к общей mesh-сети, могут ходить в ту сеть через него. А какой-нибудь Linux сервер назначить шлюзом для доступа в другую инфраструктуру. То есть каждый узел может выступать в роли и клиента, и шлюза для других. Настраивается это очень просто, буквально в несколько кликов в веб интерфейсе.
Если клиенты не видят друг друга напрямую, то общаются через контроллер. По умолчанию локальный ZeroTier подключается к набору публичных серверов для связи клиентов, которые не могут через ваш сервер увидеть друг-друга. Например, если сервер не в публичном доступе для всех.
В ZTNET это отключается в разделе настроек ZT Controller, где вы можете создать так называемый Custom Planet, который будет работать только локально и никуда подключаться не будет. Вам нужно будет обеспечить к нему прямой доступ всех клиентов, либо опубликовав контроллер напрямую в интернете, либо пробросив к нему порт 9993/udp.
Я всё это настроил. Разобрался со всем за пару-тройку часов. Не могу подробно расписать установку клиентов и команды, потому что лимит на длину заметки. В сети всё это есть, там ничего сложного.
Продукт простой, функциональный, бесплатный и известный. Много кем поддерживается. Так что если нужно что-то подобное, то можете смело использовать. Единственное, я бы поискал какой-то другой GUI. Этот показался немного кривоват, хотя вся необходимая функциональность присутствует.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
———
ServerAdmin:📱 Telegram | 🌐 Сайт | 📲 MAX
#vpn #network
Известными представителями подобных продуктов являются Nebula, Tailscale, Netmaker, Netbird и ZeroTier. На последнем я бы хотел остановиться поподробнее. Он выделяется из этого списка своим протоколом передачи данных, в то время как остальные в основном используют WireGuard. Плюс, Mikrotik в RouterOS7 имеет реализацию, как клиента, так и своего контроллера на базе ZeroTier.
Я раньше только слышал про него, сам не пробовал. Решил исправить это, развернул и протестировал. Сразу скажу, что это не инструмент для обхода блокировок. Он не для этого придуман и в данной роли работает плохо. Не стоит эту тему развивать.
ZeroTier - платный SaaS сервис. Регистрируетесь, платите деньги и получаете личный кабинет для управления всеми своими сетями. Но при этом серверная часть выложена в open source. Каждый может развернуть свой локальный сервер и управлять им через CLI. Я немного изучил команды, там на самом деле всё относительно просто.
В связи с этим появилось очень много реализаций бесплатного веб интерфейса для управления сервером. Я недавно читал статью про настройку Self-Hosted ZeroTier с помощью интерфейса ZTNET, поэтому не стал смотреть другие интерфейсы, а их много, взял сразу этот. В целом, там всё необходимое для управления есть.
Запускаем так:
# wget -O docker-compose.yml https://raw.githubusercontent.com/sinamics/ztnet/main/docker-compose.yml
# sed -i "s|http://localhost:3000|http://$(hostname -I | cut -d' ' -f1):3000|" docker-compose.yml
# docker compose up -d
Можно и вручную всё это сделать. В репозитории есть описание. Теперь можно идти на 3000 порт сервера и регистрировать учётку админа.
Принцип объединения устройств в единую сеть следующий:
Я объединил Windows, Linux и Mikrotik. Получилось всё без проблем. Узлы сети сразу же напрямую увидели себя по внутренним адресам сети ZeroTier. Заработали RDP, SSH, Winbox.
Вы можете назначить Mikrotik шлюзом для какой-то подсети, которая находится за ним. Клиенты, которые подключатся к общей mesh-сети, могут ходить в ту сеть через него. А какой-нибудь Linux сервер назначить шлюзом для доступа в другую инфраструктуру. То есть каждый узел может выступать в роли и клиента, и шлюза для других. Настраивается это очень просто, буквально в несколько кликов в веб интерфейсе.
Если клиенты не видят друг друга напрямую, то общаются через контроллер. По умолчанию локальный ZeroTier подключается к набору публичных серверов для связи клиентов, которые не могут через ваш сервер увидеть друг-друга. Например, если сервер не в публичном доступе для всех.
В ZTNET это отключается в разделе настроек ZT Controller, где вы можете создать так называемый Custom Planet, который будет работать только локально и никуда подключаться не будет. Вам нужно будет обеспечить к нему прямой доступ всех клиентов, либо опубликовав контроллер напрямую в интернете, либо пробросив к нему порт 9993/udp.
Я всё это настроил. Разобрался со всем за пару-тройку часов. Не могу подробно расписать установку клиентов и команды, потому что лимит на длину заметки. В сети всё это есть, там ничего сложного.
Продукт простой, функциональный, бесплатный и известный. Много кем поддерживается. Так что если нужно что-то подобное, то можете смело использовать. Единственное, я бы поискал какой-то другой GUI. Этот показался немного кривоват, хотя вся необходимая функциональность присутствует.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
———
ServerAdmin:
#vpn #network
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍137👎3
Расскажу, как можно быстро проанализировать трафик с любого роутера или шлюза, которые поддерживают отправку данных в формате Netflow. Как самый наглядный пример возьмём Mikrotik.
Ранее я уже рассказывал, как его трафик можно смотреть в режиме реального времени в Wireshark. Для этого его туда надо направить через Packet Sniffer и его возможность Streaming. Сегодня расскажу про более универсальный способ через отправку и анализ Netflow.
Допустим, вам надо быстро посмотреть, к каким DNS серверам у вас обращается оборудование в локальной сети. Для этого можно пытаться что-то разглядеть в IP ⇨ Firewall ⇨ Connections или в Torch сетевого интерфейса, но это неудобно.
Возьмём любую машину на базе Linux и поставим туда nfdump. Это консольная утилита для анализа NetFlow. В Debian/Ubuntu она есть в базовых репозитория:
В составе этого пакета также присутствует утилита nfcapd. Она работает в роли netflow collector, собирает и хранит данные о трафике, а nfdump в консоли анализирует. Так что запускаем сначала сборщик:
-z - сжимать данные
-l - директория, где храним дампы
-t - каждые 60 секунд записываем данные в файл
-p - сборщик работает на порту UDP 23456
-D - этот ключ запустит сборщика в режиме службы
Теперь идём в Mikrotik, открываем раздел IP ⇨ Traffic Flow ⇨ Enables. Открываем здесь же раздел Targets и добавляем наш сборщик:
◽️Src. Address: IP адрес МИкротика
◽️Dst. Address: IP адрес сборщика
◽️Port: 23456
Остальные параметры оставляем по умолчанию. Сохраняем. Как только польются данные о трафике, на сборщике в директории
Запускаем анализатор трафика nfdump:
Увидим в консоли информацию по всему собранному трафику. Её может быть много. Тут простой и интуитивный синтаксис для поиска нужных данных. Выводим только DNS запросы:
Можем агрегировать вывод для простоты восприятия. Объединим одинаковые потоки и отобразим только адрес источника и назначения:
Можем сузить поиск и дополнительно показать пакеты с конкретного IP адреса:
Таким образом можно быстро находить какие-то проблемные хосты. Например, которые пытаются что-то отправить по 25-му во вне, хотя у вас локальный почтовый сервер или его вообще нет. Можно быстро найти тех, кто сознательно или нет пытается использовать какой-то внешний DNS сервер и т.д.
Вообще, nfdump и его инструменты - популярная и известная программа. Вокруг неё много различной обвязки для долгосрочного хранения и визуализации данных. Например, можно запустить сборщик для долгосрочного хранения:
Если у вас несколько шлюзов и вы хотите разделить их трафик, то можно сделать это через ключ -n, добавив название источника, его IP адрес и директорию, где будут храниться данные:
В таком режиме он будет собирать данные и автоматически раскладывать их по директориям в формате %Y/%m/%d/%H, то есть year/month/day/hour. Потом можно легко вернуться к нужному интервалу и посмотреть трафик, проанализировать его каким-то софтом. Например, nfsen-ng.
Nfdump наиболее простой и дешёвый по ресурсам инструмент для работы с NetFlow. Подходит и для анализа в режиме реального времени, и для долгосрочного хранения.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
———
ServerAdmin:📱 Telegram | 🌐 Сайт | 📲 MAX
#netflow #mikrotik #network
Ранее я уже рассказывал, как его трафик можно смотреть в режиме реального времени в Wireshark. Для этого его туда надо направить через Packet Sniffer и его возможность Streaming. Сегодня расскажу про более универсальный способ через отправку и анализ Netflow.
Допустим, вам надо быстро посмотреть, к каким DNS серверам у вас обращается оборудование в локальной сети. Для этого можно пытаться что-то разглядеть в IP ⇨ Firewall ⇨ Connections или в Torch сетевого интерфейса, но это неудобно.
Возьмём любую машину на базе Linux и поставим туда nfdump. Это консольная утилита для анализа NetFlow. В Debian/Ubuntu она есть в базовых репозитория:
# apt install nfdumpВ составе этого пакета также присутствует утилита nfcapd. Она работает в роли netflow collector, собирает и хранит данные о трафике, а nfdump в консоли анализирует. Так что запускаем сначала сборщик:
# nfcapd -z -l /mnt/mikrotik -t 60 -p 23456-z - сжимать данные
-l - директория, где храним дампы
-t - каждые 60 секунд записываем данные в файл
-p - сборщик работает на порту UDP 23456
-D - этот ключ запустит сборщика в режиме службы
Теперь идём в Mikrotik, открываем раздел IP ⇨ Traffic Flow ⇨ Enables. Открываем здесь же раздел Targets и добавляем наш сборщик:
◽️Src. Address: IP адрес МИкротика
◽️Dst. Address: IP адрес сборщика
◽️Port: 23456
Остальные параметры оставляем по умолчанию. Сохраняем. Как только польются данные о трафике, на сборщике в директории
/mnt/mikrotik начнут появляться файлы вида nfcapd.202512250054 nfcapd.202512250056 и т.д. Они нам и нужны.Запускаем анализатор трафика nfdump:
# nfdump -R /mnt/mikrotikУвидим в консоли информацию по всему собранному трафику. Её может быть много. Тут простой и интуитивный синтаксис для поиска нужных данных. Выводим только DNS запросы:
# nfdump -R /mnt/mikrotik 'dst port 53'Можем агрегировать вывод для простоты восприятия. Объединим одинаковые потоки и отобразим только адрес источника и назначения:
# nfdump -R /mnt/mikrotik 'dst port 53' -A srcip,dstipМожем сузить поиск и дополнительно показать пакеты с конкретного IP адреса:
# nfdump -R /mnt/mikrotik 'src ip 192.168.137.10 and dst port 53' -A srcip,dstipТаким образом можно быстро находить какие-то проблемные хосты. Например, которые пытаются что-то отправить по 25-му во вне, хотя у вас локальный почтовый сервер или его вообще нет. Можно быстро найти тех, кто сознательно или нет пытается использовать какой-то внешний DNS сервер и т.д.
Вообще, nfdump и его инструменты - популярная и известная программа. Вокруг неё много различной обвязки для долгосрочного хранения и визуализации данных. Например, можно запустить сборщик для долгосрочного хранения:
# nfcapd -D -S 2 -w /mnt/netflow -p 23456Если у вас несколько шлюзов и вы хотите разделить их трафик, то можно сделать это через ключ -n, добавив название источника, его IP адрес и директорию, где будут храниться данные:
# nfcapd -z -t 60 -D -S 2 -p 23456 -n r01,192.168.137.1,/mnt/r01 -n r02,192.168.161.1,/mnt/r02В таком режиме он будет собирать данные и автоматически раскладывать их по директориям в формате %Y/%m/%d/%H, то есть year/month/day/hour. Потом можно легко вернуться к нужному интервалу и посмотреть трафик, проанализировать его каким-то софтом. Например, nfsen-ng.
Nfdump наиболее простой и дешёвый по ресурсам инструмент для работы с NetFlow. Подходит и для анализа в режиме реального времени, и для долгосрочного хранения.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
———
ServerAdmin:
#netflow #mikrotik #network
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍149👎1
В одном из недавних видео увидел обзор сетевого сканера Scanopy, который умеет автоматически искать новые узлы и добавлять их на схему. По описанию работы и внешнему виду всё понравилось, поэтому решил попробовать. Развернул у себя дома и поразбирался с ним. Для тех, кто не захочет читать всю заметку, сразу передам суть:
◽️Проект новый, ещё не настоялся. Для домашней или тестовой инфраструктуры сойдёт, в прод я бы пока не ставил.
◽️Выглядит красиво, реально всё делает автоматически: ищет узлы, сканирует порты, сам определяет, как может, работающие сервисы, добавляет всё это на схему.
◽️Возможностей гибких настроек мало, сами настройки неинтуитивны. Я некоторое время возился, пока разобрался, как там всё устроено.
В итоге принял решение дома его оставить. У меня много всевозможных сетевых устройств (компы, ноуты, сервера, камеры, бытовые устройства, свитчи, смартфоны). Вручную рисовать схемы лень, особо не надо. Смотреть на неизвестное устройство иду в DHCP-сервер. Даже в таком виде, как это делает Scanopy, выглядит неплохо. Лучше, чем ничего, и красивее, чем я нарисовал в Zabbix 😁.
Scanopy состоит из трёх компонентов:
1️⃣ Сервер с веб интерфейсом
2️⃣ Сканирующий агент
3️⃣ СУБД Postgresql для хранения состояния
Всё это упаковано в Docker и описано в Compose. Запускается в 3 действия:
Идём в http://<server-ip>:60072 и создаём учётку администратора. Scanopy определяет локальную сеть, в которой работает, автоматически запускает сканирование сети и построение схемы. То есть даже настраивать ничего не надо. Развернули, зашли, выполнили пару шагов для регистрации и процесс пошёл.
Для быстрого запуска в LXC контейнере Proxmox есть готовый скрипт из набора Proxmox VE Helper-Scripts. Думаю, у себя в таком исполнении установлю.
Сканирование сети длится относительно долго (у меня минут 15), в зависимости от количества узлов. Для каждого узла сканируются все открытые порты и определяются службы по типу того, как это делает Nmap. Возможно он, или, как минимум, признаки служб из его набора используются для определения. В документации не уточнён этот момент. Просто указано, что написан сканер с распознаванием служб по различным признакам.
Далее для узлов делаются более тонкие настройки - указание имени, редактирование служб, настройка связей, расположение на схеме и т.д. В целом, получается наглядно и симпатично, особенно если доработать схему самому. Но даже автоматически нормально получается.
Вместо своей схемы, которую я ещё не доработал, покажу примеры с сайта, как это может выглядеть. Прикрепил некоторые картинки.
В целом, продукт интересный. Если получится развитие, то будет неплохо. А автор, судя по всему, задумал развивать, так как сразу одновременно с self-hosted версией, сделал платную по модели SaaS, написал документацию. Так что пожелаю ему успехов в этом деле. Думаю, подобная программа многим упростит рутину.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
———
ServerAdmin:📱 Telegram | 🌐 Сайт | 📲 MAX
#network
◽️Проект новый, ещё не настоялся. Для домашней или тестовой инфраструктуры сойдёт, в прод я бы пока не ставил.
◽️Выглядит красиво, реально всё делает автоматически: ищет узлы, сканирует порты, сам определяет, как может, работающие сервисы, добавляет всё это на схему.
◽️Возможностей гибких настроек мало, сами настройки неинтуитивны. Я некоторое время возился, пока разобрался, как там всё устроено.
В итоге принял решение дома его оставить. У меня много всевозможных сетевых устройств (компы, ноуты, сервера, камеры, бытовые устройства, свитчи, смартфоны). Вручную рисовать схемы лень, особо не надо. Смотреть на неизвестное устройство иду в DHCP-сервер. Даже в таком виде, как это делает Scanopy, выглядит неплохо. Лучше, чем ничего, и красивее, чем я нарисовал в Zabbix 😁.
Scanopy состоит из трёх компонентов:
Всё это упаковано в Docker и описано в Compose. Запускается в 3 действия:
# curl https://get.docker.com | bash -# curl -O https://raw.githubusercontent.com/scanopy/scanopy/refs/heads/main/docker-compose.yml# docker compose up -dИдём в http://<server-ip>:60072 и создаём учётку администратора. Scanopy определяет локальную сеть, в которой работает, автоматически запускает сканирование сети и построение схемы. То есть даже настраивать ничего не надо. Развернули, зашли, выполнили пару шагов для регистрации и процесс пошёл.
Для быстрого запуска в LXC контейнере Proxmox есть готовый скрипт из набора Proxmox VE Helper-Scripts. Думаю, у себя в таком исполнении установлю.
Сканирование сети длится относительно долго (у меня минут 15), в зависимости от количества узлов. Для каждого узла сканируются все открытые порты и определяются службы по типу того, как это делает Nmap. Возможно он, или, как минимум, признаки служб из его набора используются для определения. В документации не уточнён этот момент. Просто указано, что написан сканер с распознаванием служб по различным признакам.
Далее для узлов делаются более тонкие настройки - указание имени, редактирование служб, настройка связей, расположение на схеме и т.д. В целом, получается наглядно и симпатично, особенно если доработать схему самому. Но даже автоматически нормально получается.
Вместо своей схемы, которую я ещё не доработал, покажу примеры с сайта, как это может выглядеть. Прикрепил некоторые картинки.
В целом, продукт интересный. Если получится развитие, то будет неплохо. А автор, судя по всему, задумал развивать, так как сразу одновременно с self-hosted версией, сделал платную по модели SaaS, написал документацию. Так что пожелаю ему успехов в этом деле. Думаю, подобная программа многим упростит рутину.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
———
ServerAdmin:
#network
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍152👎2
На днях до глубокой ночи занимался настройкой одиночного гипервизора Proxmox, потому что кое-что не получалось. Нужно было ложиться спать, но не могу уснуть с недоделанной задачей. В итоге так и лёг. Утром проснулся и понял, где ошибся. Мысль как бы невзначай сама пришла. А вот то, что настраивал, расскажу вам. Это может кому-то пригодиться.
Есть одиночный выделенный сервер с одним внешним IP под PVE. Он будет работать в связке с другими, но связь только через интернет по VPN. Тут есть 2 варианта организации сети:
1️⃣ Настраиваем на гипервизоре файрвол, NAT, возможно SDN с DHCP, пробрасываем порты в виртуальные машины и там настраиваем всё, что нужно. Например, VPN сервер.
➕ Простота и скорость настроек.
➖ Настраивать нужно сам гипервизор и потом бэкапить его настройки. Это осложняет перенос, если нужно переехать. Да и в целом концепция с настройками чего-то на самом гипервизоре не очень удобна. От уровня железа лучше абстрагироваться, перенося всё в виртуальные машины. Сам гипервизор становится точкой входа в инфраструктуру, что тоже не очень удобно и безопасно.
2️⃣ На гипервизоре настраивается виртуальная машина в роли шлюза. В неё прокидывается внешний IP адрес. Она становится шлюзом по умолчанию для всех виртуалок и самого гипервизора.
➕ Все настройки внутри VM, которую можно забэкапить и перенести. На гипервизоре настраивается только сеть и больше ничего. Внутри виртуальной машины можно настроить всё, что угодно, ни в чём себя не ограничивая. Это может быть CHR с RouterOS или OPNSense.
➖ Более сложные сетевые настройки и очень желательно постоянный доступ по IP-KVM. У некоторых провайдеров бывают проблемы с такой схемой из-за их особенностей сети. Если VM со шлюзом не поднимется по какой-то причине, доступа к гипервизору не будет.
Есть третий вариант - купить несколько IP адресов на один сервер. Если сервера дорогие, то экономить на IP смысла нет, лучше заказать. Это и проще, и функциональнее. Я так часто делал. Но если сервак бюджетный, то переплачивать за /29 или /28 подсеть, а с дедиками обычно сразу подсеть продают, не хочется. Там цена адресов может быть сопоставима с самим сервером.
Я настраивал сеть по второму примеру. Нарисовал схему, как это выглядит на практике, и прикрепил внизу. Пример взял с реально настроенного сервера. Пишу по шагам, как настраивал.
1️⃣ На железном сервере 1 сетевой интерфейс
2️⃣ Создаю на этом сервере бридж
3️⃣ Добавляю ещё один бридж
4️⃣ Проверяю внимательно настройки и перезагружаю сервер. После перезагрузки он поднимется с двумя настроенными интерфейсами:
◽️
◽️
5️⃣ Создаю виртуальную машину под шлюз, подключаю к ней
6️⃣ Переношу настройки внешнего IP адреса с
7️⃣ Комментирую настройки внешнего IP адреса на гипервизоре, чтобы они остались только внутри VM.
8️⃣ Перезагружаю гипервизор и подключаюсь по внешнему IP к VM со шлюзом.
9️⃣ Настраиваю проброс портов со шлюза на гипервизор, чтобы к нему был доступ.
Схема полностью рабочая. Описывал её в своей старой статье по организации сети в PVE. В Selectel она нормально работает. Я ошибся с тем, что временно на VM во время настройки сделал выход в интернет через гипервизор, а потом забыл поменять шлюз по умолчанию. После перезагрузки терял доступ к гипервизору.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
———
ServerAdmin:📱 Telegram | 🌐 Сайт | 📲 MAX
#proxmox #network
Есть одиночный выделенный сервер с одним внешним IP под PVE. Он будет работать в связке с другими, но связь только через интернет по VPN. Тут есть 2 варианта организации сети:
Есть третий вариант - купить несколько IP адресов на один сервер. Если сервера дорогие, то экономить на IP смысла нет, лучше заказать. Это и проще, и функциональнее. Я так часто делал. Но если сервак бюджетный, то переплачивать за /29 или /28 подсеть, а с дедиками обычно сразу подсеть продают, не хочется. Там цена адресов может быть сопоставима с самим сервером.
Я настраивал сеть по второму примеру. Нарисовал схему, как это выглядит на практике, и прикрепил внизу. Пример взял с реально настроенного сервера. Пишу по шагам, как настраивал.
eth0 с IP адресом 45.95.177.210. Ставлю на этот сервер PVE. Доступ к веб интерфейсу, соответственно, по этому IP адресу.vmbr0 и добавляю в него интерфейс eth0. Сетевые настройки IP адреса из eth0 переношу в vmbr0. Делаю это напрямую в файле /etc/network/interfaces, так как через веб интерфейс PVE не получится.vmbr1 без привязки к физическому интерфейсу. Этот бридж будет использоваться для связи виртуальных машин и гипервизора между собой.◽️
vmbr0 - внешний IP адрес◽️
vmbr1 - локальный IP адресvmbr0 и vmbr1. Ставлю эту VM в автозагрузку, чтобы поднималась вместе с гипервизором.vmbr0 гипервизора на сетевой интерфейс VM, где подключен vmbr0. На vmbr1 настраиваю локальный IP адрес и убеждаюсь, что гипервизор и виртуалка видят друг друга.Схема полностью рабочая. Описывал её в своей старой статье по организации сети в PVE. В Selectel она нормально работает. Я ошибся с тем, что временно на VM во время настройки сделал выход в интернет через гипервизор, а потом забыл поменять шлюз по умолчанию. После перезагрузки терял доступ к гипервизору.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
———
ServerAdmin:
#proxmox #network
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍149👎2