• Сложная маршрутизация на linux роутере. Как правильно готовить policy based routing?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    По поводу этого лучше всего начать с LARTC HOWTO.

    Если кратко, маршрутищация в iproute2 устроена так. Есть несколько таблиц маршрутизации, из которых 3 есть всегда (local, main, default), но можно создать ещё. По правилам (команда ip rule) перебираются таблицы, подходящие под условия, в соответствии с приоритетами (preference, первое число в выводе команды). И в каждой таблице есть свои маршруты. Таблицу local изменять нельзя и перед ней ничего маршрутизировать нельзя (это можно обойти через nat в PREROUTING, но это уже другой вопрос).

    Самый простой вариант - это source routing. Впервые мне это понадобилось, когда я подключил дома второго провайдера с внешним IP, и мне потребовалось отвечать с обоих внешних адресов со всего интернета. Делается так:

    1. В /etc/iproute/rt_tables описываем псевдонимы для новых таблиц (необязательно - можно использовать числовые идентификаторы - но так удобнее). Например, 10 - isp1, 20 - isp2.

    2. Задаём правила, которые приведут к выбору таблицы в зависимости от source address:

    ip rule add pref 10 from IP1 lookup isp1
    ip rule add pref 20 from IP2 lookup isp2

    3. В каждую таблицу добавим маршрут default через нужного оператора:

    ip route add default via GATEWAY1 table isp1
    ip route add default via GATEWAY2 table isp2

    4. В таблице main (которая используется по умолчанию, если не указать таблицу в команде явно) описываем маршрут "по умолчанию" - через того оператора, через которого будет идти исходящий трафик (не ответный на входящий), в данном случае пусть будет isp1:

    ip route add default via GATEWAY1

    Всё это иногда можно в той или иной степени засунуть в конфиги сети (зависит от дистрибутива Linux весьма существенно), а иногда приходится делать скриптами, в том числе, возможно, вызываемыми через hook системы инициализации сети (я, например, обновлял маршрутизацию через postup-хук dhcp-клиента и из скрипта, который поднимал pptp-vpn).

    В дальнейшем всё это обросло кучей других особенностей, например, ip rule fwmark по меткам, которые ставилилсиь в iptables по connmark и иногда другим условиям, но это уже следующий уровень сложности и более специфичне задачи. И LARTC HOWTO почитать всё равно рекомендую, ибо там основа основ и все гуру по нему учились.
    Ответ написан
    3 комментария
  • Sury.org заблокирован для России?

    @western333
    Debian

    в /etc/apt/sources.list.d/php.list комментируем все и добавляем в конец

    Если Debian 11 (Bullseye)
    deb https://ftp.mpi-inf.mpg.de/mirrors/linux/mirror/deb.sury.org/repositories/php/ bullseye main

    Если Debian 12 (Bookworm)
    deb https://ftp.mpi-inf.mpg.de/mirrors/linux/mirror/deb.sury.org/repositories/php/ bookworm main
    Ответ написан
    1 комментарий
  • Видеокарта для обучения нейросетей, Palit P104-100 8Gb?

    @rPman
    Если выбирать при работе с нейронными сетями - больше памяти = лучше почти всегда (чтобы в память влезали нейронки, обучающая выборка и тесты и еще осталось), в идеале конечно и кеш больше но это архитектура (новее = лучше почти всегда). Выбор nvidia почти всегда для нейронок лучше, вопрос не железа, оно у них даже может быть хуже (соотношение цена/результат), вопрос софта, почти весь популярный ЛУЧШЕ или вообще работает с nvidia.

    Если тебе для обучения, видеокарта не нужна, она только экономит время (от 10х до 100х кратно быстрее на gpu). pytorch это не единственное место, где можно использовать ускорение gpu, скорее может оказаться что стартовая подготовка данных будет занимать значимо больше времени чем само обучение, и возможность ускорить этот этап с помощью gpu (используй напрямую opencl чтобы хотя бы на этом этапе не привязываться к зеленым, для начинающих разницы нет) будет значима... именно тут можно получить 100х кратное ускорение по сравнению с cpu

    p.s. стоимость видеокарты намекает на покупку с рук БУ, почти наверняка с майнинга, будь осторожен, можешь получить горелую.
    Ответ написан
    2 комментария
  • Видеокарта для обучения нейросетей, Palit P104-100 8Gb?

    Daemon23RUS
    @Daemon23RUS
    PyTorch / Tensorflow без особых проблем взлетает на зеленых, на Palit P104-100 все должно подняться.
    Но 8Gb хватит ли под Ваши задачи, это только Вы знаете. С красными (Radeon 5700 ХТ 6 ГБ) все немного сложнее, кучу времени убьете чтобы взлетело, и не факт что взлетит.
    PCIe 1.0 - в этом разрезе уходит на 2й план, если будете в дальнейшем апгрейдить. Это уже из области "работает в принципе" и "работает быстро"
    Ответ написан
    1 комментарий
  • В чём понт SAS?

    alexzeynikov
    @alexzeynikov
    Ох, сигейта нет на вас ;). Я видел отличную презентацию про отличия SAS и SATA у Игоря Макарова из Seagate. По стараюсь кратко и по существу.

    Ответов несколько и с разных сторон.
    1. С точки зрения протоколов, SAS — это протокол, направленный на максимальную гибкость, надежность, функциональность. Я бы сравнил SAS с технологией ECC для памяти. SAS — это с ECC, SATA — без. Примером могут служить следующие уникальные фичи (по сравнению с SATA).
    — 2 полнодуплексных порта на устройствах SAS в отличие от одного полудуплексного у SATA. Это дает возможность строить отказоустойчивые много дисковые топологии в системах хранения данных.
    — end-to-end data protection T.10. — набор алгоритмов SAS, позволяющий с помощью чексумм быть уверенным в том, что данные, подготовленные на запись без искажений записаны на устройство. И прочитаны и переданы на хост без ошибок. Эта уникальная функция позволяет избавиться от так называемых silent errors, то есть когда на диск пишутся ошибочные данные, но никто об этом не знает. Ошибки могут появиться на любом уровне. Чаще всего в буферах в оперативной памяти при приеме-передаче. Silent errors — бич SATA. Некоторые компании утверждают что на диске SATA объемом боле 500 ГБ вероятность повреждения данных хотя бы в одном секторе близка к единице.
    — про мультипасинг говорили в предыдущих ответах.
    — зонинг T.10 — позволяет разбить домен SAS на зоны (типа VLAN, если такая аналогия ближе).
    — и многое-многое другое. Я привел только самые общеизвестные фичи. Кому интересно — читайте спецификации SAS/SATA

    2. Не все SAS диски одинаковы. Есть несколько категорий SAS и SATA.
    — т.н. Enterprise SAS — обычно 10K или 15K оборотов в минуту. Объемы до 1 ТБ. Используются для СУБД и критичных к скорости приложений.
    — Nearline SAS — обычно 7.2K, объемы от 1 ТБ. Механика таких устройств похожа на Enterprise SATA. Но все равно два порта и другие прелести SAS. Используются в enterprise, где нужны большие объемы.
    — Enterprise SATA, иногда RAID edition SATA — почти то же самое что и NL SAS, только однопортовый SATA. Чуть дешевле NL SAS. Объемы от 1 TB
    — Desktop SATA — то что ставится в PC. Самые дешевые и самые низкокачественные диски.
    Первые три категории можно ставить в массивы на контроллерах от LSI и Adaptec. Последний — нельзя категорически. Проблем не оберетесь потом. И не потому, что у нас картельный сговор, а потому, что диски проектируются под разные задачи. То есть 8x5 или 24x7, например. Есть также такое понятие как максимальная допустимая задержка, после которой контроллер считает диск умершим. Для десктопных дисков она в разы больше. Это значит, что под нагрузкой рабочие Desktop SATA будут «вываливаться» из массива.
    Короче, ориентируйтесь на конкретные линейки под конкретные задачи. Лучше всего смотреть на сайтах производителей. Есть например специальные мало шумящие и мало греющиеся винты для домашней электроники.

    Те же подходы и к SSD, но область еще на сформировавшаяся, поэтому много тонкостей. Здесь мы ориентируемся по параметрам. Хотя все, что сказано в п., справедливо и для SSD.
    Ответ написан
    1 комментарий
  • Как пустить часть трафика через 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 клиента, без привязки к роутеру. Можно хоть на ноуте настроить, как я сделал.
    Ответ написан
    Комментировать
  • Если я подниму свой DNS сервер, я смогу регистрировать домены бесплатно?

    Zoominger
    @Zoominger
    System Integrator
    Нет.
    Доменные имена продают только сертифицированные регистраторы.
    Ответ написан
    Комментировать
  • Как разделить среду линукса на две?

    longclaps
    @longclaps
    Можно ли завести в линуксе двух юзеров?
    Ответ написан
    1 комментарий
  • Veeam или Acronis?

    @jahma48
    Акронис использую три года, сейчас есть предложение по veeam, попробовал бесплатный VEEAM BACKUP AND REPLICATINO COMMUNITY - буду настаивать, чтобы отклонили предложение. С интерфейсом Акрониса разберется слепой младенец с аутизмом, интерфейс же VEEAM - этот младенец и разрабатывал.. Разобравшись в трехзвенной (зачем-то) архитектуре, полдня бился чтобы сделать один единственный фул бэкап одной единственной машины. Но получал только ошибки типа "Failed", которые нигде никак не конкретизируются и не уточняются. Одни разделы INVENTORY и BACKUP INFRASTRUCTURE (угадай, в чем разница?) чего стоят. Ноут с Win10 автоматов упала в "Managed Servers" с типом Microsoft Windows Server... Пока что с Акронисом просто небо и земля.

    UPD: и контроллеры домена им восстанавливали, и ноды виндового кластера, гранулярно файлы с шар, письма из Exchange-ящика - ол эбав из суксидед.
    Ответ написан
    1 комментарий
  • Как правильно "связать" системный блок с монитором и переферией?

    @sarathorn
    php программист, веб-дизайнер, коллекционер
    Сейчас аналогичная ситуация. Есть однушка без ремонта и появилось желание убрать ПК в другую комнату, чтобы была абсолютная тишина даже в нагрузке. Только в моём случае комп убирается в кладовку, которую от рабочего стола будет отделять только одна стена. Но, мне ещё требуется проложить ~15-20 метров HDMI до телевизора, чтобы можно было играть на телеке с геймпадом.

    Забудьте про тонкие клиенты и RDP. Если вам надо только печатать и сёрфить инет, то нет смысла в мощном ПК на лоджии. Берите просто тихий/бесшумный неттоп/моноблок или компьютер в формате флешки.

    Если хочется смотреть 4к видео и/или играть в игры, особенно в 4к, то никакие тонкие клиенты не обеспечат приемлемой скорости. В ютюбе на канале LinusTechTips можно поискать видео, как ребята городили 1 ПК с парой Xeon и, по-моему, с семью видеокартами, чтобы 7 человек могли на нём играть одновременно - всё было хорошо, но и подключалось всё напрямую. А вот когда они убрали сервак подальше и заменили прямое подключение на тонкие клиенты, то начались подлагивания. В простых казуальных играх и в стратегиях это не так критично, а в шутеры играть стало сложно.

    Я хотел решить доставку контента до телевизора через Steam Link. Это сняло бы много проблем: вся игровая периферия (мышь, клава, пара геймпадов) подключаются именно к Линку, а значит не надо тянуть USB удлинители. Да и всё решается одним Ethernet кабелем, который может быть даже 100мбит/с. Плюс у меня будет телек примерно на 32-42 дюйма, а значит в 4к смысла мало. Всё шло отлично до того, как я прочитал про лаги. незначительные, но впечатления от шутеров сильно портят.

    Сейчас у меня уже по потолку и по стене протянуть гигабитный кабель до области, где будет телевизор - пригодится. Но буду по плинтусу тянуть HDMI и как-то извращаться с USB.

    Кстати, на двух USB удлинителях по метру, подключённых друг в друга не заметил ухудшения работы мышки, клавиатуры, 3G-модема. Вай-фай адаптер жалуется на нехватку питания, думаю, это можно решить промежуточным хабом с доп.питанием.
    Например, два USB3.0 хаба, соединённые последовательно, не влияют на скорость чтения/записи USB3.0 хардов.

    Как всё-таки в итоге свою проблему решу я у себя:
    1) Мониторы подключаются к видеокарте обычными DisplayPort шнурками стандартной длины (хватает просунуть через стену);
    2) Мышь+клавиатура подключаются к USB хабу в мониторе, туда же подключается MicroUSB кабель для зарядки мышки и зарядки фитнес-трекера. Флешки и телефон (не для зарядки, чисто для обмена данными) во второй USB хаб на втором мониторе.
    3) Серьёзно думаю как решить вопрос с USB3.0 хабом... Нужно подключать несколько внешних хардов и иногда брать их с собой. Ходить до компа не хочется. Скорее всего придётся решить это связкой USB3.0 удлинитель на метр-два и USB3.0 хаб с длинным шнурком. Если будут помехи, то придётся брать 2 хаба.
    4) А вот телевизор и геймпад... Тут сложнее. По потолку и по стене уже не получится провести HDMI, так как стены уже покрасили... Придётся под плинтусом. В таком случае боюсь, что 15м может не хватить. На бОльшей длине, говорят, у HDMI могут возникать проблемы. Нашёл интересный адаптер HDMI over Ethernet... но цена вопроса около 12000 рублей. Из минусов: HDMI 1.3 (максимум 1080p@60) и небольшая потеря качества. Пожалуй, ещё раз померяю необходимую длину кабеля. Если 15+м, то буду решать через Steam Link или второй ПК с андроидом и SteamOS. Андроид чисто для эмуляторов PS1, Dendy, Sega, PS2.

    UPDATE.
    Нашёл просто бомбически крутую штуку, которая избавит вас от всех проблем! Увы, для меня будет достаточно дорогой и излишней, хотя тоже возьму идею на вооружение.
    Elgato thunderbolt 2 Dock.
    На компьютере должен быть разъём thunderbolt 2. В комплекте 50м оптического и очень тонкого thunderbolt кабеля. На самом доке есть 3 штуки USB3.0, есть аудио вход и аудио выход, ещё пара thunderbolt'ов и HDMI 1.4b, который может 2160p@30. И есть возможность использовать Thunderbolt как mini-DisplayPort, то есть гонять 4К в 60Hz.
    Вам нужно купить thunderbolt контроллер для своего ПК (цен не знаю) и такое устройство (230$ + доставка из-за бугра). Это лучшее решение для вашей проблемы. Удобно, просто, быстро и без потерь. Всё через один тонкий кабель.
    С другой стороны... thunderbolt 2 имеет 20Гбит/с пропускную способность, поэтому пару 4К мониторов вы к нему не подключите, а вот один 4К и одни ФуллХД вполне. В любом случае, это лучшее решение из всех, что обсуждались в этой ветке.
    Ответ написан
    3 комментария
  • Где взять wysiwyg редактор?

    lazalu68
    @lazalu68
    Salmon
    Вот целый список действующих wysiwyg-редакторов: https://github.com/JefMari/awesome-wysiwyg
    Ответ написан
    Комментировать
  • Где взять wysiwyg редактор?

    joeberetta
    @joeberetta Куратор тега JavaScript
    Читай: https://epdf.pub/google-for-dummies.html
    Ответ написан
    Комментировать
  • Обязательно подавать питание на процессор 8 pin + 8 pin на x570 master?

    @nehrung
    Не забывайте кликать кнопку "Отметить решением"!
    два по 8 pin на CPU
    Ваш проц пожирает по 12 вольтам мощность 105 ватт - это будет ток примерно 9 ампер. Этот ток идёт по 8 контактам (если задействовать оба разъёма, они там наверняка в параллель), или по четырём, если задействовать только один.
    Мой вердикт: для 9 ампер достаточно 4-х контактов (т.е. одного разъёма), использовать оба излишне. БП имеет один - вот его и достаточно.
    Переходники с Molex крайне нежелательны, Molex не рассчитан на такой ток, он будет подплавляться и когда-нибудь это приведёт к КЗ.
    Обязательно нужно думать о замене БП или в целом хватит питания от старого БП?
    Менять мощный киловаттный БП из-за отсутствия второго 8-проводного хвоста??? У вас что, денег избыток?
    Если уж невтерпёж использовать второй хвост, то вскройте БП и припаяйте этот хвост прямо на плату, без переходников, на те же точки, что и имеющийся.
    Ответ написан
    Комментировать
  • Какое железо подобрать для виртуализации с пробросом видеокарты в гостевую ОС?

    @Pagliaccio Автор вопроса
    Внедряю CRM
    На странице https://en.wikipedia.org/wiki/List_of_IOMMU-suppor...
    указано, что IOMMU поддерживают чипсеты X370 и X470 при условии поддержки со стороны разработчика материнской платы. Буду сначала подбирать плату, а затем точечно проверять её функции через форумы или вопросы производителю.
    Там же увидел, что получилось успешно пробросить в qemu-kvm видеокарту на основе NVIDIA GTX 1050, буду тоже на неё ориентироваться (Nvidia нужна ещё для машинного обучения, под AMD библиотеки ещё слишком сырые...)
    Ответ написан
    Комментировать
  • VPS после покупки - нужна ли какая "защита"?

    1. Для начала настройте файрвол, закройте все порты, которые не используете
    2. Для доступа к vps настройте ssh желательно с приватным ключом
    3. Настройте безопасность в php, nginx, apache,..

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

    Теперь защита готова процентов так на 50% )
    Ответ написан
    3 комментария
  • Как отключить проверку файлов при загрузке через браузер Windows 10?

    tsklab
    @tsklab
    Здесь отвечаю на вопросы.
    Отключить проверку в браузере. Добавить исключение Защитника для папки загрузки. Повесить ключи от квартиры снаружи у двери.
    Ответ написан
    4 комментария
  • Парсинг сайтов. Нужен совет?

    Есть книга:

    Скрапинг веб-сайтов с помощью Python.Р.Митчелл - там все, что тебе нужно про парсеры.

    P.s. говорят, что даже в открытом доступе лежит.
    Ответ написан
    4 комментария
  • Как правильно искать поля типа NULL через LIKE?

    Melkij
    @Melkij
    PostgreSQL DBA
    Вы начните с вопроса - а что вы получить-то хотите? Исходя из этого уже конструируйте запрос. Потому что все 3 запроса в вопросе полностью корректны и именно что и должны вести себя различным образом.

    С вариантами типа функция(поле) like 'pattern' - аккуратнее. Для большинства субд это обозначает сознательный отказ от использования индексов по этому полю. Для like '%pattern%' впрочем это и так справедливо для любых btree, не префиксовый поиск вести по btree штука закономерно не эффективная.

    PS: и ой большое опасение у меня по этому фрагменту что у вас sql инъекции открыты во всю свою ширину.
    Ответ написан
    5 комментариев