Come eseguire uno script per ogni lease del DHCP server di Mikrotik

Come eseguire uno script per ogni lease del DHCP server di Mikrotik

WirelessGuru-Mikrotik-HowtoAvete mai avuto l'esigenza di eseguire uno script per ogni client che si collega al dhcp server di Mikrotik?

Nelle recenti versioni di RouterOS è stata proprio aggiunta questa possibilità. Nella sezione DHCP server abbiamo una nuova opzione chiamata "Lease Script" che ci permette di eseguire un comando/script per ogni client a cui viene assegnato l'indirizzo ip dal nostro DHCP server o per ogni client che viene rilasciato/liberato dall'elenco dei leases (in quanto non  più presente).
Come variabili, a livello global, nel nostro script possiamo utlizzare:

  • $leaseBound 
  • $leaseServerName
  • $leaseActMAC
  • $leaseActIP

$leaseBound avrà valore 1 se il server ha dato l'ip a quel client, mentre ha valore 0 (zero) se il server ha liberato l'ip dai leases.

$leaseServerName avrà il nome del server DHCP che ha dialogato con il client.

$leaseActMAC conterrà il mac-address della macchina che ha ricevuto l'ip dal server.

$leaseActIP infine conterrà il l'ip assegnato in quel momento al client.

[nextpage title="Esempi d'uso"]

Ma a cosa può servire? Beh come molte opzioni presenti in RouterOS può sembrare inizialmente oscura la sua applicazione pratica, ma potrebbe capitare di doverla usare.

Ad esempio potremmo creare un sistema che generi dei walled garden temporanei per gli host; una esigenza potrebbe essere quella di permettere per 10 minuti l'accesso a social network (ad esempio Facebook) per sfruttarne le sue API ed implementare sul nostro hotspot un Social Login.
Come tutti ben sanno, ad oggi, non è possibile implementare il Social Login di Facebook senza mettere nei walled garden tutto Facebook, ma grazie al Lease-script del DHCP di RouterOS possiamo "liberare" Facebook in maniera temporanea host per host.

Visto l'alto interesse riguardo a questo argomento (permettere temporaneamente l'accesso a Facebook per un tempo limitato), mi riprometto di creare una guida step-by-step nei prossimi giorni.

 

 

RouterOS rilascio nuova versione 6.28

RouterOS rilascio nuova versione 6.28

Oggi è stata rilasciata la nuova versione di Mikrotik RouterOS.

Siamo alla versione 6.28.

Ecco le modifiche:

  • email - increase server greeting timeout to 60s;
  • lte - ZTE MF823 may loose configuration;
  • userman - update paypal root certificate;
  • timezone - updated timezone information to 2015b release;
  • cm2 - fixed capsman v2 100% CPU and other stability improvements;
  • route - using ldp could cause connected routes with invalid interface nexthop;
  • added support for SiS 190/191 PCI Ethernet adapter;
  • made metarouter work on boards with 802.11ac support or usb LTE;
  • sstp server - allow ADH only when no certificate set;
  • make fat32 disk formatting support disks bigger than 134GiB;
  • fixed tunnels - could crash when clamp-tcp-mss was enabled;
  • added basic counters for ipv4/bridge fast path, also show status wether fast path is active at all;
  • trafflow: - fixed crash on disable;
  • pppoe over eoip - fixed crash with large packets;
  • tilegx - fixed memory leak when queue settings are changed;
  • ar9888 - fixed crash when hw reports invalid rate;
  • console - fixed "in" operator in console;
  • console - make "/system package update print" work again.
  • tile - rare situation when CCR devices failed to auto-negotiate ethernet link (introduced in v6.25);
  • dhcpv4 client - it is now possible to unset default clientid and hostname options
  • initial RoMon (Router Management Overlay Network) support added.

Come anticipato nel mio precedente articolo Presentato RoMon al MUM di Praga 2015 il supporto al nuovo protocollo di discovery RoMon è stato implementato in questa versione.

RouterOS per chi non lo sapesse è, a mio avviso, uno dei migliori, se non il migliore per flessibilità, stabilità e potenza, sistema operativo pensato da Mikrotik per apparati wireless e non. Le sue applicazioni coprono Access Point Hotspot WiFi, Punto-punto e Punto-Multipunto wireless a 5GHz o 2.4GHz, Firewall di rete, Traffic Shaper, QoS (Quality Of Service) e molto altro.

