Control Aula

De Jose Castillo Aliaga
Ir a la navegación Ir a la búsqueda

Pas per pas

  • Instal·lar Ubuntu server
 # apt update && apt upgrade
  • El servidor té 2 targetes de xarxa. Cal configurar la de dins de l'aula com a 192.168.aula.250
  • La targeta externa serà assignada per Zentyal encara que no és precís que siga una fixa.
  • Crear el container LXD que fa de gw.
# lxd init
# lxc profile create xarxa
# lxc profile edit xarxa
name: xarxa
config: {}
description: ""
devices:
  eth0:
    name: eth0
    nictype: macvlan
    parent: enp0s3
    type: nic
  eth1:
    name: eth1
    nictype: macvlan
    parent: enp0s8
    type: nic
# lxc launch ubuntu:16.04 gw --profile=xarxa
  • Entrar dins i fer-lo porta d'enllaç. Aquest container servirà com a plantilla per als altres dos. Per tant, cal fer-lo porta d'enllaç abans de fer-lo servidor dhcp i la resta de coses.
    • La seua IP de eth1: 192.168.aula.254. La de fora serà per Zentyal, pot ser fixa o no.
    • Actualitzar.
    • Descomentar en /etc/sysctrl.conf el ipv4 forward.
    • Aplicar les IPtables:
root@gw:~# iptables -A INPUT --match conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
root@gw:~# iptables -A FORWARD --in-interface eth0 --out-interface eth1 -j ACCEPT
root@gw:~# iptables -A FORWARD --in-interface eth1 --out-interface eth0 -j ACCEPT
root@gw:~# iptables -t nat  -A POSTROUTING --out-interface eth0 -j MASQUERADE
root@gw:~# iptables-save > /etc/iptables/rules.v4
root@gw:~# apt install iptables-persistent
  • Buidar la cau apt
root@gw:~# apt clean && apt autoclean
  • Clonar el container per crear el ràpid i el lent, els deixem ahí per tornar després:
lliurex@srv:~$ lxc copy gw gwpreferent
lliurex@srv:~$ lxc copy gw gwlent
  • Tornar a entrar al gw principal per instal·lar la resta de serveis:
root@gw:~# apt install isc-dhcp-server
 
ddns-update-style none;
option domain-name "aula.net";
option domain-name-servers 10.20.0.1;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;

subnet 192.168.9.0 netmask 255.255.255.0 {
  range 192.168.9.150 192.168.9.199;
  option subnet-mask 255.255.255.0;
  option routers 192.168.9.254;
}

root@gw:~# nano /etc/default/isc-dhcp-server     # recordar indicar eth1 en interfaces

root@gw:~# wget -O- https://raw.github.com/ajenti/ajenti/1.x/scripts/install-ubuntu.sh | sudo sh
Now start Ajenti with 'service ajenti restart'
Ajenti will listen on HTTPS port 8000 by default

Default username : root
Default password : admin
# Cal canviar el passwd.

  • Registre de clients
root@gw:~# apt install nmap

Cal executar aquest script

El resultat és la configuració de IPs fixes als clients i de la porta d'enllaç ràpida per al professor si li donem la IP acabada en 100.

Fer que arranquen a l'inici del sistema:

lliurex@srv:~$ lxc config set gw boot.autostart 1
lliurex@srv:~$ lxc config set gwlent boot.autostart 1
lliurex@srv:~$ lxc config set gwpreferent boot.autostart 1

Fer que els gwlent i rapid confien en el gw servidor:

lxc exec gw -- cat /root/.ssh/id_rsa.pub > authorized_keys
lxc file push authorized_keys /root/.ssh/
lxc exec gwlent -- chown root:root /root/.ssh/authorized_keys

Control de la velocitat

