Repetor WiFi cu legătură GSM de siguranță

Dispozitivele de tip repetor au ca principal scop extinderea acoperirii semnalului pentru o rețea radio. Repetoarele WiFi extind acoperirea unei rețele WiFi astfel încât să nu fie necesară instalarea și managementul mai multor dispozitive de tip AP. În cadrul materialului de față vă propunem implementarea unui dispozitiv repetor WiFi cu o funcționalitate suplimentară față de un repetor standard: dirijarea traficului pe o conexiune de date GSM în cazul în care conexiunea WiFi se întrerupe. Astfel, sistemul se va comporta ca un repetor WiFi în mod obișnuit dar se va transforma într-un router WiFi GSM în cazul în care conexiunea principală are probleme (a se vedea și materialul „Router WiFi GSM utilizând LinkIt Smart 7688”).

Pentru implementare vom utiliza o placă de dezvoltare LinkIt Smart 7688 bazată pe circuitul SoC MediaTek MT7688AN și care rulează distribuția Linux OpenWRT. Această placă de dezvoltare oferă, la un preț redus, toate facilitățile de routare, filtrare și control al traficului TCP/IP oferite de sistemele de operare Linux. Pentru mai multe detalii legate de funcționarea și utilizarea plăcii de dezvoltare LinkIt Smart 7688 puteți consulta wiki-ul oficial. Pentru conexiunea de date GSM vom utiliza un modem USB GSM 3G. Conectarea modemului USB la placa de dezvoltare necesită un adaptor microUSB – USB. Alimentarea sistemului se va face la 5V, minim 500mA – preferabil 1A (orice încărcător de mobil de 1A și mufă microUSB e bun).

2

Placa de dezvoltare LinkIt Smart 7688 oferă posibilitatea de funcționare în mod repetor începând cu versiunea 0.9.4 de firmware. Nu vom utiliza modalitatea de configurare oferită de interfața web, configurarea inițială va fi de Station mode (client WiFi) deoarece vom avea nevoie de conexiunea Internet pentru a instala câteva pachete software suplimentare.

3

După configurarea și repornirea plăcii ne putem conecta la aceasta prin SSH (utilizând PUTTY de exemplu). IP-ul de conectare depinde de rețeaua locală. Vom rula următoarele comenzi pentru instalarea pachetelor software necesare configurării conexiunii de date GSM:

# opkg update

# opkg install comgt kmod-usb-serial kmod-usb-serial-option kmod-usb-serial-wwan usb-modeswitch usbtools

Eventual putem instala și un editor de text suplimentar dacă nu ne place vi :

# opkg install nano

Sistemul va avea două configurații diferite de rețea între care va comuta în cazul întreruperii / restaurării conexiunii WiFi principale. Vom crea în directorul /root două directoare config_wifi și config_3g și în fiecare vom crea 3 fișiere de configurare: firewall, network și wireless (se pot copia din /etc/config pentru a nu le tasta de la zero).

Fișierul network – varianta wifi – nu definește nici o interfață utilizată în funcționalitatea de repetor.

config interface ‘loopback’

option ifname ‘lo’

option proto ‘static’

option ipaddr ‘127.0.0.1’

option netmask ‘255.0.0.0’

config globals ‘globals’

option ula_prefix ‘fdea:6296:e400::/48’

config interface ‘lan’

option force_link ‘1’

option macaddr ‘9c:65:f9:1e:69:77’

option proto ‘static’

option netmask ‘255.255.255.0’

option ip6assign ’60’

option ipaddr ‘192.168.100.1’

option delegate ‘0’

option ifname ‘ra0’

config switch

option name ‘switch0’

option reset ‘1’

option enable_vlan ‘0’

config interface ‘wan’

option proto ‘dhcp’

Fișierul network – varianta 3G – va arăta identic dar va avea în plus definiția interfeței de comunicație GSM (se va adăuga la sfârșitul fișierului anterior). APN-ul și codul pin se vor personaliza în funcție de cartela SIM GSM.

