• Linux shaping VLAN?

    EvilMan
    @EvilMan
    У Вас mark=«3». Так же в фильтре у Вас указано «handle $mark fw flowid 1:$mark», да только что-то этого класса у Вас нет. Отсюда и проблемы. К тому же, раз вы режете весь трафик, то можно обойтись и без использования iptables.

    Например, так (адаптация Вашего скрипта):
    tc qdisc del dev $dev root
    tc qdisc add dev $dev root handle 1: htb default 10
    tc class add dev $dev parent 1:0 classid 1:10 htb rate $rate ceil $rate prio 0
    
    Ответ написан
  • Умных книжек, каких?

    EvilMan
    @EvilMan
    Таненбаум «Архитектура компьютера» (остальные его книги — опционально)
    Хагарти «Дискретная математика для программистов» (поможет лучше понять МИТовский учебник по алгоритмам)
    Стивенс «Профессиональное программирование в Юникс» (ещё у него есть три книги TCP/IP Illustrated, это если сетями занимаетесь).
    Керниган и Пайк «Практика программирования»
    Опционально (очень углубленное изучение фундаментальных основ, которое может Вам даже не понадобиться):
    Кнут «Искусство программирования» (вышло 4 тома и ещё пара выпусков приложений) — требует очень глубокого знания дискретной математики.
    Ульман, Ахо и сотоварищи Книга дракона (если задумаете свой язык и компилятор к нему написать), так же от них «Введение в теорию автоматов, языков и вычислений», которую надо читать перед книгой дракона.
    Так же опционально какие-нибудь книги по вычислительной математике, а перед ними — по высшей математике (Фихтенгольц). Как справочник можно держать Письменного «Конспект лекций по высшей математике».
    Ответ написан
    1 комментарий
  • Как настроить one-to-one на subinterface в Shorewall'е?

    EvilMan
    @EvilMan
    Если Вам необходимо использовать nat 1:1, то используйте stateless nat с помощью утилиты ip. Например так:
    ip route add nat <IP_B> via 1.1.1.1
    ip rule add nat <IP_B> from 1.1.1.1
    
    Ответ написан
    Комментировать
  • Есть ли смысл вручную указывать broadcast для интерфейсов?

    EvilMan
    @EvilMan
    Особой разницы нет, главное, чтобы широковещательные маршруты присутствовали в таблице local. Но тут надо смотреть по ситуации: видел примеры скриптов автоконфигурирования dhcp-сервера, которые без широковещательного адреса на интерфейсе роняли его (dhcp-сервер).

    Так же можно использовать конструкцию по типу этой:
    ip addr add 192.168.2.1/24 brd + dev eth0
    

    В этом случае широковещательный адрес будет высчитан автоматически.
    Ответ написан
  • Кто-нибудь пользуется СНПЧ?

    EvilMan
    @EvilMan
    СНПЧ стоит использовать только в тех случаях, когда печатаете в очень больших объёмах. Если меньше, то лучше глядеть в сторону перезаправляемых картриджей. Рекомендую продукцию от chernil.net (как перезаправляемые картриджи, так и снпч).
    По поводу шлейфа — мне хватило на 2 года умеренных объёмов печати (потом просто принтер поменял и перешёл на перезаправляемые картриджи). Но тут зависит от того, как он проложен — нет ли натяга или перегибов.
    Ответ написан
    Комментировать
  • Фильтрация пакетов в bridge (iptables,ebtables)

    EvilMan
    @EvilMan
    И так, подробный отчёт о тесте.
    Из железа под рукой оказалось пара голосовых шлюзов, которые будут использоваться в роли конечных устройств (адреса 192.168.253.1 и 192.168.253.2), и управляемый свитч. Запихиваем каждый из аддпаков в отдельный влан, настраиваем привязку портов к вланам на коммутаторе и начинаем эксперимент.

    1. На машинке создаём бридж-интерфейс и два влана, запихиваем вланы в бридж, поднимаем всё, прописываем адрес на бридж-интерфейсе:
    brctl addbr br0
    ip l add l eth2 name eth2.10 type vlan id 10
    ip l add l eth2 name eth2.11 type vlan id 11
    ip l s up dev br0
    ip l s up dev eth2.10
    ip l s up dev eth2.11
    ip a add 192.168.253.3/29 dev br0
    


    2. Устанавливаем переменные sysctl, при этом не будет никакой фильтрации:
    sysctl -w net.bridge.bridge-nf-call-iptables=0
    sysctl -w net.bridge.bridge-nf-filter-vlan-tagged=0
    


    3. Проверяем связность между устройствами в разных портах моста и хостовой машиной (пингуем остальные адреса с аддпака 192.168.253.1/29):
    test-addpac-1# ping 192.168.253.2
    PING 192.168.253.2 (192.168.253.2): 56 data bytes
    64 bytes from 192.168.253.2: icmp_seq=0 ttl=64 time=10 ms
    64 bytes from 192.168.253.2: icmp_seq=1 ttl=64 time=10 ms
    64 bytes from 192.168.253.2: icmp_seq=2 ttl=64 time=10 ms
    64 bytes from 192.168.253.2: icmp_seq=3 ttl=64 time=10 ms
    
    --- 192.168.253.2 ping statistics ---
    4 packets transmitted, 4 packets received, 0% packet loss'
    round-trip min/avg/max = 10/10/10 ms
    test-addpac-1# ping 192.168.253.3
    PING 192.168.253.3 (192.168.253.3): 56 data bytes
    64 bytes from 192.168.253.3: icmp_seq=0 ttl=64 time=15 ms
    64 bytes from 192.168.253.3: icmp_seq=1 ttl=64 time=5 ms
    64 bytes from 192.168.253.3: icmp_seq=2 ttl=64 time=5 ms
    64 bytes from 192.168.253.3: icmp_seq=3 ttl=64 time=5 ms
    64 bytes from 192.168.253.3: icmp_seq=4 ttl=64 time=5 ms
    64 bytes from 192.168.253.3: icmp_seq=5 ttl=64 time=5 ms
    
    --- 192.168.253.3 ping statistics ---
    6 packets transmitted, 6 packets received, 0% packet loss'
    round-trip min/avg/max = 5/6/15 ms
    

    Как видно, всё работает.

    4. Устанавливаем переменную для того, чтобы трафик между портами попадал в iptables, и добавляем правило в файерволл для блокировки трафика между двумя устройствами с заданными адресами:
    sysctl -w net.bridge.bridge-nf-call-iptables=1
    iptables -A FORWARD \
      --src 192.168.253.1 --dst 192.168.253.2 \
      -j DROP
    

    И проверяем так же с помощью пинга:
    test-addpac-1# ping 192.168.253.2 
    PING 192.168.253.2 (192.168.253.2): 56 data bytes
    
    --- 192.168.253.2 ping statistics ---
    5 packets transmitted, 0 packets received, 100% packet loss'
    test-addpac-1# ping 192.168.253.3
    PING 192.168.253.3 (192.168.253.3): 56 data bytes
    64 bytes from 192.168.253.3: icmp_seq=0 ttl=64 time=5 ms
    64 bytes from 192.168.253.3: icmp_seq=1 ttl=64 time=5 ms
    64 bytes from 192.168.253.3: icmp_seq=2 ttl=64 time=5 ms
    64 bytes from 192.168.253.3: icmp_seq=3 ttl=64 time=5 ms
    64 bytes from 192.168.253.3: icmp_seq=4 ttl=64 time=5 ms
    
    --- 192.168.253.3 ping statistics ---
    5 packets transmitted, 5 packets received, 0% packet loss'
    round-trip min/avg/max = 5/5/5 ms
    

    И проверяем счётчики в iptables (в динамике вы увидите, как они инкрементируются):
    anton@insider:~$ sudo iptables -L FORWARD 8 -n -v
      455 38220 DROP  all  --  *  *   192.168.253.1  192.168.253.2 
    


    Итого: вот примерно так можно фильтровать трафик между портами моста, обходясь совершенно без ebtables. Чтобы фильтровать трафик между портами с учётом интерфейса, то необходимо использовать расширение physdev примерно так:
    iptables -A FORWARD -m physdev \
      --physdev-in eth2.10 --physdev-out eth2.11 \
      --src 192.168.253.1 --dst 192.168.253.2 \
      -j DROP
    


    Так же следует учесть, что ebtables так же умеет фильтрацию по полям заголовков L3, если соответствующие модули загружены.

    Можно сделать тоже самое с помощью ebtables:
    ebtables -A FORWARD -p ip \
    --ip-source 192.168.253.1 --ip-destination 192.168.253.2 \
    -j DROP
    


    Как видите, для фильтрации вовсе не нужно указывать мак-адреса. Подробные сведения о модулях ebtables вы сможете найти в мане. Так же будет полезно поиграться с tcpdump на бриджах и бридж-портах при фильтрации — вы увидите, что на один порт моста приходит трафик, но не пересылается в другой порт.
    Ответ написан
    3 комментария
  • Фильтрация пакетов в bridge (iptables,ebtables)

    EvilMan
    @EvilMan
    1. Для того, чтобы можно было с помощью iptables фильтровать трафик, проходящий транзитом через мост необходимо выставить следующие системные переменные sysctl:
    net.bridge.bridge-nf-call-iptables = 1
    net.bridge.bridge-nf-call-ip6tables = 1
    

    2. После того как установите переменные sysctl, можно использовать для этого iptables, используя сопоставление (match) -m physdev --physdev-in / --physdev-out
    3. См. предыдущий ответ.
    Как-то так.
    Ответ написан
    6 комментариев
  • Как провести анализ нагрузки на дисковые подсистемы?

    EvilMan
    @EvilMan
    В Linux в статистике использования процессора смотрите значение iowait. Так же окажутся полезными утилиты vmstat, iostat и iotop.
    Ответ написан
  • Синтез конечного и структурного автомата

    EvilMan
    @EvilMan
    Пусть состояние кнопки считывается через определённые промежутки времени, достаточно короткие, но не очень. Состояние кнопки: 0 — кнопка не нажата, 1 — кнопка нажата.
    состояние автомата/состояние кнопки 0 1
    0 0 1
    1 0 2
    2 0 3
    3 0 3

    Состояние автомата 1 — короткое нажатие кнопки, а состояние автомата 2 — длинное нажатие кнопки.
    Ответ написан
  • Совместимость трансиверов для сетевой карты и коммутатора

    EvilMan
    @EvilMan
    Да. Но тут главная проблема не в совместимости трансиверов между собой, а совместимость трансиверов и оборудования. Этот вопрос лучше уточнить у Ваших поставщиков, но обычно проблем не возникает.
    Ответ написан
    Комментировать
  • Какую книгу по Linux Kernel почитать?

    EvilMan
    @EvilMan
    Для теории сначала Таненбаума «Современные операционные системы». Потом как раз-таки Бовет и Чезати «Understanding the Linux kernel» (она же «Ядро Linux» в русском переводе). И под конец можно зачитать Роберта Лава «Linux kernel development» (Разработка ядра Linux, сейчас ожидается выпуск третьего издания на русском, если с английским плохо), которая более приземлённо раскрывает подробности реализации.
    Ответ написан
    3 комментария
  • Debian wheezy, процесс kworker сильно грузит ядро. Как лечить?

    EvilMan
    @EvilMan
    Попробуйте пересобрать ядро, используя исходники с kernel.org. Это самый быстрый вариант решения проблемы, если не хотите заморачиваться с использованием профайлера ядра и другими мозговыносящими ядерными штуками.
    Ответ написан
    Комментировать
  • Как правильно настроить OpenVPN для последовательной маршрутизации трафика через два сервера?

    EvilMan
    @EvilMan
    Достаточно клиентам отдать маршрут через первый сервер (сервер 1), а на серверах 1 и 2 настроить маршрутизацию. Нат нужно настраивать только на сервере 2, через который трафик уже в интернет уходит.
    На первом сервере:
    ip route add default via <server2-ip> dev tunX table 10
    ip rule add from <clients-net> lookup 10 pref 10
    

    На втором сервере надо будет уже настроить НАТ и прописать маршрут до клиентских сетей через сервер 1
    ip route add <clients-net> via <server1-ip> dev tunY
    iptables -t nat -A POSTROUTING --src <clients-net> -o <extiface> \
      -j SNAT --to-source <extip>
    

    Вот как-то так.
    Ответ написан
    Комментировать
  • Лучшая первая книга об алгоритмах?

    EvilMan
    @EvilMan
    Кормен для полного понимания требует знаний дискретной математики и основ математической логики. Если же часть глав пропустить, то неплохой «рецептурный» справочник. Но для начала всё-таки лучше Вирта почитать — на порядок доступнее для начинающих.
    Ответ написан
    Комментировать
  • Как правильно построить сеть?

    EvilMan
    @EvilMan
    Ну как вариант, повесить на эзернет-интерфейс ещё адрес и прикупить коммутатор. Особой деградации производительности не должно быть.
    Ответ написан
  • Какой функциональный язык программирования выбрать при изучении структур данных и алгоритмов?

    EvilMan
    @EvilMan
    Собственно, рекомендую Scheme в комплекте с книгой «Structure and Interpretation of Computer Programs» (Структура и Интерпретация Компьютерных Программ aka SICP) за авторством Харольда Абельсона и сотоварищей. Если читать внимательно и выполнять хотя бы часть заданий, то очень неплохо освоить можно функциональное программирование, и на изучение функциональных языков уйдёт на порядок меньше времени. Если хочется более актуального языка, то Haskell или Erlang.
    Ответ написан
    3 комментария
  • Какие языки программирования преподавать?

    EvilMan
    @EvilMan
    Для ПКС лучше начать с паскаля или си.
    Для ПИ — java.
    Ответ написан
    Комментировать
  • Помогите определится с выбором оборудования Cisco

    EvilMan
    @EvilMan
    Ethernet-коммутаторов с е1 не бывает в природе. Вам нужен будет маршрутизатор для того, чтобы терминировать е1. А коммутаторы на 10г отдельно брать.
    Ответ написан
    Комментировать
  • Где можно купить томик Кормена? Какое издание лучше?

    EvilMan
    @EvilMan
    Брал второе издание на озоне. Третье издание опять отложили, теперь обещают в 2013 году его выпустить. Кнута можно там же купить.
    Ответ написан
    Комментировать