Alternativa al proxy amb VPN: Diferència entre les revisions
De Guifi.net - Wiki Català
(→Creació de certificats) |
|||
Línia 2: | Línia 2: | ||
Tot i que no és convenient aplicar l'argument de l'Internet Gratis perquè la gent s'interessi per guifi.net, és cert que per alguns usuaris el principal atractiu de la xarxa és la possibilitat de connectar-s'hi. La idea de fer servir un servidor proxy per poder-se connectar a Internet pot resultar-los complicada i pot fer desistir als usuaris menys convençuts, especialment si es connecten a través de dispositius mòbils i fan servir aplicacions que no permeten l'ús d'un proxy. | Tot i que no és convenient aplicar l'argument de l'Internet Gratis perquè la gent s'interessi per guifi.net, és cert que per alguns usuaris el principal atractiu de la xarxa és la possibilitat de connectar-s'hi. La idea de fer servir un servidor proxy per poder-se connectar a Internet pot resultar-los complicada i pot fer desistir als usuaris menys convençuts, especialment si es connecten a través de dispositius mòbils i fan servir aplicacions que no permeten l'ús d'un proxy. | ||
− | L'objectiu d'aquest article és, per tant, trobar una manera de compartir | + | L'objectiu d'aquest article és, per tant, trobar una manera de compartir connexió ADSL amb qui el responsable d'oferir aquesta connexió vulgui. A la vegada, estant segurs de què només la fa servir qui el responsable vol i amb la possibilitat de limitar i controlar les connexions dels usuaris (p.ex. no permetre que visitin segons quins llocs). La condició és que l'usuari final no tengui necessitat de configurar absolutament res al seu terminal, i que la configuració dels routers i APs dels clients sigui senzilla i replicable. |
== La Idea == | == La Idea == | ||
− | La idea consisteix en fer servir un servidor VPN a un dels nodes, connectat a l’ADSL | + | La idea consisteix en fer servir un servidor VPN a un dels nodes, connectat tant a l’ADSL com a guifi.net, i que encamini el trànsit dels clients cap a fora. A l’altre extrem de la xarxa de guifi.net, els clients VPN poden ésser tant dispositius finals (portàtils) com APs domèstics. En el cas dels APs domèstics, aquests emeten dos SSIDs: |
+ | |||
+ | · Un d’obert i que només permet accedir a les rutes de guifi.net i impedeix que el trànsit vagi per la VPN. | ||
+ | · Un de privat, que encamina tot el trànsit que no va a cap IP pública de guifi.net a través del túnel VPN. | ||
[[Fitxer:Nodesvpn.jpeg|center|thumb|upright=2.5|Esquema de la infraestructura d'un servidor VPN amb múltiples clients dins guifi.net ]] | [[Fitxer:Nodesvpn.jpeg|center|thumb|upright=2.5|Esquema de la infraestructura d'un servidor VPN amb múltiples clients dins guifi.net ]] | ||
Línia 12: | Línia 15: | ||
Abans de començar, aquesta documentació suposa que la xarxa de '''clients''' té les següents característiques: | Abans de començar, aquesta documentació suposa que la xarxa de '''clients''' té les següents característiques: | ||
− | 1. Hi ha una antena que es connecta a la xarxa guifi, i que funciona sense bridge: És a dir, fa de router entre la xarxa privada interna (192.168.1.0/24) i la xarxa pública de guifi.net sense fils (10.0.0.0/8). | + | 1. Hi ha una antena que es connecta a la xarxa guifi, i que funciona sense bridge entre eth0 i wlan0: És a dir, fa de router entre la xarxa privada interna (192.168.1.0/24) i la xarxa pública de guifi.net sense fils que fa el radioenllaç amb el supernode (10.0.0.0/8). |
− | 2. L'antena fa NAT | + | 2. L'antena fa NAT o MASQUERADING amb el transit que surt per la interfície wlan0 (generalment, el radioenllaç amb el supernode). |
3. El servidor DHCP de l'antena està DESACTIVAT. | 3. El servidor DHCP de l'antena està DESACTIVAT. | ||
− | 4. Es disposa d'un router, del que se n'explicarà la configuració als apartats següents, que està connectat a la xarxa privada interna (192.168.1.0/24). Aquest router | + | 4. Es disposa d'un router, del que se n'explicarà la configuració als apartats següents, que està connectat a la xarxa privada interna (192.168.1.0/24). Aquest router funciona de punt d'accés WiFi, de servidor DHCP i d'encaminador. |
=== Configuració de la xarxa als routers clients === | === Configuració de la xarxa als routers clients === |
Revisió de 16:06, 10 set 2014
Tot i que no és convenient aplicar l'argument de l'Internet Gratis perquè la gent s'interessi per guifi.net, és cert que per alguns usuaris el principal atractiu de la xarxa és la possibilitat de connectar-s'hi. La idea de fer servir un servidor proxy per poder-se connectar a Internet pot resultar-los complicada i pot fer desistir als usuaris menys convençuts, especialment si es connecten a través de dispositius mòbils i fan servir aplicacions que no permeten l'ús d'un proxy.
L'objectiu d'aquest article és, per tant, trobar una manera de compartir connexió ADSL amb qui el responsable d'oferir aquesta connexió vulgui. A la vegada, estant segurs de què només la fa servir qui el responsable vol i amb la possibilitat de limitar i controlar les connexions dels usuaris (p.ex. no permetre que visitin segons quins llocs). La condició és que l'usuari final no tengui necessitat de configurar absolutament res al seu terminal, i que la configuració dels routers i APs dels clients sigui senzilla i replicable.
Contingut
La Idea
La idea consisteix en fer servir un servidor VPN a un dels nodes, connectat tant a l’ADSL com a guifi.net, i que encamini el trànsit dels clients cap a fora. A l’altre extrem de la xarxa de guifi.net, els clients VPN poden ésser tant dispositius finals (portàtils) com APs domèstics. En el cas dels APs domèstics, aquests emeten dos SSIDs:
· Un d’obert i que només permet accedir a les rutes de guifi.net i impedeix que el trànsit vagi per la VPN. · Un de privat, que encamina tot el trànsit que no va a cap IP pública de guifi.net a través del túnel VPN.
Assumpcions
Abans de començar, aquesta documentació suposa que la xarxa de clients té les següents característiques:
1. Hi ha una antena que es connecta a la xarxa guifi, i que funciona sense bridge entre eth0 i wlan0: És a dir, fa de router entre la xarxa privada interna (192.168.1.0/24) i la xarxa pública de guifi.net sense fils que fa el radioenllaç amb el supernode (10.0.0.0/8).
2. L'antena fa NAT o MASQUERADING amb el transit que surt per la interfície wlan0 (generalment, el radioenllaç amb el supernode).
3. El servidor DHCP de l'antena està DESACTIVAT.
4. Es disposa d'un router, del que se n'explicarà la configuració als apartats següents, que està connectat a la xarxa privada interna (192.168.1.0/24). Aquest router funciona de punt d'accés WiFi, de servidor DHCP i d'encaminador.
Configuració de la xarxa als routers clients
La infraestructura dels nodes híbrids hauria de ser, en gairebé tots els casos, idèntica, especialment si la configuració de l'antena està feta amb el One Click. A l'apartat anterior queden reflectits les suposicions que prenem abans de començar amb la instal·lació.
El nostre router client d’VPN, però, no serà l’antena, perquè aquesta no ens pot proveir d’una WiFi dins la casa. Aquest nou router haurà d’anar connectat directament a l’antena, a la xarxa 192.168.1.0/24, amb la IP 192.168.1.2. Per no haver de crear més xarxes, més NATs i més IPs, la WiFi privada també està dins la xarxa 192.168.1.0/24, mentre que la pública es troba a la xarxa 192.168.0.0/24 amb IP 192.168.0.1.
D’aquesta manera, qualsevol usuari hauria de tenir com a porta d’enllaç per defecte el router client VPN. El propi router client VPN ha de tenir com a ruta per defecte la interfície tun de la VPN, però també ha de redirigir tota IP 10.0.0.0/8 i 172.16.0.0/16 cap a l’antena (192.168.1.1).
Així mateix, el Firewall permet l’accés de la WiFi tancada cap a la VPN, mentre que no en permet l’accés per la WiFi oberta, la qual només podria enrutar-se per l’antena 192.168.1.1.
Instal·lació
Servidor
Instal·lació
La instal·lació es farà sobre un Ubuntu Server 14.04. Com tots els proxies, aquest servidor necessita de dues interfícies: Una a guifi.net i una a Internet. La interfície de guifi.net està dins la xarxa que té accés a Internet, darrere el clàssic NAT d’un router normal i corrent.
S'han d'instal·lar els següents paquets:
$ sudo apt-get install openvpn $ sudo apt-get install openssl
Configuració
Vegeu el fitxer /etc/openvpn/openvpn.conf:
dev tun #Tun o Tap, Tap és per tunnels a L2 proto udp #UDP o TCP port 1194 #Defines the port to connect ca /etc/openvpn/easy-rsa/keys/ca.crt #This defines where keys and cert are kept cert /etc/openvpn/easy-rsa/keys/server.crt key /etc/openvpn/easy-rsa/keys/server.key dh /etc/openvpn/easy-rsa/keys/dh2048.pem server 10.8.0.0 255.255.255.0 #Rang d’Ips dels clients VPN status /var/log/openvpn-status.log # fitxer de log verb 3 # Quantitat de missatges de log push “redirect-gateway” # MOLT IMPORTANT perquè els clients assignin el serv. VPN com a def. gw. push “dhcp-option DNS 10.91.9.66″ # IMPORTANT perquè els clients tenguin com a DNS el serv. VPN log-append /var/log/openvpn #log comp-lzo # Compressió lzo management 127.0.0.1 1194 # Per management
El push del redirect-gateway i del DNS són molt importants, i és condició necessària perquè els clients puguin connectar-se a la VPN correctament.
I la configuració de les interfícies de /etc/network/interfaces:
auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 10.91.9.66 netmask 255.255.255.224 up route add -net 10.0.0.0 netmask 255.0.0.0 gw 10.91.9.65 up route add -net 172.16.0.0 netmask 255.255.0.0 gw 10.91.9.65 down route del 10.0.0.0 netmask 255.0.0.0 gw 10.91.9.65 down route del 172.16.0.0 netmask 255.255.0.0 gw 10.91.9.65 # The primary network interface auto eth1 iface eth1 inet static address 192.168.1.2 netmask 255.255.255.0 gateway 192.168.1.1 up iptables -t nat -A POSTROUTING -o eth1 -j SNAT –to-source 192.168.1.2 # feim snat del que surt per la LAN de casa nostra. up iptables -A FORWARD -i tun0 -d 192.168.1.0/24 -j DROP # És MOLT important això perquè sinó els clients de guifi.net podrien accedir a les IPs de la nostra LAN interna de casa.
Creació de certificats
El paquet openvpn inclou la utilitat easy-rsa, que serveix per crear i mantenir claus i certificats entre clients i servidors.
Una vegada el paquet openvpn i openssl estiguin instal·lats, feim el següent per deixar-lo apunt per començar a distribuir certificats als clients:
1. Copiam la configuració per defecte de l'easy-rsa
cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/easy-rsa
2. Modificam el fitxer
vim /etc/openvpn/easy-rsa/vars
I a la línia 15 canviam
export EASY_RSA=”`pwd`”
per
export EASY_RSA=”/etc/openvpn/easy-rsa”
3. Carregam les variables de l'easy-rsa
source /etc/openvpn/easy-rsa/vars
4. Netejam la base de dades de claus i certificats.
/etc/openvpn/easy-rsa/clean-all
COMPTE! No executeu això una vegada hàgiu distribuit claus o les revocareu totes i haureu de tornar-les a distribuir!
5. Cream els certificats de la CA i del servidor
cd /etc/openvpn/ ./easy-rsa/build-ca <nom_CA> ./easy-rsa/build-key-server <nom_server> ./easy-rsa/build-dh
Tant a <nom_CA> com a <nom_server> com a tot el que demani es pot posar qualsevol cosa, que l'efecte serà el mateix. El camp de contrasenya també pot estar buit.
Les claus estan totes contingudes al directori /etc/openvpn/easy-rsa/keys.
A partir d'ara podeu crear certificats pels usuaris executant el següent:
source /etc/openvpn/easy-rsa/vars cd /etc/openvpn/ ./easy-rsa/build-key <nom_certificat_client>
És convenient assignar noms diferents a clients diferents, encara que quan es copiïn al router client tendran totes el mateix nom (client 1).
Control de l’ample de banda dels clients al servidor
Segurament serà molt necessari poder limitar l’ample de banda que el responsable del servidor vol donar a la xarxa guifi.net. Amb la comanda tc podem limitar l’ample de banda de eth0 (la interfície de xarxa que està dins guifi.net).
tc qdisc add dev eth0 root handle 1: htb
tc class add dev eth0 parent 1: classid 1:512 htb rate 512kbit
tc filter add dev eth0 protocol ip parent 1: prio 1 u32 match ip dst 0.0.0.0/0 flowid 1:512
També podem crear un script a /etc/init.d que ho executi automàticament.
La limitació és que no aquesta restricció d'ample de banda també s'aplicarà en fer peticions de qualsevol tipus al servidor. És a dir, també s'aplicarà la restricció en fer peticions HTTPs, DNS, FTP...
Clients
El hardware recomanat pels clients és un router tp-link wr841n v9, pel seu baix cost i perquè permet la instal·lació del firmware OpenWRT de forma molt senzilla. Adjunt en aquesta pàgina s'hi troba una imatge per aquest model de router amb tots els paquets necessaris ja instal·lats i preconfigurats.
Instal·lació del firmware i del programari corresponent
Per configurar el router de fàbrica cal:
1. Connectar-se al servidor web que ens ofereix el router de fàbrica.
2. Carregar la imatge del firmware adjunta. [1] Recordau que una baixada descarregat cal canviar el nom del fitxer a openwrt-ar71xx-generic-tl-wr841n-v9-squashfs-factory.bin.zip per poder descomprimir bé la imatge.
3. Una vegada la imatge estigui carregada, connectau-vos al router mitjançant telnet a la IP 192.168.1.2, i se vos obrirà un senzill programa de configuració.
4. Canviau la contrasenya de root i reiniciau el router:
passwd reboot
5. Sol·licitau un certificat del servidor VPN contactant amb l'administrador i copiau els fitxers amb l'extensió <nom_clau_client>.crt i <nom_clau_client>.key al directori /etc/openvpn. En aquest directori també hi haureu de copiar el certificat de la CA (ca.crt). És probable que hàgiu de canviar el nom també de les claus del client, és a dir, que els fitxers de la clau del client s'han d'anomenar client1.crt i client1.key.
6. És important tenir un servidor NTP dins la xarxa guifi.net per no tenir problemes amb els certificats. Posau el nom o la IP del servidor NTP a /etc/config/system.
Administració
Servidor
Si al fitxer /etc/config/openvpn posam la línia
management 127.0.0.1 1194 # Per management
podrem connectar-nos al dimoni del OpenVPN amb telnet:
telnet 127.0.0.1 1194
Log
telnet 127.0.0.1 1194 > log ON
O bé /var/log/openvpn
Client
Instal·lació de programari al TP-LINK WR841N
Tot i que el router escollit permet la instal·lació de OpenWRT, la seva memòria flash és molt petita (4 MB) i no permet que s'hi instal·lin paquets amb l'opkg.
Per instal·lar el paquet OpenWRT, s'ha de crear una image nova amb aquest paquet preinstal·lat. Es pot fer compilant el codi des de 0 o amb l'Image Builder, que és més còmode [2]. Amb l'Image Builder, s'ha de fer servir el PROFILE=TLWR841 i incloure el paquet PACKAGES="openvpn-openssl". La comanda feta servir és:
make image PROFILE=TLWR841 PACKAGES="openvpn-openssl" FILES=files/
Log
Per tenir un log al client VPN, cal descomentar la línia corresopnent a /etc/config/openvpn. Convé tenir-lo actiu només de manera puntual, o omplirà tota la memòria flash.
Actualizació
Servidor
El manteniment i actualització dels paquets correspon a la distribució.
Resolució de problemes habituals
Pèrdua de connexió del client VPN amb el servidor
El motiu més habitual d'aquest error es deu a què el rellotge del client és desbarata i és probable que en comprovar els certificats les hores siguin incorrectes.
S'ha de comprovar la connexió amb el servidor NTP o bé modificar l'hora manualment, tot i que en aquest darrer cas és probable que l'error es repeteixi.
Encaminament
L'encaminament als clients és prou complicat, d'aquí que seran la majoria de problemes que trobarem. Una taula d'encaminament típica seria la següent:
$ route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 10.8.0.9 0.0.0.0 UG 0 0 0 tun0 10.0.0.0 192.168.1.1 255.0.0.0 UG 0 0 0 br-lan 10.8.0.1 10.8.0.5 255.255.255.255 UGH 0 0 0 tun0 10.8.0.5 0.0.0.0 255.255.255.255 UH 0 0 0 tun0 10.91.9.66 192.168.1.1 255.255.255.255 UGH 0 0 0 br-lan 172.16.0.0 192.168.1.1 255.255.0.0 UG 0 0 0 br-lan 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0-1 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 br-lan
Teniu en compte que al firewall es fa masquerading a la tun0, perquè el servidor pugui respondre, i a la LAN, perquè des de la interfície de guest (wlan0-1) es pugui accedir a fora. La interfície eth1 (WAN) no es fa servir.
DHCP
És important desactivar el DHCP de l'antena, ja que l'únic que ha de proporcionar el DHCP és el router. La default route dels terminals és la 192.168.1.2 (el router). Se suposa que l'antena té la IP 192.168.1.1 o alguna altra.
Exemples reals en servidors autogestionats
A la zona de Sóller tenim ara mateix un servidor VPN amb dos clients funcionant, un a Can Palou 6 i l'altre al Casal La Victòria. El servidor es troba a Alqueria 40.
Veure també
Enllaços externs
Imatge del firmware pel TP-LINK WR841 preconfigurada [3]
Pàgina d'OpenVPN [4]
How to create an OpenVPN Server, perfectament explicat[5]
Pàgina de TP-Link WR841 d'OpenWRT [6]
Instal·lació de LuCi i OpenVPN al TP-Link WR841 [7]
Image Generator de OpenWRT [8]