config interface ‘gsm’

option proto ‘3g’

option device ‘/dev/ttyUSB0’

option service ‘umts’

option apn ‘net’

option pincode ‘0000’

Fișierul wireless – varianta WiFi – va defini funcționarea în mod mixt AP+STA. În fișier trebuie personalizate datele de acces la rețeaua WiFi (secțiunea STA) și datele de conectare la repetor (secțiunea AP) – pot fi identice, repetorul poate oferi acces cu aceleași credențiale ca și rețeaua WiFi originală.

config wifi-device ‘radio0’

option type ‘ralink’

option variant ‘mt7628’

option country ‘TW’

option hwmode ’11g’

option htmode ‘HT40’

option channel ‘auto’

option disabled ‘0’

option linkit_mode ‘apsta’

config wifi-iface ‘ap’

option device ‘radio0’

option mode ‘ap’

option network ‘lan’

option ifname ‘ra0’

option encryption ‘psk2’

option seq ‘1’

option ssid ‘xxxxxx’

option key ‘xxxxxx’

config wifi-iface ‘sta’

option device ‘radio0’

option mode ‘sta’

option network ‘wan’

option ifname ‘apcli0’

option led ‘mediatek:orange:wifi’

option ssid ‘xxxxx’

option key ‘xxxxx’

option encryption ‘psk2’

Fișierul wireless – varianta 3G  – va defini funcționarea doar în mod AP. În cazul în care definim aceleași credențiale ca și AP-ul principal, sistemul va suplini conexiunea WiFi și pentru clienții direcți ai AP-ului principal în cazul întreruperii conexiunii principale.

config wifi-device ‘radio0’

option type ‘ralink’

option variant ‘mt7628’

option country ‘TW’

option hwmode ’11g’

option htmode ‘HT40’

option channel ‘auto’

option disabled ‘0’

option linkit_mode ‘ap’

config wifi-iface ‘ap’

option device ‘radio0’

option mode ‘ap’

option network ‘lan’

option ifname ‘ra0’

option encryption ‘psk2’

option seq ‘1’

option ssid ‘xxxxxx’

option key ‘xxxxxx’

Fișierul firewall – variantele WiFi și 3G diferă de fișierul original din /etc/config doar prin linia option network a secțiunii wan.

———————————- WiFi ——————————-

config zone

option name ‘wan’

option network ‘wan wan6’

option output ‘ACCEPT’

option forward ‘REJECT’

option masq ‘1’

option mtu_fix ‘1’

option input ‘ACCEPT’

———————————- 3G ——————————-

config zone

option name ‘wan’

option network ‘gsm’

option output ‘ACCEPT’

option forward ‘REJECT’

option masq ‘1’

option mtu_fix ‘1’

option input ‘ACCEPT’