Per evitar que carreguen la xarxa sols amb youtube podem utilitzar wondershaper. Aquest són els pasos:

  • En el DHCP s'indica que el professor té com a router el gw preferent. Això és la configuració prèvia feta en l'script anterior.
  • En el DHCP s'indica que el router de la resta és el .254
  • Aquest ha de tindre como a porta per defecte la ip interna del gw lent.

El comandament per defecte pot ser:

ip route change default via 192.168.9.252

per a que es quede encara que reiniciem, en /etc/network/interfaces:

auto eth0
iface eth0 inet dhcp
post-up ip route change default via 192.168.9.252
  • Per a la xarxa local, moodle i altres, tindrà com a porta d'enllaç el preferent o el del centre.
  • La gw lenta es configura en wondershaper per tindre una velocitat determinada. Aquesta ha d'estar definida en funció de necessitats.

Al tindre velocitats baixes però suficients, les webs sense videos funcionaran raonablement. El moodle funciona a la màxima velocitat. Si dos o més alumnes tenen videos ralentiran a la resta de la classe, però no a l'institut.

Centralitzar la configuració dels clients

Per a fer això, podem utilitzar Ansible.

root@gw:~# apt install ansible
root@gw:~# ssh-keygen -t rsa -b 2048
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:QUwfjcjUkaFnd8CihW0ANtZwb+7DkUsmXP0hJVtfhlI root@gw
The key's randomart image is:
+---[RSA 2048]----+
|      *O**+Bo.E.o|
|     o +*+Oo+*.o.|
|        o+B.=.o .|
|       ..B o + . |
|        S *   .  |
|         * o     |
|          =      |
|           .     |
|                 |
+----[SHA256]-----+

root@gw:~# ssh-copy-id lliurex@192.168.9.101
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '192.168.9.101 (192.168.9.101)' can't be established.
ECDSA key fingerprint is SHA256:yJB1AmXpfIN/Zpaem8pa+5QaO44iYwzPejp+a9h3AQI.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
lliurex@192.168.9.101's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'lliurex@192.168.9.101'"
and check to make sure that only the key(s) you wanted were added.
root@gw:~# ssh-agent bash
root@gw:~# ssh-add ~/.ssh/id_rsa
Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)
  • Editar el fitxer de /etc/ansible/hosts per tindre tota la llista de hosts administrats.
[alumnes]
192.168.9.101
192.168.9.102
...

Aquesta és la prova de que funciona:

root@gw:~# ansible all -u lliurex -m ping
192.168.9.101 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}
...

Comandaments ad-hoc

Podem, per exemple, canviar la contrasenya a Lliurex:

root@gw:~# apt install whois
root@gw:~# mkpasswd --method=sha-512
Password: 
$6$APDy29HR$5lgjvaeU6yaEXhC8tni0f0PzVnQfb2Z1lSJ0IG85YE43cFz42UB65vGZGuhLi1uz1v0PZ6ntI0xNrLJjVWWdT1

root@gw:~# ansible all -u lliurex -m user -a 'name=lliurex password=$6$APDy29HR$5lgjvaeU6yaEXhC8tni0f0PzVnQfb2Z1lSJ0IG85YE43cFz42UB65vGZGuhLi1uz1v0PZ6ntI0xNrLJjVWWdT1' --sudo --ask-become-pass
SUDO password: 
192.168.9.101 | SUCCESS => {
    "append": false, 
    "changed": true, 
    "comment": "lliurex,,,", 
    "group": 1000, 
    "home": "/home/lliurex", 
    "move_home": false, 
    "name": "lliurex", 
    "password": "NOT_LOGGING_PASSWORD", 
    "shell": "/bin/bash", 
    "state": "present", 
    "uid": 1000
}
...

Asegurar-nos de que tenen un programa instal·lat:

root@gw:~# ansible all -u lliurex --sudo --ask-become-pass -m apt -a "name=dia state=present" 

Actualitzar el sistema:

ansible all -u lliurex --sudo --ask-become-pass -m apt -a "upgrade=dist"