Monthly Archives: Červen 2012

Routery Linksys vs Netgear a VLAN s DD-WRT

Tak jsem se postupem času dopracoval dopsat tento článek.

Zadání bylo vcelku jednoduché na levných zařízeních typu Linksys WRT160N, Linksys E1000 nebo Netgear N150, Netgear 3500L zprovoznit VLANy pro použití s IPTV.
Už kdysi dávno můj kolega Honza Kratochvíl do Linksys routerů začal programovat upravený firmware OpenWRT nebo DD-WRT, vzali jsme tedy jako základ jeho znalosti a první router pro tyto účely byl Linksys WRT160N.

Popíšu základní požadavky:

  1. Levný router s možností nastavení VLAN pro IPTV
  2. Klasická kombinace 1xWAN port + 4xLAN porty + WiFi v N variantě
  3. Možnost monitoringu například SNMP
  4. Vzdálená správa nejlépe HTTP Provisioning, TR-069 nebo XML

Výběr byl následující:

  • Linksys WRT160N
    • cena kolem 900,- verze RF (Refurbish)
    • použitelná pouze HW revize v3.0 s čipsetem BCM4716 a BCM532
    • plná podpora DD-WRT
    • 10/100Mb porty LAN a WAN

     

  • Linksys E1000
    • cena kolem 900,- verze RF (Refurbish)
    • použitelná pouze HW revize v1.0  s čipsetem BCM4716A nebo v2.0 s čipsetem BCM5357
    • plná podpora DD-WRT
    • 10/100Mb porty LAN a WAN

     

  • Netgear 3500L
    • cena kolem 1500,-
    • HW určen přímo pro nasazení Linuxu
    • plná podpora DD-WRT
    • 10/100/1000 Mb porty LAN a WAN
    • USB

U testovaní byl samozřejmě tlak na cenu tak jsme věnovali asi měsíc nebo dva modelu Linksys WRT160N a E1000, zjistili jsme ale že daný čipset ačkoliv DD-WRT podporuje VLANy tak pouze ty interní v rozsahu 1-15.

Na internetu koluje spoustu blogů na toto téma, držel jsem se manuálu DD-WRT který naleznete zde
http://www.dd-wrt.com/wiki/index.php/Switched_Ports
a zjistili jsme, že vlastnost VLAN a funkčnost jiné VLAN ID mimo rozsah 1-15 se musí definovat například tímto příkazem přímo přes SSH nebo spouštěcí skript

/sbin/vconfig add eth0 389
/sbin/ifconfig vlan389 up
sleep 1
/sbin/vconfig add eth0 385
/sbin/ifconfig vlan385 up
sleep 1
/usr/sbin/nvram set port0vlans="16 18 19"
/usr/sbin/nvram set port1vlans="18 19"
/usr/sbin/nvram set port2vlans="18 19"
/usr/sbin/nvram set port3vlans="1 18 19"
/usr/sbin/nvram set port4vlans="1 18 19"
/usr/sbin/nvram commit
sleep 5
/bin/echo "0t 1 2 8" >/proc/switch/eth0/vlan/389/ports
/bin/echo "0 8" >/proc/switch/eth0/vlan/2/ports
sleep 5
/bin/echo "0t 8" >/proc/switch/eth0/vlan/385/ports
/sbin/startservice wan
/usr/sbin/nvram set http_wanport="8088"
/usr/sbin/nvram set telnet_wanport="23"
/usr/sbin/nvram set telnetd_enable="1"
/usr/sbin/nvram set remote_mgt_telnet="1"
/usr/sbin/nvram set remote_management="1"
/usr/sbin/nvram set router_name="WNR3500L"
/usr/sbin/nvram commit

Tato konfigurace je funkční na všech modelech které podporují VLANy resp. toto je přímo z Netgear 3500L.

V konfiguraci naleznete VLAN 389 (IPTV) a VLAN 385 (Hotspot), nejprve se příkazem tato VLAN nastartuje jako interface a pak přijde kámen úrazu, pomocí příkazu nvram a /proc/switch musíme nastavit typ portu na Trunk a pak na koncovém portu provoz Odtagovat. Možná pomůže pro znalé toto blokové schéma routeru, pro neznalé vysvětlím níže 🙂

 

Pro aplikaci skriptu je potřeba pochopit jak vlastně HW funguje.

Představme si, že router má pěti portový switch, tento switch řídí dle typu čipsetu samostatný procesor v blokovém schématu jako port 5 (u 100mbit verze) nebo port 8 (u gigové verze). Tento virtuální port/procesor řídí provoz k centrálnímu procesoru/čipsetu. Musím tedy na port switch 0 definovat typ portu Trunk s Tagovanou VLAN 389 a 385 a zároveň Access VLAN. Tomu odpovídá tato definice.

