Aquesta és la documentació bàsica d'Inite. Inite incorpora un servidor DNS fet en python i un Captive Portal fen en el REST framework de python Django:
-
CustomDNS: Aquest senzill dns (a la carpeta customDNS) permet l'aparició automàtica del captive portal i l'enllaç amb els altres serveis del servidor. El seu funcionament és el següent:
- Un host de la xarxa interna desitja connectar-se a internet. Si el router ha estat ben configurat com explica la documentació bàsica del projecte (aqui hi ha d'anar un link a una documentació que encara no està feta) aquest host farà una petició DNS al servei per resoldre el nom del recurs que demana.
- Al rebre aquesta petició el servidor customDNS té dos comportaments:
- Aquest host no ha passat pel captive portal: En aquest cas mostrarà el portal perquè el host es pugui registar.
- Aquest host s'ha registrat correctament al captive portal: En aquest cas podrà accedir als recurosos d'internet i/o del servidor lliurement. La base de dades del DNS serà borrada cada ( encara no ho sabem ) hores per forçar el registre de la gent tenint en compte que els cursos pels que s'ha dissenyat aquest servei duren 4 hores i els ordinadors són compartits.
-
Captive Portal: La funció principal és recollir les dades de les persones que es dirigeixin al centre a fer els cursos. Aquest portal es veurà cada cop que un nou host entri a la xarxa en les X (aqui cal posar el nombre d'hores) hores entre que la base de dades es reseteja. Permet també a un administrador amb usuari i contrasenya poder-se descarregar aquestes dades i bloquejar o permetre la sortida a internet.
Guia d'instal·lació ràpida del servei Inite en un servidor Devian/Ubuntu i derivats. La instal·lació pot fer-se de forma automàtica per mitjà del script d'instal·lació install.sh present a la carpeta arrel del projecte o de forma manual amb els passos següents ( Això encara no està implementat. Cal instal·lar manualment ). Si s'opta per la instal·lació automàtica el manual segueix al punt posada en marxa.
- Cal primer instalar python i l'instal·lador de paquets pip, el servidor web Apache2, el SGBD postgresql
sudo apt update
sudo apt install python python-pip python3 python3-dev python-dev python3-pip apache2 postgresql postgresql-contrib libpq-dev apache2-utils libapache2-mod-wsgi expect - Configuració de l'apache.
sudo systemctl enable apache2
sudo systemctl restart apache2
cp web_server/inite.conf /etc/apache2/sites-available/
ln -s /etc/apache2/sites-available/inite.conf /etc/apache2/sites-enabled/inite.conf
cp web_server/mod-wsgi.conf /etc/apache2/conf-available/
a2enconf mod-wsgi
a2enmod wsgi
sudo systemctl reload apache2- Configuració de Postgres. És important escriure aquestes comandes per separat per evitar problemes amb el shell de postgres. Al llarg d'aquesta configuració s'ens demanarà la constrasenya de l'usuari de la base de dades. La contrasenya usada en el nostre programa és NTExMmZhMmU3. Recomanem usar aquesta. Si es desitja usar una de diferent cal canviar els fitxers customDNS/fakeDNS.py i inite/settings.py perquè usin la mateixa contrasenya.
sudo systemctl enable postgresql
sudo systemctl start postgresql
su postgres
psql
createuser u_dks;
createdb db_dks;
\password u_dks; # s'ens demanarà contrasenya
alter user u_dks createdb;
\q
exit- Deshabilitar el dns server per defecte d'unix
systemctl disable systemd-resolved- Procedim a la instal·lació de customDNS
pip install -r customDNS/requirements.txt- Copiar la carpeta la carpeta de sistema /usr/local/.
sudo cp -r ./customDNS /usr/local/- Copiar el servei a la carpeta de serveis de Debian
sudo cp ./customDNS/fakeDNS.service /etc/systemd/system/fakeDNS.service- Instal·lacció dels requisits de python
pip3 install -r requirements.txt- Donar valor a les variables ROUTER_USER, ROUTER_PASSWD i ROUTER_IP presents a inite/settings.py amb les credencials d'administració del router Edgerouter X. (no podem assegurar el seu funcionament amb altres routers). Veure documentació general (Aqui falta un link a la documentació que encara no està feta)
Instruccions de posada en marxa dels serveis:
- Mode debugging: Permet engegar els serveis en terminals i veure els outputs de debugging per a detectar errors en la configuració/programació
- Mode producció: Fet amb daemons de systemd per garantir l'execució en segon plà, l'engegada del servei amb l'engegada de l'ordinador i el restabliment del servei si cau.
- Assegurarnos que tenim tots els daemons al port 80 i al port 53 desctivats
netstat -putan #per veure les connexions
systemctl stop apache2 #apagar la connexió d'apache que podem tenir encesa
systemctl stop fakeDNS #apagar el dns que podem tenir encès
systemctl stop systemd-resolved #apagar el dns resolver d'ubuntu- Assegurar-nos que la base de dades està activada
systemctl start postgresql- Engegar el dns en un terminal
python2 customDNS/fakeDNS.py- Engegar el server DJango
python3 manage.py runserver 0.0.0.0:80Llest. Al obrir un navegador amb el DNS ben configurat i dirigit al nostre servidor ens sortirà un popup del navegador per registrar-nos.
- Posada en marxa del daemon de customDNS.
sudo systemctl enable fakeDNS
sudo systemctl start fakeDNS- Posada en marxa del daemon apache2
sudo systemctl start apache2