Brownian motion

around the essentials…

 

Публікації Tagged ‘[lang_uk]Адміністрування[/lang_uk][lang_en]Administration[/lang_en]’

Gmail, IMAP та «мітки» кирилицею

Gmail дає змогу чіпляти до листа різні мітки, які з точки зору протоколів витягування пошти (POP3 та IMAP4) є скриньками. В принципі, інтерфейс Gmail також їх показує як скриньки з листами.

Іноді у різних рецептах (згодувати spamassassin’у теку «Спам» із гуглопошти, наприклад) окремим пунктом програми передбачено витягування вмісту такої скриньки (за допомогою fetchmail, скажімо).

Рішення просте:

poll imap.gmail.com protocol IMAP
   user "nouser@gmail.com" is localuser here
   password 'superpassword',
   folder "[Gmail]/Spam",
   # folder 'from Smith',
   # fetchlimit 1, keep,
   ssl

Але проблема виникає тоді, коли мітки українською (не латинкою, взагалі кажучи). І ніде, чомусь, я рішення не знайшов, саме тому це й пишу.

Справа в тому, що кодування назв скриньок має бути у «модифікованому UTF-7»; це зазначено у RFC 3501 (5.1.3. Mailbox International Naming Convention).

При цьому «службові» скриньки зазначаються як «[Gmail]/Скринька»:

poll imap.gmail.com protocol IMAP
   user "nouser@gmail.com" is localuser here
   password 'superpassword',
   folder "[Gmail]/&BCEEPwQwBDw-",         # «Спам» — обов’язково "[Gmail]/"
   # folder '&BDIEVgQ0- &BCEEMARIBDoEMA-', # «від Сашка» —  *без* "[Gmail]/"
   # fetchlimit 1, keep,
   ssl
(No Ratings Yet)

tc filter … protocol 802.1q … u32 та фільтрування VLAN трафіку

Викладене нижче перевірялося для 2.6.26 та 2.6.32. Обережно, у 2.6.31, ніби, є нюанси.

Зауважу, що я не дивився у cls_u32.c тощо — і можу капітально помилятися .)

Отже, спершу трохи про «логіку фільтрування»:

  • Коли ми пишемо tc filter ... protocol <proto> u32 match u<length> <value> <mask> at <offset> — ми маємо на увазі зміщення «від позиції НУЛЬ», ядро має на увазі «від початку IP пакета».
  • Якщо у Ethernet пакеті немає IP — можна фільтрувати лише всі пакети для вибраного протоколу (як, наприклад, тут фільтрують всі STP пакети), а не по масці/зміщенню. «Нуля» в такому пакеті, схоже, немає.
  • У «дереві» фільтрів мають бути лише фільтри для одного і того самого протоколу. Якщо хочеться для різних, то можна щось придумати, але про це іншим разом.

Тепер — «демонстративний» (але цілком робочий) скрипт, яким можна фільтрувати влани 22 і 310 у різні класи (мова, як завжди, про linux bridge із сконфігурованим шейпером; при цьому крізь цей комутатор бігають 802.1q tagged пакети):

» Скрипт і коментарі… »

(No Ratings Yet)

«Малювалка» трафіку на Пітоні

Свою малювалку трафіку (читай тут) я трохи «заребрендерив» — тепер це SPy Bulk Grapher, або ж SPyBG!-) — і виклав git-сховище на github’і: SPyBG.

Сталося це тому (я ж бо ніколи про це якось і не думав), що виникло бажання дописати деякі можливості, а це буде зручніше робити з нормальним керуванням кодом, з розгалуженнями тощо — а думка зробити сховище публічним (не на bitbucket.org, скажімо) вже й не дискутувалася :О)

(No Ratings Yet)

Making RtConfig (IRRToolSet) in Ubuntu

Having used IRRToolSet in elder Ubuntu releases (elder compilers, libraries etc), i finally decided to compile it under 9.10 (yes, previously made RtConfig works under 9.10 too, «but anyway»).

