Mikrotik: Blokování a omezení multicast provozu

Mikrotik mini-howto? Krátce ze života s RouterOS.

Mikrotik blokování/omezení multicast

Nedávná realizace VPN tunelu pro zákazníka nás přivedla k jednomu drobnému problému, požadavek na začátku byl plně transparentní L2 tunel spojující dvě lokality, za normálních okolností je rozumné vyhnout se L2 bridge sítím přes VPN, raději děláme klasickou routovanou VPN.

Problem nastal po zjištění, že v lokalitě 1 je zdroj multicast provozu, který díky bridge proléza do druhé lokality přes VPN, dle zjišťování Mikrotik stále dosud neumí IGMP snooping (viz. kňučení zde http://forum.mikrotik.com/viewtopic.php?t=62073), který by tomu mohl zabránit.

Podobný problém jsem zaznamenal i v případě multicast provozu služby IPTV, který přicházel do Mikrotiku přes uplink port (typicky ether1-gateway) a díky výchozí konfiguraci zbytku portů routeru jako switche v kombinaci s bridgem bezdrátového rozhraní WLAN docházelo k šíření multicasti do WiFi, ± 10Mbit provoz trvale zaplavující wifi není ideální, zvláště pokud ho tam nikdo nechce.

Co je to Multicast?

IP multicast je metoda přeposílání IP datagramů z jednoho zdroje skupině více koncových stanic. Multicast adresy lze vcelku dobře identifikovat cílové adresa je v rozsahu třídy D (224.0.0.0 – 239.255.255.255), zdrojová adresa je unicast adresa odesílatele.

unicast-vs-multicast-1

Co je to IGMP snooping?

IGMP snooping je funkce dobřé známá z chytřejších switchů, kdy dochází ke zkoumání IGMP zpráv procházející switchem, zařízení si na jejich základě udržuje tabulku jakou multicast adresu posílat na jaký port, tedy data putují pouze tam kam mají a nezahlcují trasu kam nepatří, velmi zjednodušeně řečeno.

Multicast IGMP snooping
Multicast IGMP snooping

 

Hledané řešení je triviální

Varianta 1. Úplné blokování multicast provozu

/interface bridge filter add chain=output out-interface=wlan1 packet-type=multicast action=drop

Varianta 2. Omezení multicast provozu

Zapneme firewall na bridge, aby provoz prošel až na firewall/CPU a bylo možné s ním něco udělat.

/interface bridge settings set use-ip-firewall=yes

Markujeme(označíme) pakety multicastu.

/ip firewall mangle add chain=prerouting action=mark-connection new-connection-mark=multimark passthrough=yes dst-address-type=multicast
/ip firewall mangle add chain=prerouting connection-mark=multimark action=mark-packet new-connection-mark=multimark_packet passthrough=no

Máme označen multicast provoz, pomocí fronty omezíme jednoduše jeho rychlost na např. 512kbit.

/queue tree add parent=wlan1-parent packet-mark=multimark_packet max-limit=512k name="wlan1-limit-multicast"

A to je vše, takto nám to funguje.

Díky za pozornost. František Havel, MOJEservery.cz.

Realizováno! Konfigurace XEN datacentrum Master Praha

Realizováno!

Pro zakazníka Mediawork s r.o. provedena konfigurace virtualizačního hypervisoru Xen na fyzickém serveru Supermicro H8SGL, procesor 12x AMD Opteron, 40GB RAM a 5TB diskové prostoru v RAID konfiguraci.

Server je fyzicky umísťen v datacentru Master Praha.

Co je to XEN hypervisor ?

Xen je hypervizor poskytující rozhraní pro virtualizaci hardwaru a běh více operačních systémů na jenom počítači současně, laicky řečeno jde o řešení virtualizace operačních systému, na jednom fyzickém stroji je možné spustit více systémů, dochází tak krom jiného k lepšímu využití zdrojů.

xen-configure-mediawork-1

xen-configure-mediawork-2

Děkujeme za příležitost a těšíme se na další spolupráci. MOJEservery.cz.

Přemýšlíte o virtualizace nebo již virtualizujete?

Hledáte vhodné řešení, máte problém nebo se jen chcete poradit, zeptat na názor, konsolidovat? Nabízíme Vám naše mnohaleté zkušenosti a služby, naše řešení pro komplexní virtualizaci se vším všudy a zálohování  jako standardní součást. Kontaktujte nás.

Virtualizace s MOJEservery.cz.

http://www.mojeservery.cz/produkty-sluzby/virtualizace/

Linux mini-howto: Rdesktop a neviditelný kurzor myši Windows 2012R2

Linux mini-howto?
Krátce o nástrojích ze života sysadmina.

Drobná nepříjemnost dokáže rozladit den, čas od času je potřeba připojit se Windows mašině, nainstalujete svůj oblíbený nástroj rdesktop , zadáte něco smyslu tohoto.

# rdesktop -k en-us <ip_address> -u Administrator -d domain -p password

S očekáváním popadnete do ruky myš a chcete začít zuřivě klikat, ale ouha co to, nematé kurzor myši, je neviditelný, občas někde problikne a opět zmizí. S Windows se dá pracovat bez myši, jde to, ale dře to, jsou ale i horší noční můry.

Lze to naštěstí “fixnout” vypnutím vykreslováním stínu u kurzoru myši (Control Panel → Hardware → Mouse → Pointers), viz obrázek.

Vypnutí vykreslování stínu pro kurzor myši
Vypnutí vykreslování stínu pro kurzor myši

Snadné.

Ještě přikládám odkaz jak řešit pomocí Group Policy, to už je lehce vyšší dívčí.

http://www.paperstreetonline.com/2015/04/09/server-2012-rdesktop-fix-disappearing-mouse-cursor-with-group-policy/

Díky za pozornost. František Havel, MOJEservery.cz.

Výstup dmesg pro lidi, dmesg-human-readable

Linux mini-howto?
Krátce o nástrojích ze života sysadmina.

Výstup dmesg pro lidi


Byl položen jednoduchý dotaz, jak udělat výpis dmesg čitelný pro lidi ? Co lidem vadí nejvíce na výstupu dmesg je nečitelnost času, “defaultně” je místo snadno čitelného formátu času vypisován tzv. timestamp a má to svůj důvod, výstup může vypadat např. takto.

Dmesg výstup s časem ve formátu timestamp.
Dmesg výstup s časem ve formátu timestamp.

Uznávám, že to může být komplikace, ale opět platí jak kdy, např. situace kdy je potřeba zjistit čas mezi událostí A a B je při reprezentaci času formátem timestamp snadno řešitelná, pouze odečtete dvě čísla a to je snadné.

Chci “normální” čas, né timestamp!

Nástroj dmesg je součástí balíku nástrojů util-linux (https://www.kernel.org/pub/linux/utils/util-linux/), kolem verze 2.20.x (rok ~ 2012) byla přidána volba pro dmesg -T (nebo –ctime), podívejme se na to.

# man dmesg
---
-T, --ctime
Print human readable timestamps. The timestamp could be inaccurate!
---

# root@www:~# apt-cache show util-linux | grep Version
Version: 2.20.1-5.3
# root@www:~# dmesg -T
Dmesg výstup s časem ve formátu pro lidi (human-readable).
Dmesg výstup s časem ve formátu pro lidi (human-readable).

Můj dmesg neumí “-T”

Zatím to bylo vcelku snadné, ale jsou situace kdy není magický parametr k dispozici, typicky na embedded zařízení, např. OpenWrt routery s busybox nebo prostě máte starší verzi util-linux, zde si pomůžeme jednoduchým bash scriptem, uložte si ho např. do /usr/local/bin/dmesgh a nastavte ho jako spustitelný (chmod +x dmesgh), nejsem autorem, publikuji tak jak je, mám ho už roky ke spokojenosti.

#!/bin/bash
# Translate dmesg timestamps to human readable format

# desired date format
date_format="%a %b %d %T %Y"

# uptime in seconds
uptime=$(cut -d " " -f 1 /proc/uptime)

# run only if timestamps are enabled
if [ "Y" = "$(cat /sys/module/printk/parameters/time)" ]; then
  dmesg | sed "s/^\[[ ]*\?\([0-9.]*\)\] \(.*\)/\\1 \\2/" | while read timestamp message; do
    printf "[%s] %s\n" "$(date --date "now - $uptime seconds + $timestamp seconds" +"${date_format}")" "$message"
  done
else
  echo "Timestamps are disabled (/sys/module/printk/parameters/time)"
fi

Výstup je stejný jako v předchozím případě, dokonce jak je vidět ze scriptu provádí kontrolu zda-li jsou ve výstupu jádra povoleny timestamp, je možné je zcela potlačit.

#man dmesg

Studujte manuály, užívejte moudře, díky za pozornost.
František Havel, MOJEservery.cz