{"id":3860,"date":"2017-04-01T14:07:34","date_gmt":"2017-04-01T19:07:34","guid":{"rendered":"http:\/\/itsoftware.com.co\/content\/?p=3860"},"modified":"2019-05-18T10:54:50","modified_gmt":"2019-05-18T15:54:50","slug":"instalando-openvpn-en-unbuntu","status":"publish","type":"post","link":"https:\/\/itsoftware.com.co\/content\/instalando-openvpn-en-unbuntu\/","title":{"rendered":"OPENVPN: Instalando el sistema abierto para acceso seguro a nuestra red"},"content":{"rendered":"<figure id=\"attachment_3861\" aria-describedby=\"caption-attachment-3861\" style=\"width: 826px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/itsoftware.com.co\/content\/wp-content\/uploads\/2017\/03\/ejemplo-openvpn-fireos-sas.png\"><img fetchpriority=\"high\" decoding=\"async\" class=\"wp-image-3861\" src=\"https:\/\/itsoftware.com.co\/content\/wp-content\/uploads\/2017\/03\/ejemplo-openvpn-fireos-sas-300x134.png\" alt=\"Ejemplo Openvpn ITSoftware SAS\" width=\"826\" height=\"369\" \/><\/a><figcaption id=\"caption-attachment-3861\" class=\"wp-caption-text\">Ejemplo Openvpn ITSoftware SAS<\/figcaption><\/figure>\n<p><strong>OpenVPN<\/strong>\u00a0es una distribuci\u00f3n opensource de un servidor-cliente VPN, que nos permite un acceso seguro (encriptado) a los recursos de una red local corporativa, haciendo uso de internet.<\/p>\n<p>Una VPN permite establecer una especie de tubo por internet, que nos permite tener los recursos de mi empresa en cualquier lugar de forma segura.<\/p>\n<p>Este art\u00edculo muestra los pasos para\u00a0instalar\u00a0<strong>OpenVPN<\/strong>\u00a0en servidor y un\u00a0 cliente,\u00a0ambos\u00a0corriendo Ubuntu , aunque\u00a0el\u00a0procedimiento es muy\u00a0parecido\u00a0en\u00a0otras\u00a0distribuciones de Linux.<\/p>\n<blockquote><p><strong><em>Te puede interesar leer tambi\u00e9n\u00a0<a href=\"https:\/\/itsoftware.com.co\/content\/servicio-openvpn-routed-bridged\/\" rel=\"bookmark\">Tipos de Servicio OpenVPN Routed y Bridged<\/a><\/em><\/strong><\/p><\/blockquote>\n<p>Para el caso del cliente en Windows, el \u00fanico prerequisito es instalar\u00a0el cliente OPENVPN desde la p\u00e1gina oficial\u00a0https:\/\/openvpn.net.<\/p>\n<p><!--more--><br \/>\nPrimero\u00a0definamos\u00a0algunos elementos de esta configuraci\u00f3n:<\/p>\n<p><strong>Servidor OPENVPN:<\/strong>\u00a0Es\u00a0el\u00a0equipo\u00a0que\u00a0aceptar\u00e1\u00a0las\u00a0conexiones\u00a0de\u00a0los\u00a0clientes\u00a0a\u00a0trav\u00e9s\u00a0de\u00a0la\u00a0VPN.\u00a0En este ejemplo usaremos la\u00a0IP p\u00fablica 190.158.199.92.<br \/>\n<strong>PC Remoto<\/strong>: Es el\u00a0equipo\u00a0que\u00a0se\u00a0conectar\u00e1\u00a0al\u00a0servidor\u00a0a\u00a0trav\u00e9s\u00a0de\u00a0la\u00a0VPN.<\/p>\n<p><strong>Red\u00a0privada: <\/strong>Es\u00a0la\u00a0red local que \u00a0definiremos para conectar nuestra\u00a0VPN, \u00a0usaremos la red 172.18.1.0\/24, por\u00a0lo\u00a0que internamente tendremos\u00a0IP&#8217;s locales como\u00a0172.18.1.1,\u00a0172.18.1.1,\u00a0etc.<br \/>\nTodos\u00a0los\u00a0comandos en Ubuntu deben\u00a0ser\u00a0ejecutados por el usuario\u00a0root\u00a0o con otro usuario con privilegios\u00a0sudo.<\/p>\n<p>Primero tenemos que instalar \u00a0OpenVPN con:<\/p>\n<pre>sudo\u00a0apt-get\u00a0install\u00a0openvpn<\/pre>\n<p>OpenVPN\u00a0se debe instalar \u00a0tanto\u00a0en\u00a0el\u00a0cliente\u00a0como\u00a0en\u00a0el\u00a0servidor, \u00a0el\u00a0archivo\u00a0de\u00a0configuraci\u00f3n\u00a0que se usar\u00e1 para\u00a0iniciar \u00a0la VPN\u00a0identificar\u00e1 los roles\u00a0de servidor y cliente.<\/p>\n<p>Se comentan todas\u00a0las\u00a0l\u00edneas\u00a0en\u00a0\/etc\/default\/openvpn\u00a0y se a\u00f1ade:<\/p>\n<pre>AUTOSTART=\"openvpn\"<\/pre>\n<p>Esto\u00a0le\u00a0dice\u00a0a\u00a0OpenVPN\u00a0cu\u00e1l es el archivo\u00a0de\u00a0configuraci\u00f3n\u00a0predeterminado a usar\u00a0al\u00a0iniciar\u00a0el servidor.<\/p>\n<p>Los\u00a0archivos\u00a0de\u00a0configuraci\u00f3n\u00a0se almacenan\u00a0en\u00a0\/etc\/openvpn, con \u00a0extensi\u00f3n\u00a0.conf, as\u00ed que la instrucci\u00f3n de arriba le dice a OPENVPN que use el archivo \u00a0\/etc\/openvpn\/openvpn.conf, para iniciarse autom\u00e1ticamente.<\/p>\n<p>As\u00ed pues\u00a0el\u00a0servicio\u00a0OpenVPN se puede gestionar con los siguientes comandos:<\/p>\n<p>Iniciar\u00a0OpenVPN:<\/p>\n<pre>\/etc\/init.d\/openvpn\u00a0start<\/pre>\n<p>Detener\u00a0OpenVPN:<\/p>\n<pre> \/etc\/init.d\/openvpn\u00a0stop<\/pre>\n<p>Reiniciar\u00a0OpenVPN:<\/p>\n<pre> \/etc\/init.d\/openvpn\u00a0restart<\/pre>\n<p>Cada\u00a0vez\u00a0que\u00a0se\u00a0cambian\u00a0par\u00e1metros\u00a0en el archivo \/etc\/openvpn\/openvpn.conf\u00a0se\u00a0debe\u00a0reiniciar\u00a0OpenVPN.<\/p>\n<h2><strong>Crear\u00a0claves\u00a0y\u00a0certificados OPENVPN<\/strong><\/h2>\n<p>Ahora se crean los\u00a0certificados\u00a0y\u00a0claves\u00a0de\u00a0seguridad. Con el usuario root se ejecuta:<\/p>\n<pre>cd\u00a0\/etc\/openvpn\/<\/pre>\n<p>Y\u00a0ahora\u00a0se debe copiar el\u00a0directorio\u00a0easy-rsa\u00a0a\u00a0\/etc\/openvpn:<\/p>\n<pre>cp\u00a0-r\u00a0\/usr\/share\/doc\/openvpn\/examples\/easy-rsa\/\u00a0.<\/pre>\n<p>Editamos el archivo vars:<\/p>\n<pre>nano easy-rsa\/vars<\/pre>\n<p>Comentamos \u00a0la l\u00ednea:<\/p>\n<pre>#export\u00a0D=pwd<\/pre>\n<p>Agregamos esta\u00a0l\u00ednea:<\/p>\n<pre> export\u00a0D=\/etc\/openvpn\/easy-rsa<\/pre>\n<p>Y modificamos los\u00a0par\u00e1metros que vienen a continuaci\u00f3n, en la medida que vaya preguntando, bajo las condiciones propias de cada cual:<\/p>\n<pre>export KEY_COUNTRY=CO\n export KEY_PROVINCE=CU\n export KEY_CITY=Bogota\n export KEY_ORG=\"ITSoftware SAS\"\n export KEY_EMAIL=\"itsoftware@itsoftware.com.co\"<\/pre>\n<p>Guardamos y cerramos el archivo.<\/p>\n<p>Ahora ejecutamos:<\/p>\n<pre>.\u00a0.\/vars<\/pre>\n<p>Muy importante, en el anterior comando se tiene\u00a0un punto, un espacio y al final otro punto.<\/p>\n<p>En seguida se introduce\u00a0el siguiente comando:<\/p>\n<pre> .\/clean-all<\/pre>\n<p>Ahora instalamos\u00a0OpenSSL:<\/p>\n<pre>sudo\u00a0apt-get\u00a0install\u00a0openssl<\/pre>\n<p>Con el siguiente comando se crea la autoridad de certificados (CA) con los par\u00e1metros definidos m\u00e1s arriba, se debe a\u00f1adir solamente el Common Name.<\/p>\n<pre>.\/build-ca<\/pre>\n<p>En este punto se crean las claves para el servidor:<\/p>\n<pre>.\/build-key-server\u00a0server<\/pre>\n<p>En este comando, cuando se solicite Common Name, se introduce el primer par\u00e1metro anteriormente ingresado, en este ejemplo \u00abserver\u00bb.<\/p>\n<p>Ahora se responde \u00aby\u00bb a las siguientes\u00a0preguntas:<\/p>\n<pre>Sign\u00a0the\u00a0certificate?\u00a0[y\/n]\u00a0y\u00a01\u00a0out\u00a0of\u00a01\u00a0certificate\u00a0requests\u00a0certified,\u00a0commit?\u00a0[y\/n]<\/pre>\n<p>Ahora se crea\u00a0la clave OPENVPN para el PC remoto, que en este ejemplo se llama client1:<\/p>\n<pre>.\/build-key\u00a0&lt;client1&gt;<\/pre>\n<p>Cuando pregunte por el Common Name, se introduce\u00a0el mismo valor del primer par\u00e1metro como en el caso de la clave de servidor.<\/p>\n<p>Este paso se repite tantas veces se quiera, de acuerdo a la cantidad de clientes remotos que vayan a usar la VPN.<\/p>\n<p>Se generan los par\u00e1metros Diffie\u00a0Hellman:<\/p>\n<pre>.\/build-dh<\/pre>\n<p>A partir de todos estos pasos, ya tenemos un directorio <em>\/etc\/openvpn\/easy-rsa\/keys<\/em>\u00a0con claves y certificados de nuestros clientes remotos en el servidor.<\/p>\n<p>El cliente remoto, entonces debe tener los siguientes archivos disponibles para poderse conectar por medio de OPENVPN, donde clien1.crt y clien1.key son los archivos espec\u00edficos del cliente de este ejemplo:<\/p>\n<pre> ca.crt\n client1.crt\n client1.key\n ta.key<\/pre>\n<p>Para el caso del cliente en Ubunu, los archivos se deben copiar\u00a0en la carpeta\u00a0<em>\/etc\/openvpn<\/em>.<\/p>\n<p>Cuando es un cliente Windows, tambi\u00e9n se deben copiar en la carpeta de certificados de OPENVPN <em>C:\\Archivos de programa\\OpenVPN\\config<\/em>.<\/p>\n<p>En este paso se debe crear\u00a0el archivo de de cliente:\u00a0&lt;cliente&gt;.ovpn, con la siguiente informaci\u00f3n:<\/p>\n<pre>##############################################\n #\u00a0Sample\u00a0client-side\u00a0OpenVPN\u00a02.0\u00a0config\u00a0file\u00a0#\n #\u00a0for\u00a0connecting\u00a0to\u00a0multi-client\u00a0server.\u00a0\u00a0\u00a0\u00a0\u00a0#\n #\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0#\n #\u00a0This\u00a0configuration\u00a0can\u00a0be\u00a0used\u00a0by\u00a0multiple\u00a0#\n #\u00a0clients,\u00a0however\u00a0each\u00a0client\u00a0should\u00a0have\u00a0\u00a0\u00a0#\n #\u00a0its\u00a0own\u00a0cert\u00a0and\u00a0key\u00a0files.\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0#\n #\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0#\n #\u00a0On\u00a0Windows,\u00a0you\u00a0might\u00a0want\u00a0to\u00a0rename\u00a0this\u00a0\u00a0#\n #\u00a0file\u00a0so\u00a0it\u00a0has\u00a0a\u00a0.ovpn\u00a0extension\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0#\n ##############################################\n\n#\u00a0Specify\u00a0that\u00a0we\u00a0are\u00a0a\u00a0client\u00a0and\u00a0that\u00a0we\n #\u00a0will\u00a0be\u00a0pulling\u00a0certain\u00a0config\u00a0file\u00a0directives\n #\u00a0from\u00a0the\u00a0server.\n client\n\n#\u00a0Use\u00a0the\u00a0same\u00a0setting\u00a0as\u00a0you\u00a0are\u00a0using\u00a0on\n #\u00a0the\u00a0server.\n #\u00a0On\u00a0most\u00a0systems,\u00a0the\u00a0VPN\u00a0will\u00a0not\u00a0function\n #\u00a0unless\u00a0you\u00a0partially\u00a0or\u00a0fully\u00a0disable\n #\u00a0the\u00a0firewall\u00a0for\u00a0the\u00a0TUN\/TAP\u00a0interface.\n ;dev\u00a0tap\n dev\u00a0tun\n\n#\u00a0Windows\u00a0needs\u00a0the\u00a0TAP-Win32\u00a0adapter\u00a0name\n #\u00a0from\u00a0the\u00a0Network\u00a0Connections\u00a0panel\n #\u00a0if\u00a0you\u00a0have\u00a0more\u00a0than\u00a0one.\u00a0\u00a0On\u00a0XP\u00a0SP2,\n #\u00a0you\u00a0may\u00a0need\u00a0to\u00a0disable\u00a0the\u00a0firewall\n #\u00a0for\u00a0the\u00a0TAP\u00a0adapter.\n ;dev-node\u00a0MyTap\n\n#\u00a0Are\u00a0we\u00a0connecting\u00a0to\u00a0a\u00a0TCP\u00a0or\n #\u00a0UDP\u00a0server?\u00a0\u00a0Use\u00a0the\u00a0same\u00a0setting\u00a0as\n #\u00a0on\u00a0the\u00a0server.\n proto\u00a0tcp\n ;proto\u00a0udp\n\n#\u00a0The\u00a0hostname\/IP\u00a0and\u00a0port\u00a0of\u00a0the\u00a0server.\n #\u00a0You\u00a0can\u00a0have\u00a0multiple\u00a0remote\u00a0entries\n #\u00a0to\u00a0load\u00a0balance\u00a0between\u00a0the\u00a0servers.\n remote\u00a0<strong><span style=\"color: #ff0000;\">190.158.199.92<\/span><\/strong>\u00a01194\n ;remote\u00a0my-server-2\u00a01194\n\n#\u00a0Choose\u00a0a\u00a0random\u00a0host\u00a0from\u00a0the\u00a0remote\n #\u00a0list\u00a0for\u00a0load-balancing.\u00a0\u00a0Otherwise\n #\u00a0try\u00a0hosts\u00a0in\u00a0the\u00a0order\u00a0specified.\n ;remote-random\n\n#\u00a0Keep\u00a0trying\u00a0indefinitely\u00a0to\u00a0resolve\u00a0the\n #\u00a0host\u00a0name\u00a0of\u00a0the\u00a0OpenVPN\u00a0server.\u00a0\u00a0Very\u00a0useful\n #\u00a0on\u00a0machines\u00a0which\u00a0are\u00a0not\u00a0permanently\u00a0connected\n #\u00a0to\u00a0the\u00a0internet\u00a0such\u00a0as\u00a0laptops.\n resolv-retry\u00a0infinite\n\n#\u00a0Most\u00a0clients\u00a0don't\u00a0need\u00a0to\u00a0bind\u00a0to\n #\u00a0a\u00a0specific\u00a0local\u00a0port\u00a0number.\n nobind\n\n#\u00a0Downgrade\u00a0privileges\u00a0after\u00a0initialization\u00a0(non-Windows\u00a0only)\n ;user\u00a0nobody\n ;group\u00a0nobody\n\n#\u00a0Try\u00a0to\u00a0preserve\u00a0some\u00a0state\u00a0across\u00a0restarts.\n persist-key\n persist-tun\n\n#\u00a0If\u00a0you\u00a0are\u00a0connecting\u00a0through\u00a0an\n #\u00a0HTTP\u00a0proxy\u00a0to\u00a0reach\u00a0the\u00a0actual\u00a0OpenVPN\n #\u00a0server,\u00a0put\u00a0the\u00a0proxy\u00a0server\/IP\u00a0and\n #\u00a0port\u00a0number\u00a0here.\u00a0\u00a0See\u00a0the\u00a0man\u00a0page\n #\u00a0if\u00a0your\u00a0proxy\u00a0server\u00a0requires\n #\u00a0authentication.\n ;http-proxy-retry\u00a0#\u00a0retry\u00a0on\u00a0connection\u00a0failures\n ;http-proxy\u00a0[proxy\u00a0server]\u00a0[proxy\u00a0port\u00a0#]\n\n#\u00a0Wireless\u00a0networks\u00a0often\u00a0produce\u00a0a\u00a0lot\n #\u00a0of\u00a0duplicate\u00a0packets.\u00a0\u00a0Set\u00a0this\u00a0flag\n #\u00a0to\u00a0silence\u00a0duplicate\u00a0packet\u00a0warnings.\n ;mute-replay-warnings\n\n#\u00a0SSL\/TLS\u00a0parms.\n #\u00a0See\u00a0the\u00a0server\u00a0config\u00a0file\u00a0for\u00a0more\n #\u00a0description.\u00a0\u00a0It's\u00a0best\u00a0to\u00a0use\n #\u00a0a\u00a0separate\u00a0.crt\/.key\u00a0file\u00a0pair\n #\u00a0for\u00a0each\u00a0client.\u00a0\u00a0A\u00a0single\u00a0ca\n #\u00a0file\u00a0can\u00a0be\u00a0used\u00a0for\u00a0all\u00a0clients.\n<span style=\"color: #ff0000;\"><strong> ca\u00a0ca.crt<\/strong><\/span>\n<span style=\"color: #ff0000;\"><strong> cert\u00a0client1.crt<\/strong><\/span>\n<span style=\"color: #ff0000;\"><strong> key\u00a0client1.key<\/strong><\/span>\n\n#\u00a0Verify\u00a0server\u00a0certificate\u00a0by\u00a0checking\n #\u00a0that\u00a0the\u00a0certicate\u00a0has\u00a0the\u00a0nsCertType\n #\u00a0field\u00a0set\u00a0to\u00a0\"server\".\u00a0\u00a0This\u00a0is\u00a0an\n #\u00a0important\u00a0precaution\u00a0to\u00a0protect\u00a0against\n #\u00a0a\u00a0potential\u00a0attack\u00a0discussed\u00a0here:\n #\u00a0\u00a0http:\/\/openvpn.net\/howto.html#mitm\n #\n #\u00a0To\u00a0use\u00a0this\u00a0feature,\u00a0you\u00a0will\u00a0need\u00a0to\u00a0generate\n #\u00a0your\u00a0server\u00a0certificates\u00a0with\u00a0the\u00a0nsCertType\n #\u00a0field\u00a0set\u00a0to\u00a0\"server\".\u00a0\u00a0The\u00a0build-key-server\n #\u00a0script\u00a0in\u00a0the\u00a0easy-rsa\u00a0folder\u00a0will\u00a0do\u00a0this.\n ;ns-cert-type\u00a0server\n\n#\u00a0If\u00a0a\u00a0tls-auth\u00a0key\u00a0is\u00a0used\u00a0on\u00a0the\u00a0server\n #\u00a0then\u00a0every\u00a0client\u00a0must\u00a0also\u00a0have\u00a0the\u00a0key.\n tls-auth\u00a0ta.key\u00a01\n\n#\u00a0Select\u00a0a\u00a0cryptographic\u00a0cipher.\n #\u00a0If\u00a0the\u00a0cipher\u00a0option\u00a0is\u00a0used\u00a0on\u00a0the\u00a0server\n #\u00a0then\u00a0you\u00a0must\u00a0also\u00a0specify\u00a0it\u00a0here.\n ;cipher\u00a0x\n\n#\u00a0Enable\u00a0compression\u00a0on\u00a0the\u00a0VPN\u00a0link.\n #\u00a0Don't\u00a0enable\u00a0this\u00a0unless\u00a0it\u00a0is\u00a0also\n #\u00a0enabled\u00a0in\u00a0the\u00a0server\u00a0config\u00a0file.\n comp-lzo\n\n#\u00a0Set\u00a0log\u00a0file\u00a0verbosity.\n verb\u00a03\n\n#\u00a0Silence\u00a0repeating\u00a0messages\n ;mute\u00a020<\/pre>\n<p>Aqu\u00ed se debe poner la IP p\u00fablica y los nombres de los archivos de claves y certificados (marcados arriba en color rojo y en negrilla)<\/p>\n<p>Devuelta en el servidor se crea el archivo <em>\/etc\/openvpn\/openvpn.conf\u00a0<\/em>con los siguientes datos:<\/p>\n<pre>dev\u00a0tun\n port\u00a01194\u00a0##\u00a0default\u00a0openvpn\u00a0port\n proto\u00a0tcp\n\npersist-key\n persist-tun\n\n#certificates\u00a0and\u00a0encryption\n ca\u00a0ca.crt\n cert\u00a0server.crt\n key\u00a0server.key\u00a0\u00a0#\u00a0This\u00a0file\u00a0should\u00a0be\u00a0kept\u00a0secret\n dh\u00a0dh1024.pem\n tls-auth\u00a0ta.key\u00a00\u00a0#\u00a0This\u00a0file\u00a0is\u00a0secret\n #cipher\u00a0BF-CBC\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0#\u00a0Blowfish\u00a0(default)\n comp-lzo\n\nuser\u00a0nobody\n group\u00a0nogroup\n server\u00a0<strong><span style=\"color: #ff0000;\">10.8.0.0<\/span><\/strong>\u00a0255.255.255.0\n\npush\u00a0\"route\u00a0<span style=\"color: #ff0000;\"><strong>192.168.0.0<\/strong><\/span>\u00a0255.255.255.0\"\n push\u00a0\"route\u00a0<span style=\"color: #ff0000;\"><strong>172.18.1.0<\/strong><\/span>\u00a0255.255.255.0\"\n\npersist-key\n persist-tun\n\nstatus\u00a0openvpn-status.log\n verb\u00a03\n tls-server\n client-to-client\n\nlog-append\u00a0\/var\/log\/openvpn.log<\/pre>\n<p>Aqu\u00ed se deben tener en cuenta las direcciones IP de la red (marcados en color rojo), en este ejemplo:<\/p>\n<pre>10.8.0.0 : Red que se le asigna a la VPN\n\n192.168.0.0: Red del router IP.\n\n172.18.1.0: Red local a donde nos queremos conectar.<\/pre>\n<p>Finalmente se debe permitir IP forwarding en el servidor:<\/p>\n<pre>echo\u00a01\u00a0&gt;\u00a0\/proc\/sys\/net\/ipv4\/ip_forward<\/pre>\n<p>Y tambi\u00e9n NAT en iptables<\/p>\n<p>Y\u00a0finalmente\u00a0configura\u00a0IP\u00a0forwarding\u00a0e\u00a0iptables\u00a0para\u00a0NAT\u00a0en\u00a0el\u00a0servidor:<\/p>\n<pre>sudo\u00a0iptables\u00a0-t\u00a0nat\u00a0-A\u00a0POSTROUTING\u00a0-s\u00a0172.18.1.0\/24\u00a0-o\u00a0eth0\u00a0-j\u00a0MASQUERADE<\/pre>\n<p>Ojo!!!\u00a0es\u00a0muy\u00a0importante esta l\u00ednea para\u00a0que\u00a0haya\u00a0internet\u00a0en los clientes remotos.<\/p>\n<p>Para\u00a0que\u00a0quede\u00a0persistente el NAT en iptables, agregamos la l\u00ednea en rc.local:<\/p>\n<pre>sudo\u00a0nano\u00a0\/etc\/rc.local<\/pre>\n<pre>sudo\u00a0iptables\u00a0-t\u00a0nat\u00a0-A\u00a0POSTROUTING\u00a0-s\u00a0172.18.1.0\/24\u00a0-o\u00a0eth0\u00a0-j\u00a0MASQUERADE\nexit\u00a00<\/pre>\n<p>O mediante el servicio <em>iptables-persistent<\/em>:<\/p>\n<pre>service iptables-persistent save<\/pre>\n<p>Para verificar que la regla del firewall fue correctamente ingresada, introducimos el siguiente comando:<\/p>\n<pre>sudo\u00a0iptables\u00a0-L\u00a0-t\u00a0nat<\/pre>\n<p>Si los equipos remotos usan VPN, se debe desactivar temporalmente para probar que la configuraci\u00f3n funcione normalmente, para luego hacer la excepci\u00f3n para el puerto TCP 1194, que es el que usa la VPN.<\/p>\n<p>Si durante la creaci\u00f3n de las reglas del firewall se cometi\u00f3 alg\u00fan error, se pueden usar los siguientes comandos:<\/p>\n<p>Para vaciar toda la tabla de reglas de firewall:<\/p>\n<pre>sudo\u00a0iptables\u00a0-F\u00a0-t\u00a0nat<\/pre>\n<p>Ahora se reinicia\u00a0OPENVPN en los equipos cliente y servidor bajo Ubuntu, para poder realizar las pruebas de conexi\u00f3n respectivas.<\/p>\n<p>Ahora si se introducen\u00a0los comandos \u00a0<em>ifconfig<\/em> o \u00a0<em>route\u00a0-n<\/em> podemos notar una nueva\u00a0interfaz de red llamada,\u00a0<em>tun0<\/em>, tanto en en\u00a0cliente\u00a0y\u00a0servidor; que son las que usa OPENVPN.<\/p>\n<p>Finalmente se prueba la conexi\u00f3n desde la m\u00e1quina remota, a una de las m\u00e1quinas locales con:<\/p>\n<pre>ping\u00a0172.18.1.2<\/pre>\n<p>Es posible que se deba habilitar el port forwarding en el router de internet,\u00a0para que el tr\u00e1fico entrante por el puerto 1194, termine en la m\u00e1quina donde est\u00e1 instalado el servicio OPENVPN, en\u00a0este\u00a0ejemplo ser\u00eda:<\/p>\n<pre> Local\u00a0IP \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0Start\u00a0Port \u00a0 \u00a0 \u00a0 End \u00a0Port \u00a0 \u00a0 \u00a0 Protocl \u00a0 \u00a0 \u00a0Enabled\n 192.168.0.29 \u00a0 \u00a0      1194 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 1194 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0TCP\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 OK\u00a0\n\n<\/pre>\n<p>Nota:\u00a0La\u00a0IP\u00a0de\u00a0los\u00a0equipos\u00a0detr\u00e1s\u00a0del\u00a0router\u00a0ADSL\u00a0tienen\u00a0que\u00a0tener sus direcciones IP\u00a0dentro\u00a0de\u00a0su\u00a0rango\u00a0de\u00a0DHCP, \u00a0porque\u00a0sino\u00a0no\u00a0pasa\u00a0el\u00a0tr\u00e1fico de datos.<\/p>\n<p>Ahora el\u00a0PC remoto est\u00e1\u00a0conectado\u00a0al\u00a0servidor de la oficina a\u00a0trav\u00e9s\u00a0de\u00a0OpenVPN\u00a0y es posible conectarse a los recursos de la oficina, desde un sitio remoto, de manera segura con certificados SSL.<\/p>\n<div align=\"left\"><\/div>\n<div><\/div>\n<div>Este art\u00edculo hace parte del sistema de divulgaci\u00f3n de conocimiento de <a href=\"http:\/\/itsoftware.com.co\">ITSoftware SAS<\/a>.<\/div>\n<div><\/div>\n<h3>Si te gust\u00f3 este art\u00edculo, por favor no olvides compartirlo en las redes sociales. \ud83d\ude09<\/h3>\n","protected":false},"excerpt":{"rendered":"<p>OpenVPN\u00a0es una distribuci\u00f3n opensource de un servidor-cliente VPN, que nos permite un acceso seguro (encriptado) a los recursos de una red local corporativa, haciendo uso de internet. Una VPN permite[&#8230;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1205],"tags":[],"class_list":["post-3860","post","type-post","status-publish","format-standard","hentry","category-seguridad-de-red"],"aioseo_notices":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/itsoftware.com.co\/content\/wp-json\/wp\/v2\/posts\/3860","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/itsoftware.com.co\/content\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/itsoftware.com.co\/content\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/itsoftware.com.co\/content\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/itsoftware.com.co\/content\/wp-json\/wp\/v2\/comments?post=3860"}],"version-history":[{"count":0,"href":"https:\/\/itsoftware.com.co\/content\/wp-json\/wp\/v2\/posts\/3860\/revisions"}],"wp:attachment":[{"href":"https:\/\/itsoftware.com.co\/content\/wp-json\/wp\/v2\/media?parent=3860"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/itsoftware.com.co\/content\/wp-json\/wp\/v2\/categories?post=3860"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/itsoftware.com.co\/content\/wp-json\/wp\/v2\/tags?post=3860"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}