But something goes wrong, with several files — illegal conversion and «bad» syntax and the like.

So, if you’ll run into the same problems, hope this patch will help.

Apply patch as usually (in the directory where IRRToolSet-4.8.5 is unpacked):

$ patch -p0 --dry-run < IRRToolSet-4.8.5-ubu-patch.diff

If everything is OK, remove --dry-run switch and run again.

(No Ratings Yet)

Django-based HTB shaper configurator

I’ve decided to make it available after some nice people asked for this.

Now i have no time and, let’s say, health to make it better, so please don’t complain :-)

I guess it maybe would be better to make it available somewhere at code.google.com — i would like to work on this code later, surely.

Anyway. Now — as it now is. With incomplete README:

» Читати далі… »

(2 votes, average: 5 out of 5)

Шейпер як ефективний файрвол

Шейпер із використанням хеш-таблиць може досить ефективно захищати клієнта від атак; ось дивіться.

Зараз наш конфігуратор шейпера генерує, скажімо, такий скрипт для певного клієнта (фрагмент):

#
# Contract I-1082,
# connection 606 (0x25e).
#
# input:
/sbin/tc class add dev clients0 classid 1:25e parent 1:fe10 htb rate 96kbit ceil 128kbit quantum 1500 burst 7500 cburst 12500 prio 50
/sbin/tc filter add dev clients0 protocol 802.1q parent 1:0 prio 100 u32 ht 133:5c match ip dst X.X.133.92 flowid 1:25e
/sbin/tc filter add dev clients0 protocol 802.1q parent 1:0 prio 100 u32 ht 133:5d match ip dst X.X.133.93 flowid 1:25e
/sbin/tc filter add dev clients0 protocol 802.1q parent 1:0 prio 100 u32 ht 133:5e match ip dst X.X.133.94 flowid 1:25e
/sbin/tc filter add dev clients0 protocol 802.1q parent 1:0 prio 100 u32 ht 133:5f match ip dst X.X.133.95 flowid 1:25e

Припустимо, з адреси 173.204.53.138 іде атака на X.X.133.94 — купа якихось пакетів, багато, весь канал клієнта забитий. (Так, адреса реальна, була реальна атака,-)

Все, що нам треба, — вписати потрібний фільтр у потрібну комірку хеш-таблиці:

» Читати далі — скрипт і коментарі… »

(No Ratings Yet)

REORDER_HDR, знову і знову

Якщо ви хочете під лінуксом створити vlan інтерфейс, а під ним створити ще один влан інтерфейс (а під ним іще, іще…), якщо ви при цьому хочете, щоб у вас щось пінгалося — не забувайте «скидати» REORDER_HDR у нуль:

ip link set up dev eth2
 
vconfig add eth2 100
ip link set up dev vlan100
vconfig set_flag vlan100 1 0
 
vconfig add vlan100 200
ip link set up dev vlan200
vconfig set_flag vlan200 1 0
 
# ....etc-etc
 
vconfig add vlan800 900
ip link set up dev vlan900
vconfig set_flag vlan900 1 0
 
ip add add 192.168.1.100/24 brd 192.168.1.255 dev vlan900
 
ping 192.168.1.3

Зверніть увагу на команду vconfig set_flag DEV 1 0 — саме вона нам потрібна :-)

Не так давно (точніше сказати не можу,-) ядро створювало інтерфейс із REORDER_HDR=0, але зараз це не так.

Побачити «поточний стан» REORDER_HDR можна так:

# cat /proc/net/vlan/vlan900
vlan900  VID: 900	 REORDER_HDR: 0  dev->priv_flags: 1
         total frames received          172
          total bytes received       222546
      Broadcast/Multicast Rcvd            0

      total frames transmitted          405
       total bytes transmitted       283743
            total headroom inc            0
           total encap on xmit           26
Device: vlan900
INGRESS priority mappings: 0:0  1:0  2:0  3:0  4:0  5:0  6:0 7:0
 EGRESS priority mappings:
(No Ratings Yet)