Scripturile care vor face comutarea între cele două configurații de rețea (între cele două funcționalități ale sistemului) se vor crea în directorul /root sub denumirile: switch și normal (nu uitați să dați drepturi de execuție pe cele două fișiere # chmod +x …). Fișierul switch va face comutarea pe conexiunea GSM în cazul în sistemul nu are conexiune la Internet:

#!/bin/ash

ping -q -c 1 -W 10 8.8.8.8 > /dev/null

if [ $? -ne 0 ]

then

cp -f /root/config_3g/network /etc/config/network

cp -f /root/config_3g/firewall

/etc/config/firewall

cp -f /root/config_3g/wireless

/etc/config/wireless

/etc/init.d/network restart

fi

Scriptul normal va verifica dacă este în modul GSM (prin verificarea conexiunii cu AP-ul principal – scriptul trebuie personalizat cu adresa IP a AP-ului principal) și va reîncerca reintrarea în mod repetor WiFi:

#!/bin/ash

ping -q -c 1 -W 10 XXX.XXX.XXX.XXX > /dev/null

if [ $? -ne 0 ]

then

cp -f /root/config_wifi/network

/etc/config/network

cp -f /root/config_wifi/firewall

/etc/config/firewall

cp -f /root/config_wifi/wireless

/etc/config/wireless

/etc/init.d/network restart

fi

Ambele scripturi vor fi rulate în mod automat de serviciul cron al sistemului de operare. Frecevența de execuție stă la latitudinea utilizatorului, testele au fost realizate cu o frecvență de o dată pe oră (la fix scriptul switch, la și jumătate scriptul normal), conținutul fișierului /etc/crontabs/root fiind:

00 * * * * /root/switch

30 * * * * /root/normal

Sistemul prezentat poate fi folosit în diverse scenarii, de exemplu:

  • Într-o locuință de dimensiuni mari pentru a extinde semnalul WiFi în toate camerele și pentru a oferi o conexiune de siguranță la Internet pentru cazurile de întrerupere a conexiunii principale. În acest caz credențialele de acces pot fi comune între AP-ul principal și repetor.
  • Pentru o rețea de senzori WiFi se poate oferi o rețea WiFi dedicată, eventual o zonă de acoperire specială utilizând o antenă direcțională, și care are legătură la Internet redundantă (ISP / GSM) având în vedere un posibil caracter critic a funcționalității.

Router WiFi GSM utilizând LinkIt Smart 7688

Asigurarea conexiunii la Internet în cazul absenței unei conexiuni terestre (prin cablu sau fibră optică) se poate face, bineînțeles, apelând la serviciile oferite de companiile de telefonie mobilă prin intermediul unei cartele SIM ce oferă transfer de pachete de date. Există multe opțiuni comerciale pentru implementarea acestei facilități de routare între o rețea de date WiFi și o rețea GSM: routere WiFi GSM, telefoane mobile ce funcționează ca AP (tethering) ș.a.m.d. dar majoritatea acestor soluții nu oferă o flexibilitate sau un control al conexiunilor foarte bune. Din acest motiv realizarea unui router „personalizat” se poate dovedi și o soluție mult mai ieftină și o metodă de a implementa mecanisme de filtrare, autentificare, control al conexiunilor mult mai sofisticate.

Pentru implementare vom utiliza o placă de dezvoltare LinkIt Smart 7688 bazată pe circuitul SoC MediaTek MT7688AN și care rulează distribuția Linux OpenWRT. Această placă de dezvoltare oferă, la un preț redus, toate facilitățile de routare, filtrare și control al traficului TCP/IP oferite de sistemele de operare Linux. Pentru mai multe detalii legate de funcționarea și utilizarea plăcii de dezvoltare LinkIt Smart 7688 puteți consulta wiki-ul oficial. Pentru conexiunea de date GSM vom utiliza un modem USB GSM – testele au fost realizate utilizând un modem Huawei E220 dar se poate utiliza orice alt modem USB GSM compatibil. Conectarea modemului USB la placa de dezvoltare necesită un adaptor microUSB – USB. Alimentarea sistemului se va face la 5V, minim 500mA – preferabil 1A (orice încărcător de mobil de 1A și mufă microUSB e bun).

2

La punere în funcțiune a plăcii de dezvoltare aceasta funcționează în mod AP. Ne vom conecta la AP-ul LinkIt_Smart_7688_XXXXXX și apoi la interfața de administrare web (IP 192.168.100.1).

3

La prima conectare se va stabili parola utilizatorului root (contul de administrare a sistemului de operare).

4

Pentru a putea instala pachetele software necesare funcționării modemului USB GSM vom configura placa de dezvoltare ca și client WiFi – Station Mode (pentru a avea conexiune Internet).

ATENȚIE!!! Placa de dezvoltare are definită implicit o interfață de rețea cu IP-ul 192.168.100.1 . Orice încercare de a introduce placa de dezvoltare într-o rețea ce oferă prin DHCP adrese IP în clasa 192.168.100.0/24 va eșua.

După configurarea și repornirea plăcii ne putem conecta la aceasta prin SSH (utilizând PUTTY de exemplu). IP-ul de conectare depinde de rețeaua locală. Vom rula următoarele comenzi pentru instalarea pachetelor software necesare configurării conexiunii de date GSM:

# opkg update

# opkg install comgt kmod-usb-serial kmod-usb-serial-option kmod-usb-serial-wwan usb-modeswitch

Eventual putem instala și un editor de text suplimentar dacă nu ne place vi :

# opkg install nano

Având conectat modemul USB GSM vom reporni placa de dezvoltare. Ne vom reconecta prin SSH și vom verifica dacă modemul este recunoscut de sistemul de operare în mod corect (vom rula comanda dmesg).

6

În cazul în care modemul este recunoscut corect de sistemul de operare vom regăsi în jurnalul de pornire a sistemului de operare (consultat anterior cu ajutorul comenzii dmesg) linii care indică instalarea modemului GSM ca dispozitiv specific USB (ttyUSB0 de exemplu). În cazul în care modemul este văzut ca alt tip de dispozitiv (de stocare în masă – memorie usb de exemplu) înseamnă că pachetul usb-modeswitch care se ocupă de autoconfigurarea modemului nu are în baza de date proprie modelul de modem utilizat. Este recomandat să căutăm un modem care să fie deja în baza de date a pachetului software. Configurarea manuală a modemului este destul de dificilă. Pentru mai multe informații se poate parcurge materialul „Use 3g/UMTS USB Dongle for WAN connection”.

Pentru a putea accesa Internetul prin intermediul modemului USB GSM este nevoie să avem o cartelă SIM funcțională (se poate testa prealabil modemul pe un sistem de calcul obișnuit) și să realizăm următoarele configurări în fișierele sistemului de operare. În fișierul /etc/config/network vom adăuga la final (pinul și APN-ul sunt specifice cartelei SIM utilizate):

config interface ‘gsm’

        option proto ‘3g’

        option service ‘umts’

        option device ‘/dev/ttyUSB0’

        option apn ‘net’

        option pincode ‘0000’

În fișierul /etc/config/firewall vom adăuga noua interfață de rețea în categoria wan :

config zone

        option name ‘wan’

        list network ‘gsm’

        …

Pentru ca intefața GSM să fie pornită automat după repornirea sistemului vom adăuga în fișierul /etc/rc.local linia ifup gsm (comanda de pornire a conexiunii GSM) înainte de linia exit 0 .

ifup gsm

exit 0

După finalizarea configurării conexiunii GSM (se poate reporni sistemul și verifica prin intermediul comenzii route dacă există conexiune Internet GSM) se va trece sistemul în configurație AP din interfața web de administrare (se va stabili numele și parola de acces pentru rețeaua WiFi).

7

După o ultimă repornire a sistemului routerul WiFi GSM este gata de utilizare. Acesta va oferi adrese în clasa 192.168.100.0/24 și vom putea accesa interfața de administrare prin intermediul adresei IP 192.168.100.1 . Pentru configurări avansate (firewall, port-forwarding) se poate accesa consola Luci specifică sistemului de operare OpenWRT (link în interfața de administrare, încercuit cu roșu în imaginea precedentă).

În cazul în care se efectuează modificări ale sistemului de operare care conduc la stări nefericite din care nu știm cum să ieșim, există întotdeauna posibilitatea de a reseta placa la setările inițiale și de a relua procesul de configurare de la început. Pentru resetarea plăcii la setările inițiale se va ține apăsat minim 20 de secunde butonul WiFi Reset.

9

O posibilă îmbunătățire a sistemului nostru este adăugarea unei antene WiFi externe pentru creșterea puterii semnalului. Placa are un conector special I-PEX pentru acest lucru dar utilizarea acestuia necesită dezlipirea de pe placă a unei rezistențe (imagine de mai jos).

10