Synchronizace FreeNetIS - Mikrotik: Porovnání verzí

Z Freenetis Wiki
Přejít na: navigace, hledání
Řádek 34: Řádek 34:
  
 
== Synchronizační skript ==
 
== Synchronizační skript ==
 +
 +
Podrobný popis chování - pro lepší přehlednost: data z Mikrotiků jsou označeny jako '''M''', data z freenetisu jsou označeny jako '''F'''.
 +
 +
Skript je ve skutečnosti callbacková funkce parseru, takže se spustí po každém naparserování jedné položky. Nejdříve identifikuje člena, kterému položka patří a jeho hlavního uživatele. Pak se v databázi IP adres pokusí zjistit, zda naparserovaná IP adresa již v databázi existuje a pokud ano, zkontroluje, jestli je naparserovaná MAC adresa je shodná s MAC adresou rozhraní

Verze z 18. 9. 2009, 19:26

Nejdříve na úvod mírně vysvětlím, proč vůbec nějaký takový skript vzniknul. V době psaní toho textu se naše sdružení Slfree potýkalo s velkým problémem - databáze všech zařízení ve freenetisu takřka skoro vůbec neodpovídala stavu na samotných routerech (v té době výlučně s OS RouterOS od Mikrotik) a po spuštění Přesměrování by tato entropie napáchala nakonec více škody než užitku. Ve volném čase jsem si tedy zkusil napsat jednoduchý parser exportu IP adres z dhcp-serveru z Mikrotiků a ten jsem pak použil při psaní skriptu, který naparserované informace z nich synchronizuje s db freenetisu.

Indetifikace majitelů adres

Největší problémem bylo, jakým způsobem dosáhnout jednoznačné přiřezaní položek (leases) k majitelům (členům). Nakonec bylo rozhodnuto, že komentář každé položky bude zapsán ve tvaru ID 1 - Novák Jan (kde 1 je ID člena Jana Nováka) a synchroniční skript podle něho určí ke kterému členovi určitou IP adresu přiřadí.

Získání exportu

Nejdříve se přihlásíme na některé APčko přes ssh:

[user@pc ~]$ ssh user@10.143.10.1
user@10.143.10.1's password: 

  MMM      MMM       KKK                          TTTTTTTTTTT      KKK
  MMMM    MMMM       KKK                          TTTTTTTTTTT      KKK
  MMM MMMM MMM  III  KKK  KKK  RRRRRR     OOOOOO      TTT     III  KKK  KKK
  MMM  MM  MMM  III  KKKKK     RRR  RRR  OOO  OOO     TTT     III  KKKKK
  MMM      MMM  III  KKK KKK   RRRRRR    OOO  OOO     TTT     III  KKK KKK
  MMM      MMM  III  KKK  KKK  RRR  RRR   OOOOOO      TTT     III  KKK  KKK

  MikroTik RouterOS 3.7 (c) 1999-2008       http://www.mikrotik.com/
  
[user@slfree_vlara] >

Vytvoříme export jménem vlara:

[user@slfree_vlara] > /ip dhcp-server lease export file=vlara

Stáhnout si ho nyní můžeme na adrese ftp://user@10.143.10.1/vlara.rsc

Spuštění skriptu

V sekci Zařízení je odkaz Import exportu DHCP z Mikrotiku. Po kliknutí na něj se nám otevře formulář, pomocí něhož nahrajeme náš export do freenetisu a po jehož odeslání se spustí nejdůležitější synchronizační skript.

Synchronizační skript

Podrobný popis chování - pro lepší přehlednost: data z Mikrotiků jsou označeny jako M, data z freenetisu jsou označeny jako F.

Skript je ve skutečnosti callbacková funkce parseru, takže se spustí po každém naparserování jedné položky. Nejdříve identifikuje člena, kterému položka patří a jeho hlavního uživatele. Pak se v databázi IP adres pokusí zjistit, zda naparserovaná IP adresa již v databázi existuje a pokud ano, zkontroluje, jestli je naparserovaná MAC adresa je shodná s MAC adresou rozhraní