Задать вопрос
  • Как пустить часть трафика через VPN?

    @MaDerer
    Лично мне известно о существовании двух вариантов доступа через роутеры. Инструкции уже не подскажу, так как занимался этим год-два назад.
    1. Через роутер Mikrotik.
    2. Через роутер с OpenWRT прошивкой.
    Суть обеих методов в том, что создаётся два соединения: основное и VPN. Все сайты, которые находятся в созданном списке заворачиваются на VPN. Остальные через обычный доступ.
    Я таким образом заворачиваю на Микротике нужные мне сайты на OpenVPN сервер, но достаточно долго возился по нескольким статьям, и когда у меня заработало, я сам не понял как. Точнее не понял, что я до этого делал не так, что у меня не работало.
    Ответ написан
    2 комментария
  • Как пустить часть трафика через VPN?

    Vindicar
    @Vindicar
    RTFM!
    Есть два подхода. В обоих случаях тебе нужен список заблокированных IP, его можно взять на антизапрете, например.
    Дальше вопрос, как пускать трафик.
    1. На хабре был материал про динамическую подгрузку маршрутов через BGP. Плюс - работает с любыми протоколами, и не требует дополнительной настройки со стороны проксируемого ПО. Минусы - ощутимо сложнее в понимании, на мой взгляд, да и с кроссплатформенностью могут быть проблемы. В статье приведена реализация на роутере Mikrotik.
    2. Использовать файл proxy.pac. Его можно сгенерировать скриптом типа такого:
    #!/bin/bash
    #!/bin/bash
    DNS_SERVER=8.8.8.8
    BLACKLIST_URL="http://antizapret.prostovpn.org/iplist.txt"
    #куда класть файл proxy.pac
    PACDIR=/var/www/html
    TMPLIST=/tmp/iplist.txt
    #домены, которые нужно пускать через прокси независимо от содержимого iplist.txt
    DOMAINS=(\
    rutracker.org \
    facebook.com \
    facebook.net \
    fbcdn.net \
    twitter.com \
    twitter.co \
    t.co \
    twimg.com \
    twitpic.com \
    periscope.tv \
    pscp.tv \
    )
    #качаем чёрный список
    wget -q --tries=10 -O "$TMPLIST" "$BLACKLIST_URL"
    # вытаскиваем IP наших прописанных доменов
    declare -a EXTRAIPS=()
    for domain in "${DOMAINS[@]}"
    do
            dig A "$domain" +short @$DNS_SERVER | grep -v '\.$' >>"$TMPLIST"
    done
    #в чёрном списке есть отдельные IP и есть подсети
    #также чёрный список очень длинный, поэтому кодируем его более компактно.
    IPLIST=`grep -Ex '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$' "$TMPLIST" | awk '/^[0-9]+/ {split($1,b,/\./); printf("0x%02x%02x%02x%02x,", b[1],b[2],b[3],b[4]);}'`
    SUBNETLIST=`awk '/[0-9.]+\.[0-9]+\.[0-9]+\.[0-9]+\/[0-9]+/ {split($1,p,/\//); printf("[\"%s\", %s], ", p[1], p[2]);}' <"$TMPLIST"`
    #генерируем proxy.pac по шаблону
    #он проверяет домен на вхождение в фиксированные домены, а потом IP по списку.
    function templatePAC {
            NAME=$1
            shift
            DMNLIST=("$@")
            cat >"$PACDIR/$NAME" <<EOF
    function FindProxyForURL(url, host) {
      var domainblacklist = [
    EOF
            for d in "${DMNLIST[@]}"
            do
                    echo "  '$d'," >>"$PACDIR/$NAME"
            done
            cat >>"$PACDIR/$NAME" <<EOF
      ];
      var ipblacklist = [ $IPLIST ];
      var subnetblacklist = [ $SUBNETLIST ];
    
      function endsWith(str, suffix) {
        return str.indexOf(suffix, str.length - suffix.length) !== -1;
      }
      function numberToMask(n) {
        var m=[0,128,192,224,240,248,252,254,255];
        var r=[];
        for (var i=0; i<4; i++) {
          var p = (n > 8) ? 8 : n;
          r[i] = m[p];
          n -= p;
        }
        return r.join(".");
      }
      function maskMatch(ip, mask) {
        var m = numberToMask(mask[1]);
        return isInNet(ip, mask[0], m);
      }
    
      var blocked = false;
      for (var i=0; !blocked && (i<domainblacklist.length); i++)
        blocked = blocked || ((host == domainblacklist[i]) || endsWith(host, '.'+domainblacklist[i]));
      if (!blocked) {
        var ip = dnsResolve(host);
        for (var i=0; !blocked && (i<subnetblacklist.length); i++)
          blocked = blocked || maskMatch(ip, subnetblacklist[i]);
        blocked = blocked || (ipblacklist.indexOf(convert_addr(ip)) != -1);
      }
      if (blocked)
        return "PROXY ТУТ_ТВОЙ_ПРОКСИ:ПОРТ";
      else
        return "DIRECT";
    }
    EOF
    }
    # генерируем файл
    templatePAC proxy.pac "${DOMAINS[@]}"
    
    rm -f "$TMPLIST"

    Тогда можно отдавать этот proxy.pac любым веб-сервером (но лучше внутри VPN - если VPN не работает, то смысл в файле?), и настроить браузер на его использование.
    Минусы: работает только с браузерами, требует наличия вебсервера и полноценного прокси-сервера внутри VPN-сети (т.е. просто арендованный VPN не подойдёт, нужен VPS). Но мне показалось это проще в понимании, чем возня с BGP, да и требуется только наличие современного браузера и VPN клиента, без привязки к роутеру. Можно хоть на ноуте настроить, как я сделал.
    Ответ написан
    Комментировать
  • Алерт при отключении одного из БП?

    @TheBigBear
    СтарОдмины мы
    Мой скрипт в пару строк всего
    :global volt [/system health get voltage];
    :if ($volt < 131) do={
    /tool e-mail send to="admin@my-company.ru" body="$volt" subject="Power crash"
    }
    Пара пояснений
    В Вашем случае вместо voltage будет проверка psu1-voltage и psu2-voltage
    Микротики питаются через блоки питания типа ББП-20 (12 вольт и аккум 7 АЧ - на деле выдает 13,7 на розетке и 12.8 на полностью заряженном аккуме) напряжения хватает, глюков нет
    Значение 131 = 13.1 В Почему именно это - в момент отключения питания напряжение на аккуме снижается до номинального плавно - вот и подобрал среднее
    body= - пишите что хотите
    почта настраивается в Tools - E-mail
    Шедулер запускает раз в час - Вы можете сделать хоть раз в минуту (микротики на аккумуляторе могут работать до двух дней, так что мне не принципиально)
    Проверку на то, что письмо уже отправлено и повторять не нужно делать не стал
    Дерзайте
    Ответ написан
    4 комментария
  • Настройка репозиторий ubuntu 20 без интернета?

    ky0
    @ky0 Куратор тега Системное администрирование
    Миллиардер, филантроп, патологический лгун
    Возможно, если принесёте кусочек интернета откуда-нибудь. См. apt-mirror, например.
    Ответ написан
    5 комментариев
  • Обьясните внятно что такое SRE(обеспечения надежности веб-сервисов)?

    xSkyFoXx
    @xSkyFoXx
    SRE, Site Reliability Engineering, это инженерная профессия, которая ставит себе за цель обеспечение надёжной работы систем. Слово "site" используется в широком смысле и включает в себя обеспечение надёжности всех логических уровней системы.
    SRE, если мне не изменяет память, возникли в Google. Возникли для обеспечения надёжной работы большого количества сервисов.
    "Библией SRE" является книга, изданная Google (бесплатно доступна здесь: https://landing.google.com/sre/book.html Она включает в себя множество практик, приёмов и фолософский утверждений, которые SRE используют в повседневной работе. Сам такой владею и местами перечитываю до наступления понимания.
    Надо понимать, что SRE - это разработчики с глубокими навыками системного администрирования и очень крепкой психикой, потому что именно они находятся на переднем фронте систем и их работа - обеспечивать бесперебойную доступность сервисов по всей планете, 24/7.
    Ответ написан
    2 комментария
  • Публикация kubernetes Dashboard через NodePort, как?

    @thunder2004 Автор вопроса
    разобрался, сам виноват что неправильно прописал параметр в файле конфигурации,
    вот рабочий вариант
    kind: Service
    apiVersion: v1
    metadata:
    labels:
    k8s-app: kubernetes-dashboard
    name: kubernetes-dashboard
    namespace: kubernetes-dashboard
    spec:
    type: NodePort
    ports:
    - port: 443
    targetPort: 8443
    nodePort: 32320
    selector:
    k8s-app: kubernetes-dashboard
    Ответ написан
    Комментировать
  • Что такое такое rest api?

    @eandr_67
    web-программист (*AMP, Go, JavaScript, вёрстка).
    API социальных сетей - это вполне типичные примеры реализации REST API.

    REST (RESTful) - это общие принципы организации взаимодействия приложения/сайта с сервером посредством протокола HTTP. Особенность REST в том, что сервер не запоминает состояние пользователя между запросами - в каждом запросе передаётся информация, идентифицирующая пользователя (например, token, полученный через OAuth-авторизацию) и все параметры, необходимые для выполнения операции.

    Всё взаимодействие с сервером сводится к 4 операциям (4 - это необходимый и достаточный минимум, в конкретной реализации типов операций может быть больше):
    1. получение данных с сервера (обычно в формате JSON, или XML)
    2. добавление новых данных на сервер
    3. модификация существующих данных на сервере
    4. удаление данных на сервере

    Операция получения данных не может приводить к изменению состояния сервера.

    Для каждого типа операции используется свой метод HTTP-запроса:
    1. получение - GET
    2. добавление - POST
    3. модификация - PUT
    4. удаление - DELETE

    Т.е. :

    GET-запрос /rest/users - получение информации о всех пользователях
    GET-запрос /rest/users/125 - получение информации о пользователе с id=125
    POST-запрос /rest/users - добавление нового пользователя
    PUT-запрос /rest/users/125 - изменение информации о пользователе с id=125
    DELETE-запрос /rest/users/125 - удаление пользователя с id=125
    Ответ написан
    20 комментариев
  • Почему может не проходит платеж за Apple Developer Program?

    У меня такая же проблема скажите вы оплату производили пользуясь Safari?

    Вобщем получилось у меня оплатить)))
    Расклад такой я написал в поддержку в сотый раз и мне дали менеджера он естественно кормил завтраками потом сказал что хз в чем проблема и что бы я создал новый аккаунт. Я уже создавал новый аккаунт и толку 0, поэтому забил и не стал опять это делать. Я написалиему вопрос про графу при оплате Billing address типо чтоттам за адресс должен быть и т.д. Он сказал чтоттам адресс должен быть который я указывал когда получал карту в банке.
    И вот тут прикол. В Америке если физ.лицотполучает карту то они указывают допустим свой домашний адресс как billing address в РФ при получении карты мы ничего не указываем. Я ему объяснил это и сказал что бы он спросил у технарей как их система проверяет данные перед списание средств. И выяснилось как он сказал что их система пытается проверить данные которых нет. В итоге он сказал что позволит мне оплатить прямым банковским переводом и дал реквизиты для перевода я перевел деньги со счета компании и в тот же день получил доступ.
    Надеюсь кому то поможет. Попробуйте раскрутить их на прямой банковский перевод со счета на счет. Вам дадут в эпл номер заказа который надо будет указать при переводе в деталях платежа и все они получат и откроют доступ.
    Ответ написан
    4 комментария
  • Почему отрубается asterisk?

    ioangrozniy
    @ioangrozniy Автор вопроса
    После долгих мытарств поставил Астер 16.10.0
    Всё заработало. Так что как я понял - это косяки версии 17.3.0
    Очень жаль.
    Ответ написан
    Комментировать
  • Коллеги, как Вы выходите из положения, когда нужно постоянно приводить ПК в исходное состояние?

    Есть такая программка - Shadow Defender
    Устанавливаешь, запускаешь и забываешь о проблемах. Как бы кто ни извращался, после перезагрузки винда возвращается в исходное состояние.
    Ответ написан
    2 комментария
  • Как удалить программы в ubuntu?

    vaut
    @vaut
    Для начала стоит понять что вы запускаете и как оно попало в систему.
    Это может быть просто запущенный бинарник который вы закрепили в доке, может быть что то установленное из исходников make install или нормальное приложение поставленное через пакетный менеджер.

    В первом случае просто открепите его из дока и удалите файлы которые запускали.
    Во втором топитесь, если повезет к make install завезли make uninstall и он отработает корректно.
    В третьем варианте вам нужно определить имя пакета.
    Сделать это можно так:
    - определить имя процесса через топ или системный монитор
    - найти какой именно бинарник запускается можно так Посмотреть ps aux | grep имя_процесса, если оно будет без пути, то which имя_процесса
    - определяем какому пакету принадлежит запускающийся исполняемый файл dpkg -S путь_к_файлу
    Ну как удалить известный пакет я надеюсь вы уже знаете.
    Ответ написан
    Комментировать
  • UTF8- without BOM пропал в notepad++?

    Alexeytur
    @Alexeytur
    "Кодировка в UTF-8" - сохраняет без BOM
    Ответ написан
    3 комментария
  • Почему read-only диск не маунтится?

    @vitaly_il1
    DevOps Consulting
    Туториал работает только с read-write диском

    Туториал нормальный, но нужно минимальное понимание что такое disk, partition, mount, mountpoint, ...

    UPDATE: вопрос оказался не такой простой, по дороге я узнал новую вещь - если ext3 filesystem отмонтирована некорректно, то при read-only mount надо отключать журнал, иначе получаем ошибку.
    Решение:
    mount -o ro,noload /dev/sdc /folder/directory
    Ответ написан
    3 комментария
  • Как добавить в конфиг опции с помощью команд, без ручного редактирования в nano?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    sed -r "s/^(write list.*|valid user.*)/\1,user/" <samba.config>
    Ответ написан
    4 комментария
  • Какие технологии Linux сетевой инженер должен знать?

    Sanes
    @Sanes
    Поищите в youtube Кирилл Семаев. Курсы LPIC, LPIC-2.
    Для ознакомления будет в самый раз.
    Ответ написан
    Комментировать
  • Что выбрать для системы ВКС?

    mikes
    @mikes
    Из программных реализаций интересен trueconf
    Ответ написан
    1 комментарий
  • Какой посоветуете opensource helpdesk?

    Berezoff
    @Berezoff
    Сисадмин-виндузятник, немного линуксятник
    GLPI - очень хорошая и максимально настраиваемая система тех.поддержки
    Ответ написан
    Комментировать
  • Как добавить места к /tmp каталогу на Debian 9?

    @pfg21
    ex-турист
    вариант2: отмонтировать /tmp и удалить соответствующую запись в /etc/fstab. создать каталог /tmp, теперь он создастся на разделе / т.е. /dev/sda5
    вариант3: содержимое каталога /tmp перенести на раздел где есть свободное место.
    удалить /tmp и вместо него поставить символьную ссылку на новое место
    или сделать запись в /etc/fstab с опцией bind. каталог /tmp будет прозрачно лежать на другом разделе.
    Ответ написан
    1 комментарий