{"id":545,"date":"2006-02-01T14:47:16","date_gmt":"2006-02-01T12:47:16","guid":{"rendered":"http:\/\/www.marblestation.com\/blog\/?p=545"},"modified":"2012-04-26T17:20:58","modified_gmt":"2012-04-26T15:20:58","slug":"configuracio-openvpn-a-ubuntu","status":"publish","type":"post","link":"https:\/\/www.marblestation.com\/?p=545","title":{"rendered":"Configuraci\u00f3 OpenVPN a Ubuntu"},"content":{"rendered":"<p>[Wikipedia] Una VPN \u00e9s una tecnologia de xarxa que permet una extensi\u00f3 de xarxa local sobre una xarxa p\u00fablica o no controlada, com per exemple Internet.<\/p>\n<p>L&#8217;exemple m\u00e9s com\u00fa \u00e9s la possibilitat de connectar dos o m\u00e9s sucursals d&#8217;una empresa fent servir com a vincle Internet, permetent als membres del equip de suport t\u00e8cnic la connexi\u00f3 des de casa al centre de c\u00f2mputs, o que un usuari pugui accedir al seu equip dom\u00e8stic des de qualsevol equip remot, com per exemple el d&#8217;un hotel. Tot aix\u00f2 fent servir la infraestructura d&#8217;Internet.[\/Wikipedia]<\/p>\n<p>OpenVPN \u00e9s un servidor de xarxes privades virtuals amb suport SSL i un munt de caracter\u00edstiques. Es lliure, amb llic\u00e8ncia GNU GPL, i multiplataforma.<\/p>\n<p>OpenVPN pot muntar la xarxa virtual utilitzant connexions xifrades amb una clau compartida o amb claus asim\u00e8triques, veurem com construir els dos tipus de VPN.<br \/>\n<!--more--><\/p>\n<h2>OpenVPN amb shared key<\/h2>\n<p>Les connexions es faran utilitzant una clau compartida per tots els clients. \u00c9s menys segur que utilitzar claus p\u00fabliques\/privades, per\u00f2 \u00e9s m\u00e9s f\u00e0cil de configurar.<\/p>\n<p>Instal\u00b7lem openvpn (al client i al servidor):<\/p>\n<pre>\r\n        aptitude install openvpn\r\n<\/pre>\n<p><b>Dades de la xarxa i del VPN<\/b><\/p>\n<p>Xarxa: 192.168.3.0\/24<br \/>\nIP Servidor: 192.168.3.1<br \/>\nIP Client: 192.168.3.2<br \/>\nXarxa VPN: 192.168.100.0\/24<br \/>\nVPN IP Servidor: 192.168.100.1<br \/>\nVPN IP Client: 192.168.100.2<\/p>\n<p><b>Servidor<\/b><\/p>\n<p>Generem la clau compartida:<\/p>\n<pre>\r\n        openvpn --genkey --secret clau\r\n<\/pre>\n<p>Aquesta clau l&#8217;haur\u00e0 d&#8217;utilitzar tot aquell que vulgui connectar amb el VPN. S&#8217;haur\u00e0 de traspassar la clau utilitzant un medi segur (e.g. sftp).<\/p>\n<p>Creem \/etc\/openvpn\/hack.conf:<\/p>\n<pre>\r\n   dev tap0\r\n   proto udp\r\n   up \/etc\/openvpn\/hack.up\r\n   secret clau\r\n   port 50000\r\n   comp-lzo\r\n   ping 15\r\n   verb 5\r\n<\/pre>\n<p>Creem \/etc\/openvpn\/hack.up:<\/p>\n<pre>\r\n   #!\/bin\/bash\r\n   \/sbin\/ifconfig tap0 192.168.100.1 netmask 255.255.255.0 broadcast 192.168.100.255\r\n<\/pre>\n<p>Ens assegurem que es carrega el m\u00f2dul \u201ctun\u201d al arranc ficant-lo al \/etc\/modules i el carreguem en aquest moment:<\/p>\n<pre>\r\n    modprobe tun\r\n<\/pre>\n<p>Iniciem el servei:<\/p>\n<pre>\r\n    \/etc\/init.d\/openvpn start\r\n<\/pre>\n<p><b>Client<\/b><\/p>\n<p>A l&#8217;ordinador que connectar\u00e0 amb la VPN creada, copiem a \/etc\/opevpn\/ la clau compartida generada al servidor de logs i creem \/etc\/openvpn\/hack.conf:<\/p>\n<pre>\r\n    dev tap0\r\n    remote 192.168.3.1\r\n    proto udp\r\n    up \/etc\/openvpn\/hack.up\r\n    secret clau\r\n    port 50000\r\n    comp-lzo\r\n<\/pre>\n<p>Creem \/etc\/openvpn\/hack.up:<\/p>\n<pre>\r\n    #!\/bin\/bash\r\n    \/sbin\/ifconfig tap0 192.168.100.2 netmask 255.255.255.0 broadcast 192.168.100.255\r\n<\/pre>\n<p>Ens assegurem que es carrega el m\u00f2dul \u201ctun\u201d al arranc ficant-lo al \/etc\/modules i el carreguem en aquest moment:<\/p>\n<pre>\r\n    modprobe tun\r\n<\/pre>\n<p>Establim la connexi\u00f3 amb la VPN:<\/p>\n<pre>\r\n    \/etc\/init.d\/openvpn start\r\n<\/pre>\n<h2>OpenVPN amb TLS<\/h2>\n<p>Les connexions es faran utilitzant claus privades\/p\u00fabliques i cada client tindr\u00e0 una diferent. M\u00e9s segur que utilitzar una clau compartida, per\u00f2 requereix m\u00e9s configuraci\u00f3.<\/p>\n<p>Instal\u00b7lem openvpn (al client i al servidor):<\/p>\n<pre>\r\n    aptitude install openvpn\r\n<\/pre>\n<p><b>Dades de la xarxa i del VPN<\/b><\/p>\n<p>Xarxa: 192.168.3.0\/24<br \/>\nIP Servidor: 192.168.2.1<br \/>\nIP Client: 192.168.2.2<br \/>\nXarxa VPN: 192.168.200.0\/24<br \/>\nVPN IP Servidor: 192.168.200.1<br \/>\nVPN IP Client: 192.168.200.2<\/p>\n<p><b>Servidor<\/b><\/p>\n<p>Per crear els certificats, primer s&#8217;ha de crear una entitat certificadora fict\u00edcia. Editem \/<br \/>\netc\/ssl\/openssl.cnf:<\/p>\n<pre>\r\n    [ ca ]\r\n    default_ca   = CA_default\r\n    [ CA_default ]\r\n    dir      = \/etc\/ssl\/xarxaCA # Where everything is kept\r\n    certs        = $dir\/certs # Where the issued certs are kept\r\n    crl_dir      = $dir\/crl # Where the issued crl are kept\r\n    database     = $dir\/index.txt # database index file.\r\n    new_certs_dir    = $dir\/newcerts     # default place for new certs\r\n    certificate = $dir\/xarxaCa.crt      # The CA certificate\r\n    serial       = $dir\/serial       # The current serial number\r\n    crl      = $dir\/crl.pem      # The current CR\r\n    private_key = $dir\/private\/xarxaCa.key # The private key\r\n<\/pre>\n<p>Executem:<\/p>\n<pre>\r\n    mkdir \/etc\/ssl\/xarxaCA\/\r\n    mkdir \/etc\/ssl\/xarxaCA\/certs\r\n    mkdir \/etc\/ssl\/xarxaCA\/private\r\n    mkdir \/etc\/ssl\/xarxaCA\/newcerts\r\n    mkdir \/etc\/ssl\/xarxaCA\/crl\r\n    echo \"01\" > \/etc\/ssl\/xarxaCA\/serial\r\n    touch \/etc\/ssl\/xarxaCA\/index.txt\r\n    cd \/etc\/ssl\/xarxaCA\/\r\n    openssl req -nodes -new -x509 -keyout private\/xarxaCa.key -out xarxaCa.crt -days 365\r\n<\/pre>\n<p>Ara ja disposem de l&#8217;entitat i anem a generar les claus privades, sol\u00b7licituds de certificat i certificats signats tant pel servidor VPN com per un client VPN:<\/p>\n<pre>\r\n    openssl req -nodes -new -keyout privateNet.key -out privateNet.csr\r\n    openssl ca -out privateNet.crt -in privateNet.csr\r\n    openssl req -nodes -new -keyout publicNet.key -out publicNet.csr\r\n    openssl ca -out publicNet.crt -in publicNet.csr\r\n    openssl dhparam -out dh1024.pem 1024\r\n<\/pre>\n<p>La clau i certificat \u201cpublicNet\u201d nom\u00e9s es per un client, s&#8217;ha de fer una clau per a cada nou client que es vulgui connectar. El trasp\u00e0s de la clau cap al client s&#8217;ha de fer mitjan\u00e7ant un medi segur (e.g. sftp).<\/p>\n<p>Creem el directori \/etc\/openvpn\/xarxa i fiquem dintre els arxius: dh1024.pem, xarxaCert.pem, privateNet.crt i privateNet.key. Creem el fitxer \/etc\/openvpn\/xarxa.conf:<\/p>\n<pre>\r\n   dev tap0\r\n   proto udp\r\n   up \/etc\/openvpn\/xarxa.up\r\n   tls-server\r\n   dh \/etc\/openvpn\/xarxa\/dh1024.pem\r\n   ca \/etc\/openvpn\/xarxa\/xarxaCert.pem\r\n   cert \/etc\/openvpn\/xarxa\/privateNet.crt\r\n   key \/etc\/openvpn\/xarxa\/privateNet.key\r\n<\/pre>\n<p>Creem el fitxer \/etc\/openvpn\/xarxa.up:<\/p>\n<pre>\r\n    #!\/bin\/bash\r\n    ifconfig tap0 down\r\n    ifconfig tap0 192.168.200.1 up\r\n<\/pre>\n<p>Ens assegurem que es carrega el m\u00f2dul \u201ctun\u201d al arranc ficant-lo al \/etc\/modules i el carreguem en aquest moment:<\/p>\n<p>    modprobe tun<\/p>\n<p>Ja tenim preparat el servei:<\/p>\n<pre>\r\n    \/etc\/init.d\/openvpn start\r\n<\/pre>\n<p>La interf\u00edcie virtual per on rebrem les dades del VPN ser\u00e0 \u201ctap0\u201d:<\/p>\n<pre>\r\ntap0 Link encap:Ethernet HWaddr 00:FF:26:3D:47:F1\r\n     inet addr:192.168.200.1 Bcast:192.168.200.255 Mask:255.255.255.0\r\n     inet6 addr: fe80::2ff:26ff:fe3d:47f1\/64 Scope:Link\r\n     UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1\r\n     RX packets:0 errors:0 dropped:0 overruns:0 frame:0\r\n     TX packets:3 errors:0 dropped:0 overruns:0 carrier:0\r\n     collisions:0 txqueuelen:1000\r\n     RX bytes:0 (0.0 b) TX bytes:238 (238.0 b)\r\n<\/pre>\n<p><b>Client<\/b><\/p>\n<p>Al ordinador client que volem connectar a la VPN creada, creem el directori \/etc\/openvpn\/xarxa i fiquem dintre els arxius: dh1024.pem, xarxaCert.pem, publicNet.crt i publicNet.key. Creem el fitxer \/etc\/openvpn\/xarxa.conf:<\/p>\n<pre>\r\n    dev tap0\r\n    remote 192.168.2.1\r\n    proto udp\r\n    up \/etc\/openvpn\/vpn2\/xarxa.up\r\n    tls-client\r\n    dh \/etc\/openvpn\/xarxa\/dh1024.pem\r\n    ca \/etc\/openvpn\/xarxa\/xarxaCert.pem\r\n    cert \/etc\/openvpn\/xarxa\/publicNet.crt\r\n    key \/etc\/openvpn\/xarxa\/publicNet.key\r\n    port 50000\r\n    comp-lzo\r\n    ping 15\r\n    verb 5\r\n<\/pre>\n<p>Creem el fitxer \/etc\/openvpn\/xarxa.up:<\/p>\n<pre>\r\n    #!\/bin\/bash\r\n    ifconfig tap0 down\r\n    ifconfig tap0 192.168.200.2 up\r\n<\/pre>\n<p>Ens assegurem que es carrega el m\u00f2dul \u201ctun\u201d al arranc ficant-lo al \/etc\/modules i el carreguem en aquest moment:<\/p>\n<pre>\r\n    modprobe tun\r\n<\/pre>\n<p>Connectem el VPN:<\/p>\n<pre>\r\n    \/etc\/init.d\/openvpn start\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>[Wikipedia] Una VPN \u00e9s una tecnologia de xarxa que permet una extensi\u00f3 de xarxa local sobre una xarxa p\u00fablica o no controlada, com per exemple Internet. L&#8217;exemple m\u00e9s com\u00fa \u00e9s la possibilitat de connectar dos o m\u00e9s sucursals d&#8217;una empresa fent servir com a vincle Internet, permetent als membres del equip de suport t\u00e8cnic la &hellip; <a href=\"https:\/\/www.marblestation.com\/?p=545\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Configuraci\u00f3 OpenVPN a Ubuntu<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,6],"tags":[],"class_list":["post-545","post","type-post","status-publish","format-standard","hentry","category-catala","category-tecnologia"],"_links":{"self":[{"href":"https:\/\/www.marblestation.com\/index.php?rest_route=\/wp\/v2\/posts\/545","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.marblestation.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.marblestation.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.marblestation.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.marblestation.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=545"}],"version-history":[{"count":1,"href":"https:\/\/www.marblestation.com\/index.php?rest_route=\/wp\/v2\/posts\/545\/revisions"}],"predecessor-version":[{"id":1373,"href":"https:\/\/www.marblestation.com\/index.php?rest_route=\/wp\/v2\/posts\/545\/revisions\/1373"}],"wp:attachment":[{"href":"https:\/\/www.marblestation.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=545"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.marblestation.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=545"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.marblestation.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=545"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}