• Настройка роутинга для домашнего multihomed сервера

    • Tutorial
    Сейчас наличие нескольких подключений к интернет на одном, в том числе и домашнем сервере — не редкость. Городские локалки, ADSL, 3G модемы… Добавим к этому сети домашние локальные и внешние виртуальные (VPN), и получим ядрёную смесь интерфейсов, между которыми необходимо роутить трафик, балансировать трафик между разными каналами в интернет (когда они есть), и переключаться с нерабочих каналов на рабочие (когда они отваливаются).

    Судя по постам в инете, большинство людей, столкнувшихся с этой ситуацией, очень плохо представляет себе, как это настраивается. Надо отметить, что в линухе действительно управление роутингом весьма сложное и запутанное — следствие эволюционного развития и поддержки (частичной) совместимости. Я хочу описать принципы настройки роутинга multihomed серверов на конкретном, достаточно сложном, примере: на сервере три физических сетевых интерфейса (один в домашнюю локалку и два к ADSL-модемам), два ADSL-подключения (ADSL-модемы в режиме bridge, так что pppd поднимает этот же сервер) к разным провайдерам (одно со статическим IP, второе с динамическим), плюс VPN на сервер компании — итого шесть интерфейсов.

    Тема достаточно сложная, поэтому для понимания материала потребуется хотя бы минимальное понимание работы роутинга (что такое default route и gateway), файрвола (маркировка пакетов, отслеживание соединений, связь между разными таблицами и цепочками файрвола и роутингом), pppd (скрипты ip-up/ip-down) и протоколов IP и TCP.
    Читать дальше →
  • OpenVPN c расширенной аутентификацией и авторизацией

    UPD 2020-07-03: Прошло несколько лет, ситуация сильно изменилась, и в первую очередь я бы сейчас смотрел на wireguard + yubikey. Но все это по-прежнему работает.


    В статье рассматривается настройка OpenVPN c дополнительными фичами:

    • сертификаты на токенах для первичной аутентификации (на примере Rutoken)
    • LDAP-бекенд для вторичной аутентификации (на примере ActiveDirectory)
    • фильтрация внутренних ресурсов, доступных для пользователяx (через iptables)

    Так же описана настройка клиентов под Linux, Windows и MacOS.
    Читать дальше →
    • +30
    • 24.9k
    • 9
  • Муравейник или крепость? Строю дом по цене квартиры. 1 часть

      Часть 1. Строительство
      Часть 2. Отопление
      Часть 3. Электроснабжение
      Часть 4. Комфорт дома и гаджеты.

      Как и многие гики, я пришел к мысли, что здоровье гораздо дороже любых денег. Одно из слагаемых этого здоровья — это душевный покой и отсутствие отвлекающих и раздражающих соседей сверху, снизу, сбоку… Так я пришел к строительству своего дома. На своем примере я хочу показать, с какими проблемами предстоит столкнуться и как избежать трудностей впоследствии. В следующих выпусках, если этот понравится, расскажу о домашней сети, организации видеонаблюдения IP-камерами, резервном и автономном электроснабжении и многом другом, но сначала надо построить жилище.

      Когда вопрос собственного жилья у меня стал основательным, а съем квартиры стал нерентабельным, я пришел, как и многие, к выбору: во что вкладываться — в дом или в квартиру?
      Стоимость квартир даже в Подмосковье за пару комнат начинается от трех миллионов. Без отделки и со всеми сопутствующими проблемами. Посчитав, я пришел к выводу, что за те же деньги можно построить дом в Подмосковье с такой же транспортной доступностью и близкой инфраструктурой.
      Для ленивых я расскажу все в ролике, а для любителей букв я подготовил текст с картинками.


      Читать дальше →
    • Во что инвестируют в цифровой экономике

      • Translation


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


      Из статьи вы узнаете:


      • почему вложения в ИТ менее рискованные, чем в любые другие отрасли
      • когда именно входит инвестор, а когда ему рановато это делать
      • почему венчур бывает лишь в ИТ и биотехе и больше нигде
      • и ещё несколько интересностей.

      Поехали.

      Читать дальше →
    • Настройка VLAN на операционной системе routerOS

      Для наглядного примера я буду использовать маршрутизатор Mikrotik CCR1036-8G-2S+ и коммутатор CRS125-24G-1S.

      Этот вариант на данный момент работает в нескольких гостиницах Москвы и Московской области.
      Поставим условную задачу, чтобы на каждом коммутационном узле присутствовала сеть класса А (10.1.0.0/24) для работников фирмы и сеть класса С (192.168.1.0/24) для WiFi для посетителей.

      Допустим, у нас имеется коммутационный узел A c маршрутизатором Mikrotik CCR1036-8G-2S+, коммутационный узел B с коммутатором CRS125-24G-1S. Коммутационные узлы А и В будут соединены каналом связи (Trunk) в нашем случае по витой паре (каналов связи (trunk) может быть несколько в зависимости от количества коммутационных узлов; также если имеется ВОЛС и оптический модуль SFP mikrotik, то можно trunk назначить и на SFP). Приведу ниже схему с использованием trunk по витой паре.

      image

      Приступим к настройке коммутационного узла A с маршрутизатором Mikrotik CCR1036-8G-2S+.
      Читать дальше →
    • Кластер хранилища Ceph на VMWare за 10 минут

      • Tutorial


      Этот мануал написан для желающих попробовать гибкость и удобство распределенного файлового хранилища Ceph в виртуальной среде на домашнем ПК. Сразу поясню, что 10 минут — это время на разворачивание самого кластера (установка и настройка Ceph на виртуальных машинах). Но на создание и клонирование виртуальных машин и на установку ОС потребуется отдельное время.

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

      Кто еще не в теме Ceph, можно прочитать вводную статью Знакомство с Ceph в картинках и посмотреть модное промо от производителя.
      Читать дальше →
    • Система сбора, анализа, уведомлений и визуализации логов на syslog-ng, elasticsearch, kibana, grafana, elasticalert

      • Tutorial

      image


      Что мы получим после этой статьи:


      Систему сбора и анализа логов на syslog-ng, elasticsearch в качестве хранилища данных, kibana и grafana в качестве систем визуализации данных, kibana для удобного поиска по логам, elasticalert для отправки уведомлений по событиям. Приготовьтесь, туториал объемный.


      Какие логи будем собирать:


      • все системные логи разложенные по индексам в зависимости от их facility(auth,syslog,messages и т.д.);
      • логи nginx — access и error;
      • логи pm2;
      • и др.

      Обоснование выбора системы


      Почему я выбрал связку с syslog-ng в качестве отправителя, парсера и приемщика логов? Да потому что он очень быстрый, надежный, не требовательный к ресурсам(да да — logstash в качестве агентов на серверах и виртуальных машинах просто убожество в плане пожирания ресурсов и требованием java), с внятным синтаксисом конфигов(вы видели rsyslog? — это тихий ужас), с широкими возможностями — парсинг, фильтрация, большое количество хранилищ данных(postgresql,mysql,elasticsearch,files и т.д.), буферизация(upd не поддерживает буферизацию), сторонние модули и другие фишки.


      Требования:


      • Ubuntu 16.04 или debian 8-9;
      • vm для развертывания;
      • Прямые руки.

      Приступим или добро пожаловать под кат

      Читать дальше →
    • #Ускорение4X. Принцип № 0/2. Скрам-мастер

        Продолжаю тему ускорения работы в 4 раза, начатую в публикации про изменяемую среду.

        Сегодня поговорим про второй базовый принцип, без которого не получится ускориться в 4 раза.

        На чистом скраме, без всех этих принципов, можно ускориться в 1.5-2 раза, такие примеры есть. Хотя, их достаточно мало. И это парадокс.

        Помните публикацию про гибкий суррогат? Я там долго рассуждал о том, что на обложке книги по скраму написано, что она про ускорение работы в 4 раза. Бери и делай, как написано, и получай шикарное ускорение.

        Но этого не происходит. Почему?

        Я в своей практике ответ нашел, приглашаю и вас ознакомиться. Если хотите 4X.
        Читать дальше →
      • Удаленная переустановка Linux по ssh без доступа к консоли

        Понадобилось мне переустановить сервер, который как бы хостился у знакомых знакомых. Там был сильно устаревший Debian, а, самое главное, система стояла на обычных разделах без lvm и пространство было распределено очень не оптимально. Физический доступ получить к нему было практически нереально, местного админа попросить что-то сделать было можно, но занять это могло неделю. Виртуальный KVM у сервера был, но извне на него попасть было нельзя; у как бы хостера не было лишних IP-адресов, а внутрь его сети попасть было невозможно. Надо было переустановить сервер из-под работающей системы по ssh. Ага, давайте поменяем ротор у турбины не выключая, потом её перезапустим и будет она с новым ротором работать!
        Читать дальше →
      • Вышел GitLab 8.15

        • Translation

        В последнем релизе уходящего года мы завершаем наш Мастер-план и хотим показать вам кое-что интересное из того, над чем мы работали.



        В GitLab 8.15 появилась фича Auto Deploy – автоматизированная настройка развертывания и приложений для ревью (Review Apps). Для проекта на Ruby on Rails такая настройка займёт меньше минуты. Посмотрите, как это работает, в видео на 1:42.


        Вдобавок, доступ к вашим средам (environments) стал быстрее и проще: через терминал непосредственно в GitLab (там же на 5:18)


        Мы хотим дать каждому возможность использовать всю мощь контейнеров (containers), непрерывной интеграции и развертывания (continuous integration and deployment, сокращенно CD/CI), приложений для ревью (review apps) и планировщиков контейнеров (container schedulers). В GitLab 8.15 мы взяли на себя всю сложную работу по настройке, и вся она происходит совершенно прозрачно. В демонстрационном видео мы настраиваем и разворачиваем Ruby-приложение с review apps, несколькими средами и чатопсом (chatops, управление инфраструктурой через интеграцию с чатом) на кластер Kubernetes примерно за 12 минут. Без GitLab такая задача обычно занимает дни, если не недели.


        Для большинства из нас декабрь — месяц праздников и подарков. GitLab тоже получил в подарок много новых фич.


        Читать дальше →
      • VPN за 60 секунд

          Если Вы предпочитаете простые и красивые решения, или Вам нравится всё, что попадает под категорию It Just Works, то эта статья для Вас. Для запуска шифрованного подключения достаточно иметь на своем компьютере SSH-клиент, установить sshuttle (об этом чуть позже) и приобрести VPS с любым тарифным планом в интересующей Вас стране. На удалённой VPS-машине в большинстве случаев абсолютно ничего настраивать не нужно (достаточно, чтобы были установлены пакеты python и сервер SSH).


          Читать дальше →
        • Сборка docker контейнеров с помощью docker контейнеров

          image

          С момента начала работы с Docker, мы столкнулись с немалым количеством проблем. Одна из них — организация сборки приложений и упаковки их в контейнера. Мы решили эту задачу с помощью введения концепции сборочного контейнера. О том, что это такое, зачем нужно и как мы до этого дошли и пойдет речь в этом посте.
          Читать дальше →
        • Домашний хостинг сайтов с динамическим IP

          У меня (как и у многих web-разработчиков) имеется с десяток сайтов которые необходимо где-то размещать (хостить).

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

          В то-же время в наличии имеется:

          • Домашний сервер на Ubuntu
          • Быстрый ethernet-интернет от МТС

          Но не имеется ключевого — статического IP. Если бы он был, то все было-бы намного проще и данную статью я бы точно не писал. А выдавать статический IP мой МТС абсолютно не желает (если только я не подключусь как бизнес-клиент).

          Разумеется есть всем известные Dynamic DNS сервисы вроде noip.com, но они успешно решают лишь задачу удаленного доступа к нашему серверу (по SSH или FTP), но для хостинга совершенно нам не подходят, поскольку в настройках домена на DNS-сервере нам нужно обязательно прописать A-запись с реальным IP-адресом (а не ссылку на наш виртуальный домен).
          Читать дальше →
        • Запуск cron внутри Docker-контейнера


            Так уж вышло, что запуск cron в Docker-контейнере — дело весьма специфическое, если не сказать сложное. В сети полно решений и идей на эту тему. Вот один из самых популярных (и простых) способов запуска:
            cron -f
            

            Но такое решение (и большинство других тоже) обладает рядом недостатков, которые сходу обойти достаточно сложно:
            • неудобство просмотра логов (команда docker logs не работает)
            • cron использует свой собственный Environment (переменные окружения, переданные при запуске контейнера, не видимы для cron заданий)
            • невозможно нормально (gracefully) остановить контейнер командой docker stop (в конце концов в контейнер прилетает SIGKILL)
            • контейнер останавливается с ненулевым кодом ошибки
            Читать дальше →
          • Как работают ИТ-специалисты. Игорь Сысоев — основатель и СТО в Nginx

              image7 и 8 ноября в Сколково прошла конференция HighLoad++ 2016. Более 200 экспертов выступали с докладами о высоконагруженных сервисах, проблемах работы с ними, администрировании и многом другом.

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

              С каждым мы провели интервью в формате блиц-опроса. Будет интересно выяснить, что объединяет этих IT-специалистов, в чем они похожи. Возможно, их ответы помогут выявить какие-то общие закономерности, полезные советы, которые помогут многим из нас.
              Читать дальше →
            • Прокси-сервер с помощью Tor. Основа для многопоточного парсинга

              • Tutorial
              Всем привет! На днях прилетела интересная задача: «Найти бесплатные прокси-сервера». Взявшись за нее, решил обойти все сайты свободных проксей и понял — дохлые… ну или с высоким пингом.

              После нескольких часов безуспешных поисков, было принято решение использовать свои ресурсы!

              Итак, что в итоге должно получиться:

              1. VM Ubuntu/Debian 2 CPU, 2GB RAM, 8GB HDD (ну тоесть совсем не требовательная)
              2. PRIVOXY для проксирования запросов (Можно взять nginx, varnish — я взял Privoxy)
              3. TOR сервер
              Читать дальше →
            • Веб авторизация доменного пользователя через nginx и HTTP Negotiate

                    Намедни встала задача — обеспечить прозрачную авторизацию пользователей домена в CRM, собственно Microsoft давным давно разработал для этих целей метод аутентификации HTTP Negotiate, это все замечательно работает на IIS и Windows Server, а у нас за плечами Samba4 в роли Primary Domain Controller и проксирующий веб сервер nginx. Как быть?

                    В сети куча информации по организации подобной схемы для Apache2 & AD на базе Windows, а вот пользователям nginx приходится собирать все по крупицам, информации кот наплакал. В базовой поставке Nginx нет подобного функционала. Благо люди не пали духом и история началась в мейл рассылках nginx в 2009 году, где один американский товарищ из Огайо нанял разработчика на RentACoder для запиливания модуля с подобным функционалом. Ребята форкнули подобный модуль для апача, прикрутили его к nginx и результаты работы выложили на github, где модуль время от времени допиливался разными людьми и в итоге принял роботоспособный вид. Последнюю версию можно получить на гитхабе.


                В данном руководстве я расскажу как заставить работать nginx с SPNEGO модулем и samba4.

                Читать дальше →
              • Создание полноценного видеохостинга своими руками (nginx+php5-fpm+ffmpeg+cumulusclips)

                Добрый день, хабровчане!

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

                Задача была следующая:
                Создать видеоресурс, способный проводить многопоточные односторонние трансляции с web камеры, а так же из любого файла (это например для защиты от прямого скачивания), видеошару с возможностью просмотреть видео в разных форматах и битрейтах.
                Узнать больше
              • Кластер высокой доступности на postgresql 9.6 + repmgr + pgbouncer + haproxy + keepalived + контроль через telegram

                image

                На сегодняшний день процедура реализации «failover» в Postgresql является одной из самых простых и интуитивно понятных. Для ее реализации необходимо определиться со сценариями файловера — это залог успешной работы кластера, протестировать его работу. В двух словах — настраивается репликация, чаще всего асинхронная, и в случае отказа текущего мастера, другая нода(standby) становится текущем «мастером», другие ноды standby начинают следовать за новым мастером.

                На сегодняшний день repmgr поддерживает сценарий автоматического Failover — autofailover, что позволяет поддерживать кластер в рабочем состоянии после выхода из строя ноды-мастера без мгновенного вмешательства сотрудника, что немаловажно, так как не происходит большого падения UPTIME. Для уведомлений используем telegram.

                Появилась необходимость в связи с развитием внутренних сервисов реализовать систему хранения БД на Postgresql + репликация + балансировка + failover(отказоустойчивость). Как всегда в интернете вроде бы что то и есть, но всё оно устаревшее или на практике не реализуемое в том виде, в котором оно представлено. Было решено представить данное решение, чтобы в будущем у специалистов, решивших реализовать подобную схему было представление как это делается, и чтобы новичкам было легко это реализовать следуя данной инструкции. Постарались описать все как можно подробней, вникнуть во все нюансы и особенности.
                Читать дальше →