Come resettare la configurazione di un apparato Mikrotik

Come resettare la configurazione di un apparato Mikrotik

Come si resetta la configurazione di un apparato Mikrotik?

RouterOS permette di eseguire dalla sua GUI il comando di "reset configuration". Utile per importare script di configurazione (ad esempio per Hotspot WiFi o Punto-punto  o Punto-Multipunto Wireless in frequenze libere, sia 5GHz che 2.4GHz.

Per resettare correttamente un apparato Mikrotik è necessario dare il seguente comando:

[code gutter="false"]/system reset-configuration no-default=yes[/code]

L'opzione no-default=yes inserita evita al sistema di ricaricare la configurazione di Mikrotik di default ma di lasciarlo senza configurazione.

Se necessitate di far caricare uno script dopo il reset, utile se resettate un device remoto e volete che ripristini la connettività in automatico, potete specificare nel comando di reset lo script da caricare a seguito del reset. Ad esempio se vogliamo far caricare uno script chiamato script.rsc:

[code gutter="false"]/system reset-configuration no-default=yes \
run-after-reset=script.rsc[/code]

 

Come creare un hotspot WiFi da zero con Mikrotik

Come creare un hotspot WiFi da zero con Mikrotik

Come si configura un'area hotspot WiFi con apparati Mikrotik partendo da zero? Vediamo di seguito come in pochi semplici passi riusciamo a creare un'area WiFi protetta dal captive portal di Mikrotik.

Innanzitutto definiamo l'area hotspot WiFi. Un'area hotspot WiFi è un'area senza protezioni wireless (open, senza wpa/wpa2 o altro) a cui è possibile connettersi liberamente. I tentativi di navigazione saranno però redirezionati verso una pagina di login dal servizio captive portal interno.

Per realizzare un'area hotspot è fondamentale innanzitutto separare l'area hotspot WiFi dalla LAN a cui è connesso internet. Per questo motivo dobbiamo obbligatoriamente utilizzare due subnet distinte di ip. Non è quindi possibile realizzare un'area hotspot WiFi in modalità transparent bridge.

Eseguire sull'apparato un

[code gutter="false"]/system reset-configuration no-default=yes[/code]

per portarlo ad uno stato di inizializzazione. A questo punto assegnamo due indirizzi ip, uno alla scheda wlan1 (la scheda wireless) ed un'altro alla scheda ether1 (la scheda ethernet da cui prenderemo banda internet):

[code gutter="false"]/ip address add address=192.168.1.2/24 interface=ether1 disabled=no
/ip address add address=172.16.0.1/16 interface=wlan1 disabled=no[/code]

l'indirizzo della scheda ether1 in questo esempio è casuale, va ovviamente adattato alla rete che ospiterà il nostro apparato hotspot. Anche l'indirizzo assegnato alla scheda wireless è casuale, ma qui, non avendo vincoli possiamo assegnare una classe ip di nostro gradimento con la sola accortezza di settarla diversa da quella della erher1. Nell'esempio abbiamo assegnato una /16 come maschera a bit (65534 ip), non ci sono regole specifiche per questa scelta, ma è largamento consigliato non limitare il range del dhcp dell'hotspot a "pochi" ip visto che oggigiorno ci sono molti device wireless che si connettono alle aree hotspot gratuite ed una volta che il server dhcp ha esaurito gli ip disponibili si ha l'effetto di una rete wifi "non funzionante".

Una volta configurati gli indirizzi ip dovremo settare anche il default gateway che ci permetterà di raggiungere la rete internet:

[code gutter="false"]/ip route add dst-address=0.0.0.0/0 gateway=192.168.1.1[/code]

il gateway impostato, così come l'ip della ether1, è solo un esempio da adattare alla rete ospite in una configurazione reale.

[nextpage title="Auto Configuratore"]

Una volta assegnati gli indirizzi ip siamo pronti per far partire l'auto configuraratore presente in RouterOS, basta seguire passo passo le richieste del configuratore per arrivare ad avere un buon hotspot setup di base:

[code gutter="false" highlight="1,3,5,6,12,14,16,18,19"]
/ip hotspot setup
Select interface to run HotSpot on
hotspot interface: wlan1
Set HotSpot address for interface
local address of network: 172.16.0.1/16
masquerade network: yes
Set pool for HotSpot addresses
address pool of network: 172.16.0.2-172.16.255.254
Select hotspot SSL certificate
select certificate: none
Select SMTP server
ip address of smtp server: 0.0.0.0
Setup DNS configuration
dns servers: 8.8.8.8
DNS name of local hotspot server
dns name: hotspot.wirelessguru.it
Create local hotspot user
name of local hotspot user: test
password for the user: test
[/code]

Una volta completato il wizard avremo tutto configurato. Basterà configurare la scheda wireless con l'ssid desiderato e la modalità access point (ap-bridge):

[code gutter="false"] /interface wlan1 set ssid=wirelessguru \

mode=ap-bridge wireless-protocol=802.11 \

disabled=no[/code]

A questo punto collegandosi all'ssid configurato si avrà in risposta una pagina di login. Nel wizard abbiamo creato anche un utente test con password test.
Inserendola navigheremo su internet attraverso il nuovo hotspot appena creato.

RoMON nuova features di RouterOS presentata al MUM di Praga 2015

RoMON nuova features di RouterOS presentata al MUM di Praga 2015

RoMON significa “Router Management Overlay Network” ed è un nuovo protocollo attivabile in RouterOS dalle prossime versione (si presume già nella 6.28).

Ma a cosa serve questo nuovo protocollo? RoMON permette di creare un discovery della rete utilizzando un “Peer Mac discovery” che lavora sia L2, sia L3 (attraverso un data forwarding).

In pratica attraverso il comando:

[code gutter=”false”]

/romon discovery
ADDRESS COST HOPS PATH L2MTU
00:22:00:00:00:02 200 1 00:22:00:00:00:02 1500
00:02:03:04:05:06 400 2 00:22:00:00:00:02 1500
00:02:03:04:05:06
[/code]

potremmo vedere che si raggiunge il router 00:02:03:04:05:06 in 2 hops attraverso il router 00:22:00:00:00:02

[nextpage title=”Implementazioni”]

A cosa serve RoMON?

Serve a creare un discovery  automatico di rete funzionante anche quando operiamo in reti L3 (ad esempio OSPF) e non solo in reti L2 come eravamo abituati dall’attuale protocollo CDP (Cisco Discovery Protocol).

Prevedo che in futuro RoMON potrà essere utilizzato anche tramite Winbox per semplificare il management di reti complesse. In una prima fase sarà possibile utilizzarlo solo tramite command line.

[nextpage title=”Configurazione”]

Per attivare RoMON sul router sarà disponibile il comando romon

[code gutter=”false”]

/romon print
;;; RoMON running, ID 00:33:00:00:00:02
enabled: yes
id: 00:00:00:00:00:00
[/code]

come settaggi sarà possibile abilitare/disabilitare il protocollo e settare il suo ID, di default viene preso in maniera automatica il mac-address del router, altrimenti possiamo specificare a mano quale ID/Mac-address impostare.

Una volta abilitato il protocollo dobbiamo attivare il “forwarding” delle info sulle porte tramite il suo sottomenù /romon port 

In questa sezione possiamo proibire/inibire (opzione forbid) il transito dei discovery in specifiche porte. Nel zseguente esempio il protocollo RoMON è attivo su tutte le porte tranne che la ether1:

[code gutter=”false”]

/romon port> print
Flags: X – disabled, D – dynamic
# INTERFACE FORBID COST
0 ether1 yes 100
1 all no 100<
[/code]

 

[nextpage title=”RoMON Tools”]

RoMON fornisce alcuni strumenti di debug che utilizzano il suo protocollo. In prima fase potremo utilizzare il ping e l’ssh:

PING

[code gutter=”false”]
/romon> ping 00:22:00:00:00:02
SEQ HOST TIME STATUS
0 00:22:00:00:00:02 0ms
1 00:22:00:00:00:02 1ms
2 00:22:00:00:00:02 1ms
sent=3 received=3 packet-loss=0% min-rtt=0ms avg-rtt=0ms max-rtt=1ms
[/code]

SSH

[code gutter=”false”]

/romon> ssh 00:22:00:00:00:02

[/code]

A questo punto non rimane che provarlo installando (si spera :-)) la prossima versione (6.28) di RouterOS.

 



this is default footer data
HashFlare
HashFlare
HashFlare
HashFlare
HashFlare
HashFlare
HashFlare
HashFlare
HashFlare
HashFlare
HashFlare