Конфігуратор HTB шейпера

*subj* :-)

Давно було зрозуміло, що без нормального конфігуратора керувати нормальним шейпером «важкувато», але… все ускладнювала одна обставина — я не програміст (тм).

Чим мене не влаштовують наявні інструменти?

По-перше, всі знайдені вирішують трохи інші задачі, простіші; зокрема, я так і не знайшов конфігуратора для «свого шейпера» — шейпера на мості (bridge/linux), з використанням хеш-таблиць. Для великої кількості клієнтів, для великої кількості IP адрес.

Отже, мені треба було написати щось своє.

Я собі спростив задачу:

  1. Хай його всі сварять — я використовуватиму django.
  2. Поєднувати в одній схемі «службові» («кістякові») та «клієнтські» класи здалося заважким — вирішив зробити інакше: для генерування «кістяка» шейпера використовуватиметься окремий скрипт, а для конфігурування (генерування відповідного скрипта) клієнтських класів зроблю собі GUI.

Мій шейпер (тм,-) використовує хеш-таблиці; ці таблиці створює вищезгаданий «окремий скрипт», а заповнюються вони вже скриптами, які генеруються автоматично, засобами django, через специфічні представлення даних.

Отже, «схема» містить такі сутності:

» Читати далі — скрипт і коментарі… »

(No Ratings Yet)

HTB/8021q: Це була моя помилка

Щодо проблеми із HTB шейпером 802.1Q трафіка на linux bridge — це була моя помилка :-)

Я спитав у community@lists.altlinux.org, мене напоумив Sergey Vlasov — дуже дякую!-)

Як сказав Сергій, «передача пакетов в модуль bridge выполняется раньше, чем обработка модулем 8021q». Через це класифікатор просто відкидає пакет як невідповідний фільтру — бо у фільтрі сказано «protocol ip», а ми маємо «protocol 802.1q». Схоже, що достатньо вказати «protocol 802.1q» — після цього адреси (зміщення ві дпочатку пакета IP) «відраховуються» правильно.

Це дає можливість на комутаторах будувати «агрегаційні» шейпери, які оброблятимуть у клієнтських класах пакети клєнтів незалежно від «напрямку» (від належності до певної віртуальної мережі). Причому міграція зі «звичайного» шейпера на комутаторі потребуватиме мінімальних зусиль — треба буде замінити у конфігураторі шаблон «protocol ip» на «protocol 802.1q» (або ж додати ще один фільтр — якщо це справді необхідно).

(No Ratings Yet)

Проблема з HTB шейпером 802.1Q трафіка на linux bridge

Увага: жодних проблем з vlan у класифікатора немає, то була моя помилка.

Експериментував і на трапив на таку проблему: не спрацьовує u32 classifier для «міченого» трафіка на лінукс-комутаторі.

Детальніше:

Полігон для тестування:

Маємо три лінукси. На одному з них (SW) робимо двопортовий комутатор, на інших (BoxA та BoxB) чіпляємо адреси 172.17.2.10/24 та 172.17.2.11/24, наприклад.

Спершу перевіряємо, що на кросовому шнурку BoxA може пінгати BoxB і навпаки.

» Читати далі — скрипт і коментарі… »

(No Ratings Yet)

Scapy для полегшення життя :-)

Така історія.

Шукав якось генератор OSPF Hello пакетів для бомбардування «лабораторного макета». Трохи помучився із packEth (я ловив/ліпив/перевіряв пакети, він огинався і зависав) і закинув цю ідею — взяв дві циски на двох кінцях каналу (пакетів мало, але регулярно і чесні, мені цього було достатньо).

Вже кинувши цю ідею, погуглив і надибав Scapy.

Це дивовижний інструмент :-)

Подивіться кілька статей:

Отже, двійко рецептів. Генерування OSPF Hello пакетів та Графік часу відгуків на ping.

» Читати далі — скрипт і коментарі… »

(No Ratings Yet)

Останні публікації

Most Rated

Highest Rated

Теґи

Архіви