/bin/echo "0t 1 2 8" >/proc/switch/eth0/vlan/389/ports
/bin/echo "0 8" >/proc/switch/eth0/vlan/2/ports

Půjdeme zezadu, příkazem /proc/switch/eth0/vlan/389 říkám, že VLAN 389 je na portu switche 0 (WAN) Tagovaně tedy proto „t“, na portu 1 a 2 Netagovaně, port číslo 8 je právě zmiňovaný interní port resp. CPU které musí celé switchování zprocesovat.

Druhý řádek znázorňujě VLAN 2 což defaultní VLANa v DD-WRT.

/usr/sbin/nvram set port0vlans="16 18 19"
/usr/sbin/nvram set port1vlans="18 19"
/usr/sbin/nvram set port2vlans="18 19"
/usr/sbin/nvram set port3vlans="1 18 19"
/usr/sbin/nvram set port4vlans="1 18 19"

Další příkaz nvram zapisuje parametry typu portu Trunk/Access a také tím mažu defaultní nastavení DD-WRT.

 

Nastavení je funkční pouze na gigových modelech tedy Netgear 3500L nebo Linksys E4200, WRT320N a pod, u levných routerů se 100mbit čipsety toto nefunguje, po důkladném testování i dalších TP-Link, OEM jsem si přečetl Datasheet čipu na routeru a zjevně už čip neumí na switchy VLANy zpracovat.

Bohužel dva měsíce testování routerů jsme rozhodli, že jediný funkční model s IPTV je pouze Netgear 3500L, během této doby také Mikrotik začal prodávat routery RB751U-2HnD a RB751G-2HnD tedy gigovou verzi.

Mikrotik všeobecně podporuje SSH, Telnet, Winbox a například API a právě to byl největší důvod zvolit právě Mikrotik. Při switchování tří IPTV HD kanálů a datového toku cca 3x 15Mbit je zatížění CPU max 20%, nicméně debatě o Mikrotik RB751U-2HnD se budu věnovat někdy přístě.

Výsledek

Levné routery s čipsety Broadcom nebo Atheros běžící na DD-WRT v cenové hladině kolem 1000,- Kč není z technických důvodů použítých čipů možné použít na switchování L2 a použití IPTV, jediná cesta je Mikrotik RB751, UBNT Airouter nebo gigový router Netgear 3500L.

Samozřejmě budu rád za feedback.

Tomáš Chott

Synology NAS a Ubiquiti AirCam

Společnost Ubiquiti v poslední době prodává IP kamery AirCam resp. AirVision viz http://www.ubnt.com/airvision

Synology NAS v současné verzi oficiálně nepodporují tyto kamery, nicméně jsem na internetu našel návod který doplní kompatibilitu těchto kamer.

Konfigurace probíhá pouze přes SSH konzoli, tedy je nutné na Synology nejřive spustit. Detailní postup je níže.

  • Zapněte SSH nebo Telnet službu, v menu Ovládací panel zvolte Terminál a zaškrtněte položku Telnet nebo SSH a klikněte na Použít.
    Synology je nyní připraveno k editaci.
    Pro připojení k Telnetu/SSH použijte například program Putty nebo TerraTerm
  • Připojte se pomocí programu na IP adresu NAS. Username:  root, password: <vaše heslo>
    POZOR zalogovat se musíte pouze přes uživatele root, heslo odpovídá defaultnímu uživateli admin. V opačném případě nebudete moci uložit konfiguraci.Pokud se úspěšně přihlásíte bude obrazovka vypadat taktoRackStation>
  • V příkazové řádce budeme konfigurační soubory editovat pomocí editoru „VI“
    • DSM3.1 (SurveillanceStation 5)
      RackStation>
      vi /usr/syno/etc.defaults/camera_model.conf
    • DSM4.x (SurveillanceStation 6)
      RackStation> vi /volume1/@appstore/SurveillanceStation/conf/camera_model.conf
    • DSM4.x a DSM5.x  (SurveillanceStation 6.1 + 6.2)
      RackStation> vi /volume1/@appstore/SurveillanceStation/device_pack/camera_support/camera_model.conf

V konfiguračním souboru na první místo přidejte hodnotu pro UBNT

