Расскажу кратенько с конкретными примерами, как я настраиваю ограничение на доступ к серверам и сервисам по статическим IP адресам и потом подключаюсь к ним, используя некоторое количество арендованных VPS для этих целей.
Я уже давно практикую и остальным советую не оставлять публичный доступ через интернет к сервисам, которые не являются публичными. Например, тот же SSH я открываю только для белого списка своих IP адресов. Для iptables это обычно выглядит так:
В скрипте с правилами задана переменная со списком моих IP адресов и правило для SSH на его основе.
На VPS с перечисленными IP адресами настроены сервера OpenVPN. Они используются для различных задач, в том числе в качестве шлюзов для подключения к закрытым серверам. При подключении со своих рабочих машин я не направляю весь трафик в VPN. Это неудобно и мешает работе. В общем случае я использую прямой выход в интернет для типовых задач в виде сёрфинга в интернете, просмотра видео и т.д.
При подключении по VPN я получаю только те маршруты, что мне нужны. Например, я хочу подключаться к серверу c IP адресом 233.129.58.85 через конкретный OpenVPN сервер. Я иду на него и добавляю на сервере к конфигурации, привязанной к сертификату, который я использую при подключении, следующую настройку:
При подключении по VPN ко мне в систему приедет маршрут до 233.129.58.85 через этот сервер. Подключение по SSH к этому серверу пойдёт через VPN. В настройке маршрута можно указать не только IP адрес, но и DNS имя. Примерно так:
Чтобы это сработало, в конфигурации клиента, для которого добавлен такой маршрут, должен быть добавлен параметр:
В итоге на рабочей машине у меня настроен клиент OpenVPN с готовыми подключениями к различным VPN серверам. Когда мне надо подключиться к той или иной инфраструктуре, я подключаюсь к нужному VPN серверу и получаю маршруты только туда. Всё остальное остаётся неизменным. Весь трафик в VPN я не направляю, уже существующие соединения не рвутся. Одновременно могут быть активны разные OpenVPN соединения. Все маршруты управляются с серверов. На самом клиенте я ничего не меняю.
В такую схему легко добавляются новые VPS, новые пользователи (❗️), новые сертификаты со своими привязанными к ним настройками, и всё это управляется централизованно через сервера. Сами клиенты трогать не надо.
📌 Полезные ссылки по теме:
▪️Основные преимущества OpenVPN сервера
▪️Настройка allow-pull-fqdn
▪️Одновременный запуск нескольких клиентов OpenVPN
▪️Запуск OpenVPN сервера на разных внешних IP адресах
▪️Запускаем OpenVPN сервер за 443 портом веб сервера
На днях на одном из моих серверов протух CA, который был выпущен 10 лет назад. Такие встречаются долгожители. И это не первый случай. Писал и заметки здесь по этой теме, и статья на сайте есть.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#openvpn
Я уже давно практикую и остальным советую не оставлять публичный доступ через интернет к сервисам, которые не являются публичными. Например, тот же SSH я открываю только для белого списка своих IP адресов. Для iptables это обычно выглядит так:
SSH_WLIST=100.189.229.125,141.73.66.12,187.91.13.196,83.208.103.44,194.139.219.214
iptables -A INPUT -i enp5s0 -s $SSH_WLIST -p tcp --dport 22 -j ACCEPT
В скрипте с правилами задана переменная со списком моих IP адресов и правило для SSH на его основе.
На VPS с перечисленными IP адресами настроены сервера OpenVPN. Они используются для различных задач, в том числе в качестве шлюзов для подключения к закрытым серверам. При подключении со своих рабочих машин я не направляю весь трафик в VPN. Это неудобно и мешает работе. В общем случае я использую прямой выход в интернет для типовых задач в виде сёрфинга в интернете, просмотра видео и т.д.
При подключении по VPN я получаю только те маршруты, что мне нужны. Например, я хочу подключаться к серверу c IP адресом 233.129.58.85 через конкретный OpenVPN сервер. Я иду на него и добавляю на сервере к конфигурации, привязанной к сертификату, который я использую при подключении, следующую настройку:
push "route 233.129.58.85 255.255.255.255"
При подключении по VPN ко мне в систему приедет маршрут до 233.129.58.85 через этот сервер. Подключение по SSH к этому серверу пойдёт через VPN. В настройке маршрута можно указать не только IP адрес, но и DNS имя. Примерно так:
push "route ya.ru 255.255.255.255"
Чтобы это сработало, в конфигурации клиента, для которого добавлен такой маршрут, должен быть добавлен параметр:
allow-pull-fqdn
В итоге на рабочей машине у меня настроен клиент OpenVPN с готовыми подключениями к различным VPN серверам. Когда мне надо подключиться к той или иной инфраструктуре, я подключаюсь к нужному VPN серверу и получаю маршруты только туда. Всё остальное остаётся неизменным. Весь трафик в VPN я не направляю, уже существующие соединения не рвутся. Одновременно могут быть активны разные OpenVPN соединения. Все маршруты управляются с серверов. На самом клиенте я ничего не меняю.
В такую схему легко добавляются новые VPS, новые пользователи (❗️), новые сертификаты со своими привязанными к ним настройками, и всё это управляется централизованно через сервера. Сами клиенты трогать не надо.
📌 Полезные ссылки по теме:
▪️Основные преимущества OpenVPN сервера
▪️Настройка allow-pull-fqdn
▪️Одновременный запуск нескольких клиентов OpenVPN
▪️Запуск OpenVPN сервера на разных внешних IP адресах
▪️Запускаем OpenVPN сервер за 443 портом веб сервера
На днях на одном из моих серверов протух CA, который был выпущен 10 лет назад. Такие встречаются долгожители. И это не первый случай. Писал и заметки здесь по этой теме, и статья на сайте есть.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#openvpn
Telegram
ServerAdmin.ru
В настоящее время есть много технологий VPN, с помощью которых можно объединять подсети и подключать к ним внешних клиентов. Речь идёт не о блокировках и всем, что с этим связано, а об условно корпоративных VPN. Определённую популярность набрали сервисы на…
Открытый практикум Linux by Rebrain: RAID массивы
После регистрации мы отправим вам подарок! Вы сможете найти его в ответном письме.
👉Регистрация
Время проведения:
21 мая (среда) в 20:00 по МСК
Программа практикума:
▫️Что такое RAID массив?
▪️Некоторые типы RAID массивов
▫️Практика работы с RAID массивами
Кто ведёт?
Андрей Буранов — специалист по UNIX-системам в компании VK, входит в топ 3 лучших преподавателей образовательных порталов. 10+ лет опыта работы с ОС Linux и 8+ лет опыта преподавания.
Бесплатные практикумы по DevOps, Linux, Networks и Golang от REBRAIN каждую неделю. Подключайтесь!
Реклама. ООО "РЕБРЕИН", ИНН: 7727409582, erid: 2W5zFHHfSaL
После регистрации мы отправим вам подарок! Вы сможете найти его в ответном письме.
👉Регистрация
Время проведения:
21 мая (среда) в 20:00 по МСК
Программа практикума:
▫️Что такое RAID массив?
▪️Некоторые типы RAID массивов
▫️Практика работы с RAID массивами
Кто ведёт?
Андрей Буранов — специалист по UNIX-системам в компании VK, входит в топ 3 лучших преподавателей образовательных порталов. 10+ лет опыта работы с ОС Linux и 8+ лет опыта преподавания.
Бесплатные практикумы по DevOps, Linux, Networks и Golang от REBRAIN каждую неделю. Подключайтесь!
Реклама. ООО "РЕБРЕИН", ИНН: 7727409582, erid: 2W5zFHHfSaL
Я анонсировал ранее подборку сайтов IT блогеров со статьями на различные темы, связанные с настройкой и эксплуатацией IT систем. Собралось небольшое сообщество авторов. Полный список сайтов есть в прошлой подборке. А пока анонс новых статей тех авторов, кто согласился участвовать и прислал свои материалы.
⇨ Разрабатываем мини-автоматизацию по оповещению администратора о факте НСД в Astra Linux
Оповещения администратора безопасности при попытках подключения незарегистрированных носителей информации к Astra Linux. Реализовано через правило udev, которое запускает скрипт при подключении носителя, скрипт отправляет запись в локальный syslog сервер, а тот пересылает в удалённый.
⇨ Человеческий фактор или вредные советы по Astra Linux
Несколько примеров из практики на тему того, как не работают внедрённые регламенты и правила.
⇨ Установка Astra Linux 1.8. Как установить и что нового?
Подробная статья на тему установки новой Astra Linux 1.8 от создания загрузочной флешки до разбивки диска и начальной настройки.
🔥 Windows и оперативная память
Подробная статья на тему работы с памятью в Windows: чем виртуальная отличается от физической, как происходит выделение памяти процессам, что такое рабочий набор, swap и др. Работа с утилитами RAMMap, Process Explorer, Testlimit, Strings, NotMyFault и poolmon. Кому не интересно всё это, можете перемотать в раздел Диспетчер задач Windows и память и посмотреть описание метрик памяти в диспетчере задач.
⇨ Как установить сертификат ECC (Elliptic Curve Cryptography) в Exchange Server
ECC сертификаты приехали в Exchange. Я давно начал их использовать для SSH и вам советую. Если быть точным, ECC - это алгоритм Elliptic Curve Cryptography (криптография на эллиптических кривых), а я имею ввиду ключи на базе алгоритма Ed25519, который основан на эллиптических кривых.
⇨ Как установить RSAT на Windows 11
Установка Remote Server Administration Tools для управления различными ролями Windows Server: AD, DNS, DHCP и другие.
⇨ Как исправить спам-сообщения в средстве просмотра очереди Exchange Server
Письма, отправленные на несуществующие адреса в вашем домене, обрабатываются, формируются отчёты о недоставке (NDR) и отправляются обратно отправителю. В статье рассказано, как с этим бороться.
⇨ Как настроить учетную запись службы для присоединения к домену
Создание учётки с ограниченными правами, предназначенной только для присоединения устройств к домену.
⇨ Установка контроллера ZeroTier на свой сервер с помощью ZTNET
Selfhosted размещение ZeroTier контроллера со встроенной панелью администратора.
⇨ Построение защищенных виртуальных сетей с помощью Nebula
Объединение распределенных устройств в отдельную изолированную сеть с помощью Nebula.
⇨ Собираем docker образ DNS сервера Unbound
Создание собственного Docker образа популярного DNS сервера. Процесс рассмотрен очень подробно, так что материал можно использовать как пример сборки собственных образов других сервисов.
⇨ Поднимаем свой DNS сервер Unbound и блокировщик рекламы Pihole в docker
К собранному ранее образу с Unbound добавляется Pi-hole для блокировки рекламы.
⇨ Пользователи в Linux
Небольшая справочная статья по работе с пользователями в Linux - создание, удаление и т.д.
⇨ Использование sudo в Linux
База по установке и настройке Sudo. Кому любопытно, когда-то давно я написал статью Sudo не нужен при работе в консоли сервера.
⇨ SSH – Тонкая настройка клиента в Linux: config файл и ssh-agent
Примеры некоторых настроек клиента SSH, а также использование ssh-agent.
⇨ Ollama — Локальный ИИ на вашем Linux ПК
Установка Ollama и запуск на ней бесплатных моделей разной сложности.
⇨ RabbitMQ. Практика. Troubleshooting. CLI. Отсутствует утилита rabbitmqadmin
Небольшая заметка по установке консольной утилиты rabbitmqadmin.
⇨ Как полностью удалить Microsoft Office с компьютера
Использование утилиты Office Scrubber для очистки компа от следов офиса.
⇨ Основы SQL на примере PostgreSQL
База по синтаксису SQL на основе примеров в PostgreSQL.
#статьи
⇨ Разрабатываем мини-автоматизацию по оповещению администратора о факте НСД в Astra Linux
Оповещения администратора безопасности при попытках подключения незарегистрированных носителей информации к Astra Linux. Реализовано через правило udev, которое запускает скрипт при подключении носителя, скрипт отправляет запись в локальный syslog сервер, а тот пересылает в удалённый.
⇨ Человеческий фактор или вредные советы по Astra Linux
Несколько примеров из практики на тему того, как не работают внедрённые регламенты и правила.
⇨ Установка Astra Linux 1.8. Как установить и что нового?
Подробная статья на тему установки новой Astra Linux 1.8 от создания загрузочной флешки до разбивки диска и начальной настройки.
🔥 Windows и оперативная память
Подробная статья на тему работы с памятью в Windows: чем виртуальная отличается от физической, как происходит выделение памяти процессам, что такое рабочий набор, swap и др. Работа с утилитами RAMMap, Process Explorer, Testlimit, Strings, NotMyFault и poolmon. Кому не интересно всё это, можете перемотать в раздел Диспетчер задач Windows и память и посмотреть описание метрик памяти в диспетчере задач.
⇨ Как установить сертификат ECC (Elliptic Curve Cryptography) в Exchange Server
ECC сертификаты приехали в Exchange. Я давно начал их использовать для SSH и вам советую. Если быть точным, ECC - это алгоритм Elliptic Curve Cryptography (криптография на эллиптических кривых), а я имею ввиду ключи на базе алгоритма Ed25519, который основан на эллиптических кривых.
⇨ Как установить RSAT на Windows 11
Установка Remote Server Administration Tools для управления различными ролями Windows Server: AD, DNS, DHCP и другие.
⇨ Как исправить спам-сообщения в средстве просмотра очереди Exchange Server
Письма, отправленные на несуществующие адреса в вашем домене, обрабатываются, формируются отчёты о недоставке (NDR) и отправляются обратно отправителю. В статье рассказано, как с этим бороться.
⇨ Как настроить учетную запись службы для присоединения к домену
Создание учётки с ограниченными правами, предназначенной только для присоединения устройств к домену.
⇨ Установка контроллера ZeroTier на свой сервер с помощью ZTNET
Selfhosted размещение ZeroTier контроллера со встроенной панелью администратора.
⇨ Построение защищенных виртуальных сетей с помощью Nebula
Объединение распределенных устройств в отдельную изолированную сеть с помощью Nebula.
⇨ Собираем docker образ DNS сервера Unbound
Создание собственного Docker образа популярного DNS сервера. Процесс рассмотрен очень подробно, так что материал можно использовать как пример сборки собственных образов других сервисов.
⇨ Поднимаем свой DNS сервер Unbound и блокировщик рекламы Pihole в docker
К собранному ранее образу с Unbound добавляется Pi-hole для блокировки рекламы.
⇨ Пользователи в Linux
Небольшая справочная статья по работе с пользователями в Linux - создание, удаление и т.д.
⇨ Использование sudo в Linux
База по установке и настройке Sudo. Кому любопытно, когда-то давно я написал статью Sudo не нужен при работе в консоли сервера.
⇨ SSH – Тонкая настройка клиента в Linux: config файл и ssh-agent
Примеры некоторых настроек клиента SSH, а также использование ssh-agent.
⇨ Ollama — Локальный ИИ на вашем Linux ПК
Установка Ollama и запуск на ней бесплатных моделей разной сложности.
⇨ RabbitMQ. Практика. Troubleshooting. CLI. Отсутствует утилита rabbitmqadmin
Небольшая заметка по установке консольной утилиты rabbitmqadmin.
⇨ Как полностью удалить Microsoft Office с компьютера
Использование утилиты Office Scrubber для очистки компа от следов офиса.
⇨ Основы SQL на примере PostgreSQL
База по синтаксису SQL на основе примеров в PostgreSQL.
#статьи
Покажу небольшой bash трюк, который поможет грепнуть информацию, когда обычный способ не работает. Демонстрирую сразу на примере, с которым сам постоянно сталкиваюсь.
Вам нужно узнать, есть ли необходимый модуль в составе Nginx. По идее всё просто:
На выходе портянка, в которой глазами трудно что-то найти. Пробуем грепнуть:
Вообще ноль изменений. И причины тут на самом деле не одна, а сразу две:
1️⃣ nginx -V выводит информацию не в стандартный поток с данными stdout, с которым работает grep и прочие консольные утилиты, а в stderr;
2️⃣ все модули перечислены одной строкой, так что грепнуть её содержимое не получится.
Показываю решение обоих проблем:
Видим нужный нам модуль. Я сначала через
В принципе, можно обойтись без разбивки одной строки на несколько, так как grep скорее всего подсветит найденную фразу, но это зависит от различных настроек. Где-то может и не подсветить. Если всё же разбить, то будет нагляднее.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#bash
Вам нужно узнать, есть ли необходимый модуль в составе Nginx. По идее всё просто:
# nginx -V
На выходе портянка, в которой глазами трудно что-то найти. Пробуем грепнуть:
# nginx -V | grep http_realip_module
Вообще ноль изменений. И причины тут на самом деле не одна, а сразу две:
Показываю решение обоих проблем:
# nginx -V 2>&1 | tr ' ' '\n' | grep http_realip_module
--with-http_realip_module
Видим нужный нам модуль. Я сначала через
2>&1
направил поток stderr в stdout, чтобы с ним можно было работать консольными утилитами, а затем с помощью tr
заменил все пробелы символами перехода на новую строку \n
. В итоге у нас весь вывод nginx -V разбился на отдельные фразы, каждая в новой строке и после этого успешно грепнулся.В принципе, можно обойтись без разбивки одной строки на несколько, так как grep скорее всего подсветит найденную фразу, но это зависит от различных настроек. Где-то может и не подсветить. Если всё же разбить, то будет нагляднее.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#bash
Please open Telegram to view this post
VIEW IN TELEGRAM
⚠️ Terraform меняет правила игры в DevOps. Хотите освоить инструмент, с которым инфраструктура развертывается в несколько кликов?
⏰ На открытом вебинаре 20 мая в 20:00 МСК вы узнаете, как Terraform делает инфраструктуру управляемой, прозрачной и масштабируемой. Разберём ключевые понятия: провайдеры, состояние, модули и переменные. Вы узнаете, почему IaC стал золотым стандартом DevOps.
💪 Научитесь автоматизировать развёртывание ресурсов, избавьтесь от рутинной ручной работы и освободите время на действительно важные задачи.
👉 Регистрируйтесь прямо сейчас и получите скидку на программу обучения «DevOps-практики и инструменты»: https://clck.ru/3M6C8k
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
⏰ На открытом вебинаре 20 мая в 20:00 МСК вы узнаете, как Terraform делает инфраструктуру управляемой, прозрачной и масштабируемой. Разберём ключевые понятия: провайдеры, состояние, модули и переменные. Вы узнаете, почему IaC стал золотым стандартом DevOps.
💪 Научитесь автоматизировать развёртывание ресурсов, избавьтесь от рутинной ручной работы и освободите время на действительно важные задачи.
👉 Регистрируйтесь прямо сейчас и получите скидку на программу обучения «DevOps-практики и инструменты»: https://clck.ru/3M6C8k
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Парочка наглядных примеров вранья ИИ, в частности ChatGPT. Последнее время регулярно им пользуюсь, практически каждый день, для решения различных задач и поиска информации. Фактически он мне стал заменять поиск. Я не использую каких-то больших промтов для решения масштабных задач. Скорее использую его как базу данных и расширенный поиск. Соответственно и пишу туда примерно то же самое, что я бы спросил у поисковика. Результат получается лучше.
При этом постоянно сталкиваюсь с тем, что ИИ врёт. Просто сходу придумывает факты, решения, ключи к утилитам и т.д. При этом не ставит под сомнение свои ответы, не делает акцент на том, что вот тут я выдумываю и могу быть не прав. Так как я уже специалист с опытом, мне это больших проблем не доставляет.
А как быть тем, кто только учится и использует в качестве помощника ИИ? По идее это делать нельзя, а в процессе обучения и наработки опыта вообще противопоказанно им пользоваться. Нужно всё перепроверять, а это потеря времени. А если ты не специалист, то узнаешь, что надо перепроверять только тогда, когда уже случится ошибка и тебе на неё кто-то укажет.
В примере с mount ошибка сразу видна, а вот в первом неочевидна, так как проверить её весьма затратно. И если перепроверять все результаты, которые выдал ИИ, то окажется, что самому составить список было бы быстрее. И такое случается нередко. Иногда ИИ ходит вокруг да около решения, предлагая тебе нерабочие варианты, а на отладку тратится времени больше, чем если бы ты сам его сделал с помощью подсказок со stackoverflow.
У меня отношение средненькое к современным ИИ. Зачастую не понимаю восторгов в их адрес. Да, пользоваться можно и нужно. Результат хороший в вопросах анализа и обобщения информации, клонировании контента в заданном стиле с заданными правками, создания изображений, инфографики. И очень посредственный в создании чего-то нового. Те же скрипты он пишет, но без отладки и исправления ошибок практически никогда не обходится. И это в довольно простых задачах, которые в общем-то можно сходу нагуглить. Более сложные не пытался решать, так как задач под это нет. Возможно у программистов другие выводы по этой теме.
#AI #chatgpt
При этом постоянно сталкиваюсь с тем, что ИИ врёт. Просто сходу придумывает факты, решения, ключи к утилитам и т.д. При этом не ставит под сомнение свои ответы, не делает акцент на том, что вот тут я выдумываю и могу быть не прав. Так как я уже специалист с опытом, мне это больших проблем не доставляет.
А как быть тем, кто только учится и использует в качестве помощника ИИ? По идее это делать нельзя, а в процессе обучения и наработки опыта вообще противопоказанно им пользоваться. Нужно всё перепроверять, а это потеря времени. А если ты не специалист, то узнаешь, что надо перепроверять только тогда, когда уже случится ошибка и тебе на неё кто-то укажет.
В примере с mount ошибка сразу видна, а вот в первом неочевидна, так как проверить её весьма затратно. И если перепроверять все результаты, которые выдал ИИ, то окажется, что самому составить список было бы быстрее. И такое случается нередко. Иногда ИИ ходит вокруг да около решения, предлагая тебе нерабочие варианты, а на отладку тратится времени больше, чем если бы ты сам его сделал с помощью подсказок со stackoverflow.
У меня отношение средненькое к современным ИИ. Зачастую не понимаю восторгов в их адрес. Да, пользоваться можно и нужно. Результат хороший в вопросах анализа и обобщения информации, клонировании контента в заданном стиле с заданными правками, создания изображений, инфографики. И очень посредственный в создании чего-то нового. Те же скрипты он пишет, но без отладки и исправления ошибок практически никогда не обходится. И это в довольно простых задачах, которые в общем-то можно сходу нагуглить. Более сложные не пытался решать, так как задач под это нет. Возможно у программистов другие выводы по этой теме.
#AI #chatgpt
Искал на днях материалы на тему Playwright. Это фреймворк для веб тестирования и автоматизации, более современный аналог Selenium. Последний я немного учил, но он довольно замороченный, с полтычка не освоишь. Playwright показался немного попроще в каких-то базовых вещах.
Рассказать сегодня хотел не об этом. Я попал на сайт к какому-то девопсу, где были материалы по Playwright. Я немного походил по нему и набрёл на раздел DevTools. Он там собрал то ли свои, то ли просто open source инструменты для решения простых прикладных задач. Вроде ничего особенного, но некоторые вещи я просто не знал, что вообще существуют. Всегда их делал вручную.
Покажу сразу на примерах, что мне показалось полезным:
- Docker Run to Docker Compose Converter
Отправляем в форму однострочник с
- Docker Compose to Docker Run Converter
И соответственно в обратную сторону преобразование из docker compose в однострочник для
- Bash Command Formatter
Эта штука тоже очень понравилась. Она длинный однострочник разбивает на строки с переходами через \ То есть вот такую колбасу:
Нарезает на кусочки:
Я тоже всегда это вручную делал, особенно для публикации сюда. Можно упростить себе задачу.
- URL Extractor
Просто кидаешь сюда любой текст, а на выходе получаешь набор ссылок, если они в нём присутствуют.
Там много всяких конвертеров и анализаторов синтаксиса для json, yaml, toml, csv. Не стал обращать на них внимание, так как их существует десятки. Обычно просто в гугле ищут что-то подобное, когда надо преобразовать. Посмотрите список, может вам что-то ещё приглянётся. Меня впечатлили только эти четыре штуки.
#devops #docker #bash
Рассказать сегодня хотел не об этом. Я попал на сайт к какому-то девопсу, где были материалы по Playwright. Я немного походил по нему и набрёл на раздел DevTools. Он там собрал то ли свои, то ли просто open source инструменты для решения простых прикладных задач. Вроде ничего особенного, но некоторые вещи я просто не знал, что вообще существуют. Всегда их делал вручную.
Покажу сразу на примерах, что мне показалось полезным:
- Docker Run to Docker Compose Converter
Отправляем в форму однострочник с
docker run
и получаем файл для docker compose. Вроде мелочь, но я всегда это делал вручную. Не думал, что кому-то придёт в голову написать конвертер.- Docker Compose to Docker Run Converter
И соответственно в обратную сторону преобразование из docker compose в однострочник для
docker run
. Не припоминаю, чтобы мне приходилось такие преобразования делать, но в тему к первому упоминаю.- Bash Command Formatter
Эта штука тоже очень понравилась. Она длинный однострочник разбивает на строки с переходами через \ То есть вот такую колбасу:
curl -v --url "smtp://mail.server.ru:25" --mail-from "root@server.ru" --mail-rcpt "user@gmail.com" --user 'root@server.ru:password123' --upload-file ~/mail.txt
Нарезает на кусочки:
curl -v \
--url "smtp://mail.server.ru:25" \
--mail-from "root@server.ru" \
--mail-rcpt "user@gmail.com" \
--user 'root@server.ru:password123' \
--upload-file ~/mail.txt
Я тоже всегда это вручную делал, особенно для публикации сюда. Можно упростить себе задачу.
- URL Extractor
Просто кидаешь сюда любой текст, а на выходе получаешь набор ссылок, если они в нём присутствуют.
Там много всяких конвертеров и анализаторов синтаксиса для json, yaml, toml, csv. Не стал обращать на них внимание, так как их существует десятки. Обычно просто в гугле ищут что-то подобное, когда надо преобразовать. Посмотрите список, может вам что-то ещё приглянётся. Меня впечатлили только эти четыре штуки.
#devops #docker #bash
«Скорость, экономия, контроль: как управлять проектами и клиентским сервисом в единой системе»
Покажем, как на платформе ITSM 365 создать типовой клиентский проект, а затем бесшовно и с минимумом затрат перейти к сервисному обслуживанию.
Что еще узнаете на встрече:
👉 Какие инструменты есть в системе для быстрого запуска проекта и контроля над его ходом
👉 Простая коммуникация между командами и с заказчиками: каким образом?
👉 Какие данные наследует сервисная поддержка после реализации проекта. Спойлер:
👉 Быстрый старт обслуживания: как подготовить систему к приему заявок за 15 минут
👉 Как автоматизировать рутину и вести всю работу по проектам и сервису в едином окне
👉 Аналитика по проектам и поддержке: что умеет оценивать система и насколько гибко ее можно настроить?
Нажмите, чтобы зарегистрироваться.
Ждем вас!
Обзор платформы от автора канала:
⇨ Обзор ITSM 365 – Service Desk система для малого и среднего бизнеса
Реклама, ООО «Смартнат» 6658396257, erid: 2SDnjc472kd
Please open Telegram to view this post
VIEW IN TELEGRAM
Часто возникают ситуации, когда хочется силами веб сервера закрыть доступ к какому-то непубличному ресурсу. Причём не обязательно у этого ресурса нет своей аутентификации. Если нет явной необходимости то и её стоит закрыть от посторонних глаз. Расскажу, какими способами это можно сделать в веб сервере Angie/Nginx.
1️⃣ Basic Authentication. Самый простой и быстрый способ, известный очень давно. Для аутентификации используется текстовый файл с сохранёнными там парами логин-пароль. Очевидное неудобство – этот файл нужно вести отдельно от любых других хранилищ учётных записей.
2️⃣ Модуль ngx_http_auth_request_module. Это модуль от команды Nginx, который работает относительно просто. Он создаёт подзапрос к какому-то внешнему сервису и если получает от него код ответа 2xx, доступ разрешается, если 401 и 403, то запрещается. В качестве внешнего сервиса могут использоваться разные системы с разными бэкендами для хранения учётных данных. Например, для аутентификации через LDAP обычно используют nginx-ldap-auth. Полная схема работы с ним есть в статье на сайте Nginx.
Удобство этой схемы в том, что конфигурация веб сервера не содержит в себе логики аутентификации, не привязана к ней. А внешний сервис может располагаться где угодно.
3️⃣ Модуль ngx_http_auth_ldap_module. Это внешний модуль стороннего разработчика для аутентификации через внешний LDAP сервис. Его отличие от предыдущего варианта в намного более простой настройке. Вся логика подключения к LDAP каталогу настраивается в конфигурации веб сервера. Он делает все запросы к каталогу и выполняет аутентификацию.
4️⃣ Модуль ngx_http_auth_spnego_module. Этот модуль позволяет настроить аутентификацию через Active Directory с помощью Kerberos. Его удобство относительно описанных выше способов в том, что если у вас браузер поддерживает сквозную аутентификацию Kerberos, то доменные пользователи будут автоматически попадать на закрытые ресурсы без необходимости отдельно вводить учётные данные.
5️⃣ Сервис SSO, например, Authentik. Решил вынести этот способ в отдельный пункт, хотя это и не совсем корректно. Это может быть комбинация различных методов аутентификации, так как тот же Authentik, к примеру, может выступать в качестве LDAP каталога, либо реализовывать тот же метод Basic Authentication, только с хранением учётных данных у себя.
Если будете использовать внешние модули, то удобнее взять Angie, так как там в базовом репозитории они все уже есть. Для Nginx скорее всего что-то придётся собирать самому в зависимости от дистрибутива. Где-то в репозиториях есть модули, где-то нет.
Современным и удобным способом является использование сервиса SSO. Наиболее известные - Keycloak, Authentik, Authelia, ZITADEL. Список составлен от сложного и тяжёлого к более простому и лёгкому. Они реализуют в том числе современные технологии типа OAuth2, OTP (one-time password), OpenID Connect и т.д. Но и, соответственно, требуют больше внимания и времени на настройку. Если какой-то модуль Nginx можно быстро установить и настроить, то с SSO придётся повозиться. Для простых ситуаций это может быть неоправданно.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#nginx #angie
Удобство этой схемы в том, что конфигурация веб сервера не содержит в себе логики аутентификации, не привязана к ней. А внешний сервис может располагаться где угодно.
Если будете использовать внешние модули, то удобнее взять Angie, так как там в базовом репозитории они все уже есть. Для Nginx скорее всего что-то придётся собирать самому в зависимости от дистрибутива. Где-то в репозиториях есть модули, где-то нет.
Современным и удобным способом является использование сервиса SSO. Наиболее известные - Keycloak, Authentik, Authelia, ZITADEL. Список составлен от сложного и тяжёлого к более простому и лёгкому. Они реализуют в том числе современные технологии типа OAuth2, OTP (one-time password), OpenID Connect и т.д. Но и, соответственно, требуют больше внимания и времени на настройку. Если какой-то модуль Nginx можно быстро установить и настроить, то с SSO придётся повозиться. Для простых ситуаций это может быть неоправданно.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#nginx #angie
Please open Telegram to view this post
VIEW IN TELEGRAM
Nginx
Restricting Access with HTTP Basic Authentication
Control access using HTTP Basic authentication, and optionally in combination with IP address-based access control.
⚠️ Как настроить Nginx и Angie для стабильной и быстрой работы при большом количестве запросов?
👉 Приглашаем на вебинар: Оптимизация Nginx и Angie под высокие нагрузки
На вебинаре вы узнаете:
- Как оптимизировать системные параметры для повышения производительности
- Как правильно настроить TLS и сократить накладные расходы на шифрование
- Какие возможности по кэшированию есть у Nginx и Angie и как их эффективно использовать
- Как измерять и анализировать клиентскую и серверную производительность
В результате вебинара вы:
- Научитесь выявлять и настраивать ключевые параметры, влияющие на производительность
- Сможете оптимизировать конфигурацию Nginx и Angie под конкретные сценарии нагрузки
- Попробуете применять техники кэширования и настройки TLS для снижения нагрузки
- Поймёте, как оценивать эффективность настройки и устранять узкие места
Все участники получат скидку на большое обучение «Инфраструктура высоконагруженных систем».
👉 Для участия зарегистрируйтесь: https://clck.ru/3M9Dua
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
👉 Приглашаем на вебинар: Оптимизация Nginx и Angie под высокие нагрузки
На вебинаре вы узнаете:
- Как оптимизировать системные параметры для повышения производительности
- Как правильно настроить TLS и сократить накладные расходы на шифрование
- Какие возможности по кэшированию есть у Nginx и Angie и как их эффективно использовать
- Как измерять и анализировать клиентскую и серверную производительность
В результате вебинара вы:
- Научитесь выявлять и настраивать ключевые параметры, влияющие на производительность
- Сможете оптимизировать конфигурацию Nginx и Angie под конкретные сценарии нагрузки
- Попробуете применять техники кэширования и настройки TLS для снижения нагрузки
- Поймёте, как оценивать эффективность настройки и устранять узкие места
Все участники получат скидку на большое обучение «Инфраструктура высоконагруженных систем».
👉 Для участия зарегистрируйтесь: https://clck.ru/3M9Dua
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Существует удобный и функциональный инструмент для добавления интерактива в shell скрипты под названием Gum. Я посмотрел несколько примеров, в том числе на ютубе, как люди решают те или иные задачи с его помощью. Синтаксис очень простой, особо разбираться не надо. Можно сходу брать и писать скрипт.
Я для примера решил сделать поиск по директории с выводом топ 10 самых больших файлов, из которых можно какие-то выбрать и удалить. Сделал просто в лоб на bash – сформировал список, отправил его в gum и добавил действие для выбранных файлов:
Понял, что всё получилось и решил как-то это усложнить и сделать более удобным. Дай, думаю, попрошу Chatgpt что-то написать. На самом деле не рассчитывал на успех, так как это не особо популярный инструмент. Откуда ему взять навык написания скриптов для gum? Вряд ли их много в интернете можно найти.
Отправил ему адрес репозитория и попросил сделать 2 списка: один с самыми большими файлами, второй – с самыми старыми. Причём вывести их вместе на один экран, в списках отобразить размер файлов и их даты.
Задача не сильно сложная, но немного муторная, так как списки надо правильно сформировать, объединить, пункты выбора насытить дополнительной информацией в виде размера файлов и даты. Потом всё это надо очистить, чтобы передать на удаление только имя файла. Чтобы самому это сделать, надо потратить какое-то время.
Chatgpt меня удивил, когда практически сразу же выдал рабочее решение. Там были ошибки по части bash. Нужно было что-то экранировать, а что-то получше очистить. А вот в части непосредственно Gum он на удивление сразу же всё корректно оформил в соответствии с его возможностями. Я думал, что-то выдумает от себя нерабочее, но нет.
В итоге минут за 15-20 со всеми тестами я получил рабочий вариант скрипта. Реально, был очень удивлён. Не так давно его мучал конфигурациями Nginx, по которым море примеров в сети, но так и не добился того, что хотел. А тут какой-то Gum и сразу всё заработало.
☝️ Какое в итоге резюме. Gum – прикольная штука, которую можно приспособить под какие-то свои задачи. Например, выбор подключений по SSH, работа с ветками GIT, работа со списками файлов и т.д. Тут уж каждому своё. А второй момент – используйте ИИ для своих задач. Где-то он мимо советует, а где-то сразу рабочий вариант даёт. Причём в таких небольших прикладных задачах он нормально работает. На bash пишет уверенно. Есть проблемы, но поправить после него намного проще, чем написать самому, вспомнив все возможности и ключи консольных утилит.
⇨ Итоговый скрипт
Использовать:
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#bash #AI #script
Я для примера решил сделать поиск по директории с выводом топ 10 самых больших файлов, из которых можно какие-то выбрать и удалить. Сделал просто в лоб на bash – сформировал список, отправил его в gum и добавил действие для выбранных файлов:
#!/bin/bash
DIR="/tmp/backup"
files=$(find "$DIR" -type f -exec du -b {} + 2>/dev/null | sort -nr | head -n 10 | awk '{print $2}')
selected=$(echo "$files" | gum choose --no-limit)
delete=$(echo -e "$selected")
if [[ -z "$delete" ]]; then
echo "Ничего не выбрано."
exit 0
fi
gum confirm "Удалить выбранные файлы?" &&
echo "$delete" | xargs -d '\n' rm -f && echo "Выбранное удалено."
Понял, что всё получилось и решил как-то это усложнить и сделать более удобным. Дай, думаю, попрошу Chatgpt что-то написать. На самом деле не рассчитывал на успех, так как это не особо популярный инструмент. Откуда ему взять навык написания скриптов для gum? Вряд ли их много в интернете можно найти.
Отправил ему адрес репозитория и попросил сделать 2 списка: один с самыми большими файлами, второй – с самыми старыми. Причём вывести их вместе на один экран, в списках отобразить размер файлов и их даты.
Задача не сильно сложная, но немного муторная, так как списки надо правильно сформировать, объединить, пункты выбора насытить дополнительной информацией в виде размера файлов и даты. Потом всё это надо очистить, чтобы передать на удаление только имя файла. Чтобы самому это сделать, надо потратить какое-то время.
Chatgpt меня удивил, когда практически сразу же выдал рабочее решение. Там были ошибки по части bash. Нужно было что-то экранировать, а что-то получше очистить. А вот в части непосредственно Gum он на удивление сразу же всё корректно оформил в соответствии с его возможностями. Я думал, что-то выдумает от себя нерабочее, но нет.
В итоге минут за 15-20 со всеми тестами я получил рабочий вариант скрипта. Реально, был очень удивлён. Не так давно его мучал конфигурациями Nginx, по которым море примеров в сети, но так и не добился того, что хотел. А тут какой-то Gum и сразу всё заработало.
☝️ Какое в итоге резюме. Gum – прикольная штука, которую можно приспособить под какие-то свои задачи. Например, выбор подключений по SSH, работа с ветками GIT, работа со списками файлов и т.д. Тут уж каждому своё. А второй момент – используйте ИИ для своих задач. Где-то он мимо советует, а где-то сразу рабочий вариант даёт. Причём в таких небольших прикладных задачах он нормально работает. На bash пишет уверенно. Есть проблемы, но поправить после него намного проще, чем написать самому, вспомнив все возможности и ключи консольных утилит.
⇨ Итоговый скрипт
Использовать:
# ./cleanup-with-gum.sh /mnt/backup
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#bash #AI #script
Современная веб разработка и частично эксплуатация плотно завязаны на Docker контейнеры. Они используются повсеместно. Недавние истории с временной блокировкой docker hub и внедрением новых лимитов одним днём усложнили жизнь тем, кто завязан на публичное хранилище образов в виде Docker Hub. При этом нет никаких проблем использовать своё Docker Registry, причём как для хранения своих образов, так и кэширования запросов с Docker Hub.
Использовать своё хранилище образов имеет смысл уже при наличии хотя бы пары разработчиков, которые с ними работают. Я уже кратенько упоминал, что существуют различные бесплатные self-hosted решения:
🔹Gitlab Registry или Gitea Registry. Их имеет смысл использовать, если у вас используется одноимённая инфраструктура для хранения кода. С Gitlab Registry проблем особых нет, кроме некоторых заморочек с проксированием, а у Gitea Registry после релиза были некоторые баги. Сейчас не знаю как, наверное уже поправили.
🔹Nexus - известное хранилище для репозиториев и Docker образов. Это комбайн, где можно хранить всё, что угодно: deb и rpm репы, репозиторий контейнеров, npm репозиторий, pypi и многие другие. Если у вас задача только для Docker, то наверное такой комбайн большого смысла использовать нет. Хотя каких-то особых проблем с установкой и настройкой не будет. Я не раз его настраивал. Установить и запустить в работу относительно просто. Всё управление через веб интерфейс.
🔹Docker Registry - продукт от самого Docker. Это был маленький легковесный проект без GUI. Сейчас глянул, а он уже deprecated, его кому-то отдали и переименовали в Distribution. Не знаю даже, что про него сказать. Описание куцее. Посмотрел документацию. На вид это продолжение того же небольшого проекта без GUI, что не очень удобно. Есть веб интерфейс от стороннего разработчика - docker-registry-ui.
🔹Harbor. На нём я хочу остановиться подробно. Это самостоятельное open source хранилище для образов Docker с встроенным веб интерфейсом и хорошим набором возможностей в open source версии. Вот основные:
◽️управление доступом на основе ролей (RBAC)
◽️поддержка LDAP для аутентификации
◽️автоматическая проверка образов с помощью Trivy
◽️режим работы как proxy/кэш-сервер для Docker Hub или других Registry
Имеем универсальное, бесплатное и функциональное решение для собственного хранилища образов. Для небольшой установки подойдёт обычная VPS с 2CPU и 4GB оперативной памяти. Показываю пошаговую установку:
В конфигурации надо указать:
Для использования HTTPS надо предварительно получить сертификаты и указать их:
Можно получить как бесплатные от Let's Encrypt, так и использовать самоподписанные. Я получил бесплатные так:
Укажите пароль для admin и место для хранилища образов. Остальные настройки можно не трогать.
Устанавливаем Harbor:
Дожидаемся загрузки и запуска всех контейнеров. После этого идём в веб интерфейс по настроенному ранее домену. Логинимся под учётной записью admin и паролем из конфигурации.
В разделе Registries добавляем Endpoint и указываем Provider - Docker Hub. Cоздаём новый проект, ставим галочку Proxy Cache, указываем созданный Endpoint.
На рабочей машине логинимся:
Сache - имя созданного проекта. Образ nginx будет скачан через Harbor и останется там в кэше.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#devops #docker
Использовать своё хранилище образов имеет смысл уже при наличии хотя бы пары разработчиков, которые с ними работают. Я уже кратенько упоминал, что существуют различные бесплатные self-hosted решения:
🔹Gitlab Registry или Gitea Registry. Их имеет смысл использовать, если у вас используется одноимённая инфраструктура для хранения кода. С Gitlab Registry проблем особых нет, кроме некоторых заморочек с проксированием, а у Gitea Registry после релиза были некоторые баги. Сейчас не знаю как, наверное уже поправили.
🔹Nexus - известное хранилище для репозиториев и Docker образов. Это комбайн, где можно хранить всё, что угодно: deb и rpm репы, репозиторий контейнеров, npm репозиторий, pypi и многие другие. Если у вас задача только для Docker, то наверное такой комбайн большого смысла использовать нет. Хотя каких-то особых проблем с установкой и настройкой не будет. Я не раз его настраивал. Установить и запустить в работу относительно просто. Всё управление через веб интерфейс.
🔹Docker Registry - продукт от самого Docker. Это был маленький легковесный проект без GUI. Сейчас глянул, а он уже deprecated, его кому-то отдали и переименовали в Distribution. Не знаю даже, что про него сказать. Описание куцее. Посмотрел документацию. На вид это продолжение того же небольшого проекта без GUI, что не очень удобно. Есть веб интерфейс от стороннего разработчика - docker-registry-ui.
🔹Harbor. На нём я хочу остановиться подробно. Это самостоятельное open source хранилище для образов Docker с встроенным веб интерфейсом и хорошим набором возможностей в open source версии. Вот основные:
◽️управление доступом на основе ролей (RBAC)
◽️поддержка LDAP для аутентификации
◽️автоматическая проверка образов с помощью Trivy
◽️режим работы как proxy/кэш-сервер для Docker Hub или других Registry
Имеем универсальное, бесплатное и функциональное решение для собственного хранилища образов. Для небольшой установки подойдёт обычная VPS с 2CPU и 4GB оперативной памяти. Показываю пошаговую установку:
# curl https://get.docker.com | bash -
# wget https://github.com/goharbor/harbor/releases/download/v2.12.3/harbor-online-installer-v2.12.3.tgz
# tar xzvf harbor-online-installer-v2.12.3.tgz
# cd harbor/
# cp harbor.yml.tmpl harbor.yml
В конфигурации надо указать:
hostname: domain.example.com # или IP-адрес
Для использования HTTPS надо предварительно получить сертификаты и указать их:
https:
port: 443
certificate: /etc/letsencrypt/live/338365.simplecloud.ru/fullchain.pem
private_key: /etc/letsencrypt/live/338365.simplecloud.ru/privkey.pem
Можно получить как бесплатные от Let's Encrypt, так и использовать самоподписанные. Я получил бесплатные так:
# apt install certbot
# certbot certonly -d 338365.simplecloud.ru
Укажите пароль для admin и место для хранилища образов. Остальные настройки можно не трогать.
harbor_admin_password: Harbor12345
data_volume: /data
Устанавливаем Harbor:
# ./prepare
# ./install.sh --with-trivy
Дожидаемся загрузки и запуска всех контейнеров. После этого идём в веб интерфейс по настроенному ранее домену. Логинимся под учётной записью admin и паролем из конфигурации.
В разделе Registries добавляем Endpoint и указываем Provider - Docker Hub. Cоздаём новый проект, ставим галочку Proxy Cache, указываем созданный Endpoint.
На рабочей машине логинимся:
# docker login <harbor-host>
# docker pull <harbor-host>/cache/nginx
Сache - имя созданного проекта. Образ nginx будет скачан через Harbor и останется там в кэше.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#devops #docker
🌐 Роль и задачи DevOps в современном IT
На открытом уроке рассмотрим:
- что меняется в DevOps;
- актуальные инструменты DevOps инженера;
- сравним DevOps c SRE, Platform Engineer.
После занятий вы будете знать:
- в чем различия и пересечения между ролями DevOps и SRE (Site Reliability Engineering);
- об актуальных трендах и изменениях в методологиях DevOps;
- об актуальных инструментах DevOps инженера.
👉 Регистрация и подробности о курсе DevOps Advanced: https://clck.ru/3MATuc
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
На открытом уроке рассмотрим:
- что меняется в DevOps;
- актуальные инструменты DevOps инженера;
- сравним DevOps c SRE, Platform Engineer.
После занятий вы будете знать:
- в чем различия и пересечения между ролями DevOps и SRE (Site Reliability Engineering);
- об актуальных трендах и изменениях в методологиях DevOps;
- об актуальных инструментах DevOps инженера.
👉 Регистрация и подробности о курсе DevOps Advanced: https://clck.ru/3MATuc
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Столкнулся вчера со странной ошибкой на одном из веб серверов. В мониторинг прилетело оповещение, что протухает сертификат от Let's Encrypt через 10 дней. Если всё нормально, то такого быть не должно, так как он должен обновиться за 20 дней до протухания.
Иду на сервер разбираться. Запускаю обновление и получаю странную ошибку:
Судя по всему сетевая ошибка. Делаю в консоли простой запрос:
Он отваливается по таймауту. Пробую пинговать acme-v02.api.letsencrypt.org, не пингуется. Думаю, может с DNS проблемы. Иду на другие сервера, проверяю. Везде этот домен нормально резолвится и отвечает. И на этом сервере отвечал раньше, сертификаты же регулярно обновлялись.
Пингую этот домен по IP адресу, тоже нет ответа. Призадумался. Думаю, неужели этот сервер так жёстко забанили в сервисе, что ему даже на icmp запросы отвечать перестали. Проверяю
Начинаю выборочно пинговать разные адреса. И тут начинаются чудеса. Например, не пингуются 8.8.8.8 и 8.8.4.4, но при этом пингуется 1.1.1.1 и многие другие. Смотрю системные логи, никаких ошибок. Не понимаю, что происходит.
Пошёл в панель управления хостера и создал запрос, описав ситуацию. С других серверов этого хостера всё нормально работает, все адреса доступны. Я сначала решил, что это какие-то сетевые проблемы со стороны инфраструктуры хостера. Потом вспомнил, что этот веб сервер работает в виртуальной машине. Захожу на гипервизор, проверяю эти же адреса там – всё в порядке. Они доступны.
Тикет отменил, успел написать текст, приложить скрин, но не отправил. Ещё раз внимательно посмотрел на сервер. В исходящих правилах файрвола никаких запретов, в системных логах никаких ошибок. Не понимаю, в чём проблема.
«Семь бед – один Reset»
Перезагружаю сервер, захожу, проверяю. Всё в порядке. Все адреса доступны, сертификаты обновились.
Первый раз с таким сталкиваюсь. Хотя смутно припоминаю, что вроде как-то раз что-то подобное было и тоже вылечил перезагрузкой. Но никаких подробностей не помню. Если и было, то очень давно. У кого-нибудь есть идеи, что это могло быть? Уже когда сервер перезагрузился, я подумал, что возможно были какие-то проблемы в таблице маршрутизации, но после перезагрузки там уже всё в порядке. Ничего необычного не было.
#ошибка
Иду на сервер разбираться. Запускаю обновление и получаю странную ошибку:
ERROR: Problem connecting to server (get for https://acme-v02.api.letsencrypt.org/directory; curl returned with 7)
Судя по всему сетевая ошибка. Делаю в консоли простой запрос:
# curl https://acme-v02.api.letsencrypt.org/directory
Он отваливается по таймауту. Пробую пинговать acme-v02.api.letsencrypt.org, не пингуется. Думаю, может с DNS проблемы. Иду на другие сервера, проверяю. Везде этот домен нормально резолвится и отвечает. И на этом сервере отвечал раньше, сертификаты же регулярно обновлялись.
Пингую этот домен по IP адресу, тоже нет ответа. Призадумался. Думаю, неужели этот сервер так жёстко забанили в сервисе, что ему даже на icmp запросы отвечать перестали. Проверяю
ping ya.ru
, работает. Да и сам веб сервер на вид в порядке. Всё работает, как обычно. Начинаю выборочно пинговать разные адреса. И тут начинаются чудеса. Например, не пингуются 8.8.8.8 и 8.8.4.4, но при этом пингуется 1.1.1.1 и многие другие. Смотрю системные логи, никаких ошибок. Не понимаю, что происходит.
Пошёл в панель управления хостера и создал запрос, описав ситуацию. С других серверов этого хостера всё нормально работает, все адреса доступны. Я сначала решил, что это какие-то сетевые проблемы со стороны инфраструктуры хостера. Потом вспомнил, что этот веб сервер работает в виртуальной машине. Захожу на гипервизор, проверяю эти же адреса там – всё в порядке. Они доступны.
Тикет отменил, успел написать текст, приложить скрин, но не отправил. Ещё раз внимательно посмотрел на сервер. В исходящих правилах файрвола никаких запретов, в системных логах никаких ошибок. Не понимаю, в чём проблема.
«Семь бед – один Reset»
Перезагружаю сервер, захожу, проверяю. Всё в порядке. Все адреса доступны, сертификаты обновились.
Первый раз с таким сталкиваюсь. Хотя смутно припоминаю, что вроде как-то раз что-то подобное было и тоже вылечил перезагрузкой. Но никаких подробностей не помню. Если и было, то очень давно. У кого-нибудь есть идеи, что это могло быть? Уже когда сервер перезагрузился, я подумал, что возможно были какие-то проблемы в таблице маршрутизации, но после перезагрузки там уже всё в порядке. Ничего необычного не было.
#ошибка