Desplegueu el backend a virtech en deu minuts
Escriviu la IP de la màquina i el tipus de servidor: teniu cada ordre amb els ports ja calculats, un servei que sobreviu als reinicis i un setup.sh per descarregar. Tot passa al navegador i no s'envia res.
virtech, el núvol privat de la FIB
Un servei d'autoservei de màquines virtuals per a les assignatures que el demanen, a virtech.fib.upc.edu. Els comptes us els donen els professors.
- Màquines Ubuntu amb l'usuari
alumne, que pot fer servirsudo. Sou responsables de tot el que hi passi. - El nombre de màquines i la seva mida els fixa la quota de l'assignatura. No hi ha tallafocs.
- No hi ha còpies de seguretat i s'esborren al final del quadrimestre. El codi, a GitHub; la configuració, documentada.
- Si perdeu l'accés a una màquina, no es pot recuperar: s'esborra i se'n crea una altra. Un motiu més per tenir la instal·lació escrita en un script.
Només xarxa de la FIB
Accessible des del campus o des de casa amb la VPN de la UPC (UPClink). Però la VPN és personal i només admet una connexió: no podeu tenir alhora l'ordinador i el mòbil, ni donar l'app a ningú de fora.
Plantilla sense VPN
Té 10 ports oberts a Internet a través de nattech.fib.upc.edu, i SSH des de la UPC o amb VPN. Qualsevol mòbil hi arriba, també els dels stakeholders.
Crear la màquina i posar-hi el servei
- VMs → +, trieu la plantilla, poseu-hi un nom i la contrasenya de l'usuari, i Create. Espereu que passi de DEPLOYING a RUNNING.
- Obriu la Consola (VNC) i inicieu sessió. El missatge de benvinguda us diu la IP i els ports. El podeu tornar a veure amb
/etc/update-motd.d/99-info-nat. - Des d'ara, millor per SSH (des de la UPC o amb VPN): les ordres, a sota.
- Arrenqueu el servei escoltant a
0.0.0.0i a un port del 8080 al 8089. Si escolta alocalhost, des de fora no s'hi arriba. - Proveu-lo des de fora amb el port públic:
http://nattech.fib.upc.edu:40330.
Les vostres ordres, ja calculades
Les dades es queden en aquest navegador. Canvieu qualsevol camp i les ordres s'actualitzen.
La que surt a virtech o al missatge de benvinguda.
El setup.sh fa la instal·lació, el servei i l'arrencada. Copieu-lo a la màquina amb scp i executeu bash setup.sh.
Com es calculen els ports
Totes les màquines surten a Internet per la mateixa adreça, nattech.fib.upc.edu, i cadascuna té el seu rang de ports segons l'últim número de la IP (172.16.4.XXX):
- SSH: port
22000 + XXX. - Serveis: del port
40000 + XXX·10en endavant, deu ports seguits que van al 8080-8089 de la màquina.
Com comprovo que la connexió funciona, abans de tenir cap servei?
A la màquina, nc -l -p 8080. Al vostre ordinador, nc nattech.fib.upc.edu 40330 (amb el vostre port) i escriviu qualsevol cosa: ha d'aparèixer a la màquina.
Per què no em respon el ping?
Per com està muntat el NAT, el ping no funciona des de fora de la xarxa de les màquines, ni tan sols amb VPN. Feu servir curl o nc.
Puc entrar per SSH des de casa sense VPN?
No. Per seguretat, l'SSH des de fora de la UPC només funciona amb la VPN. Els 10 ports de serveis sí que estan oberts a tothom.
He oblidat la contrasenya de la màquina.
No es pot recuperar: esborreu la màquina i creeu-ne una de nova. La contrasenya de virtech (no la de la màquina) es canvia al menú d'usuari → Settings → Change password.
L'app mòbil i l'HTTP sense xifrar
nattech serveix HTTP, no HTTPS. Android (des de la versió 9) i iOS bloquegen aquest trànsit per defecte, i la crida falla sense gaires pistes. Permeteu-lo només per a aquest domini.
<!-- res/xml/network_security_config.xml (a Flutter: android/app/src/main/res/xml/) -->
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="false">nattech.fib.upc.edu</domain>
<domain includeSubdomains="false">10.0.2.2</domain>
</domain-config>
</network-security-config>
<!-- AndroidManifest.xml -->
<application
android:networkSecurityConfig="@xml/network_security_config"
... >
<!-- ios/Runner/Info.plist -->
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>nattech.fib.upc.edu</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
Les contrasenyes viatgen en clar per HTTP. Per a PES n'hi ha prou amb l'excepció per domini, però no hi poseu contrasenyes reals i expliqueu-ho a la documentació com a limitació coneguda.