[camera*list]
UBNT*Aircam=UBNT*generic
D-Link*DCS-900=D-Link*generic
D-Link*DCS-2121=D-Link*generic-gr1
LINKSYS*WVC54GCA=LINKSYS*generic
TRENDNet*TV-IP100=TRENDNet*generic-gr1
TRENDNet*TV-IP100W=TRENDNet*generic-gr1
TRENDNet*TV-IP100-N=TRENDNet*generic-gr2
TRENDNet*TV-IP100W-N=TRENDNet*generic-gr2
TRENDNet*TV-IP212=TRENDNet*generic-gr3
TRENDNet*TV-IP212W=TRENDNet*generic-gr3
TRENDNet*TV-IP400=TRENDNet*generic-gr1
TRENDNet*TV-IP400W=TRENDNet*generic-gr1
TRENDNet*TV-IP410=TRENDNet*generic-ptz1
TRENDNet*TV-IP410W=TRENDNet*generic-ptz1
TRENDNet*TV-IP512P=TRENDNet*generic-gr4
SparkLAN*CAS-335=SparkLAN*generic-gr1
SparkLAN*CAS-335W=SparkLAN*generic-gr1
SparkLAN*CAS-633=SparkLAN*generic-gr2
SparkLAN*CAS-633W=SparkLAN*generic-gr2
SparkLAN*CAS-673=SparkLAN*generic-ptz1
SparkLAN*CAS-673W=SparkLAN*generic-ptz1
Sony*SNC-RZ30N=Sony*generic-gen1-ptz
Sony*SNC-RZ30P=Sony*generic-gen1-ptz
Sony*SNC-Z20N=Sony*generic-gen1-z
Sony*SNC-Z20P=Sony*generic-gen1-z
Siemens*CCIC1410-L=Siemens*generic-gr1
Siemens*CCIC1410-LA=Siemens*generic-gr1
Siemens*CCIC1410-LAW=Siemens*generic-gr1

Pod seznamem výrobců naleznete konfiguraci kamery, na první místo vložte tyto hodnoty

[UBNT*generic]
      port=554
      video source=”/live/ch01_0″
[D-Link*generic]
port=80
video source=video.cgi

etc.

Pro vysoké rozlišení vložte hodnotu „ch00_0“.

Nyní bude potřeba uložit konfigurační soubor, v editoru stiskněte klávesu „Esc“ poté vložte dvojtečku a napište příkaz pro uložení „wq“ a stiskněte enter
Celá sekvence vypadá takto Esc :wq Enter

  • DSM3.1 (SurveillanceStation 5)
    Upravíme tedy přidáme
    RackStation> vi /usr/syno/etc.defaults/camera_support.conf
  • DSM4.x (SurveillanceStation 6)
    Teď vytvoříme konfiguraci pro kameru, v příkazové řádce vložíme totoRackStation>
    RackStation>
    vi /volume1/@appstore/SurveillanceStation/conf/camera_support/UBNT.conf
  • DSM4.x a DSM5.x  (SurveillanceStation 6.1 + 6.2)
    Teď vytvoříme konfiguraci pro kameru, v příkazové řádce vložíme totoRackStation>
    RackStation>
    vi /volume1/@appstore/SurveillanceStation/device_pack/camera_support/UBNT.conf

 

A vložíme tyto hodnoty:

[UBNT*Aircam]
api = ubnt
channel_list = 1
default_channel = 1
resolutions_h264 = 640×480, 1280×720
default_resolution_h264 = 1280×720
fps_h264_640x480 = 5,10,15,20,25,30
fps_h264_1280x720 = 5,10,15,20,25,30
default_fps_h264_1280x720 = 10
default_fps_h264_640x480 = 10
default_image_quality = 5
h264 = rtsp
default_username = ubnt
default_password = ubnt

(Znovu pro uložení vložíme sekvenci Esc :wq Enter)

  • Nyní v Synology v Centrum balíčků restartujeme službu Surveillance Station a je vše připraveno pro vložení kamery UBNT.
  • V Surveillance Station pak standartním způsobem přidáme kameru,v seznamu výrobců bychom měli pak vidět UBNT


    Zadejte následující parametry:

    1. Pojmenování kamery
    2. IP adresu kamery
    3. port 554
    4. značku zvolte UBNT
    5. uživatelské jméno a heslo které máte nastaveno na kameře

    Nyní se po stisknutí stačítka Test kamery zobrazí obraz Vaší Ubiquiti kamery

 

V případě dalších poznatků nás můžete kontaktovat na emailu synology@atcomp.cz

PS: Díky Liborovi jsem přidal i postup pro použití na starších NAS Synology v jeho případě DS207+ se systémem DSM3.1

Tomáš Chott