{"id":2250,"date":"2020-04-04T19:56:30","date_gmt":"2020-04-05T01:56:30","guid":{"rendered":"https:\/\/www.lastdragon.net\/?p=2250"},"modified":"2020-04-05T02:10:06","modified_gmt":"2020-04-05T08:10:06","slug":"vpn-wireguard","status":"publish","type":"post","link":"https:\/\/www.lastdragon.net\/?p=2250","title":{"rendered":"VPN WireGuard en CentOS 8"},"content":{"rendered":"\n<p>WireGuard es una VPN de ultima generaci\u00f3n, que funciona de forma privilegiada dentro del kernel de Linux lo que le da una ligereza que no tiene OpenVPN. Esta VPN esta pensada para ser f\u00e1cil de implementar y para ser mas veloz que IPSec u OpenVPN<\/p>\n\n\n\n<figure class=\"wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"VPN WireGuard\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/P8fdFN6kr8Y?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>En este art\u00edculo se configurar\u00e1 en CentOS 8, salvo se indique lo contrario los siguientes pasos se tiene que hacer en el lado servidor y en el lado cliente ( En realidad ambos lados son Peers ) el servidor tendr\u00e1 la IP global de internet 192.155.87.230 y en el t\u00fanel 200.34.35.1 y el cliente no requiere IP global fija y tendr\u00e1 la ip en el t\u00fanel 200.34.35.2<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><strong>Requisitos<\/strong><br \/> Habilitar repositorios<br \/> yum install epel-release -y<br \/> yum install &#8216;dnf-command(config-manager)&#8217; -y<br \/> yum config-manager &#8211;set-enabled PowerTools<br \/> yum copr enable jdoss\/wireguard -y<\/p><\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><strong>Instalar WireGuard<\/strong><\/p><p>yum install wireguard-dkms wireguard-tools -y<\/p><\/blockquote>\n\n\n\n<p><strong>Crear el directorio \/etc\/wireguard\/ para el archivo de configuraci\u00f3n de interface y la llave p\u00fablica y privada<\/strong><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>mkdir \/etc\/wireguard\/ ; touch \/etc\/wireguard\/wg0.conf ;chmod og-wrx \/etc\/wireguard\/ -R<\/p><\/blockquote>\n\n\n\n<p><strong>Generar las llaves dentro del directorio \/etc\/wireguard<\/strong><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>wg genkey &gt; privatekey ; cat privatekey | wg pubkey &gt; publickey ; chmod go-wrx privatekey publickey<\/p><\/blockquote>\n\n\n\n<p><strong>Configurar la interface del servidor ( Peer A ) en el archivo <\/strong><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>\/etc\/wireguard\/wg0.conf<\/p><cite>[Interface]<br \/> #IP del t\u00fanel en el servidor<br \/> Address = 200.34.35.1\/32<br \/> #Puerto de escucha<br \/> ListenPort = 31194<br \/> #Asignar la cadena almacenada en: \/etc\/wireguard\/privatekey, ejemplo:<br \/> PrivateKey = cBRd8MhXckz5ZnNRvk8F+r0558sfJlI0YdJ7ZQfWqUM=<br \/> #Clientes en bloques Peer<br \/> [Peer]<br \/> #Texto almacenado en el \/etc\/wireguard\/pubkey del cliente<br \/> PublicKey = bsPJHph1C\/jxg6suouqKTWQhBK\/1OEq8fZRXxUfHfGs=<br \/> #Permitir la IP del t\u00fanel del cliente<br \/> AllowedIPs = 200.34.35.2\/32<\/cite><\/blockquote>\n\n\n\n<p><em>Arrancar la interface wg0 con systemctl start wg-quick@wg0<\/em><\/p>\n\n\n\n<p>Ejecutar wg, la salida debe ser similar a:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>#wg<\/p><p>interface: wg0<br \/>   public key: py+3ImPAGBA8Osaa5T5beb5R6PHkQ5iv5c1bpJHFjEg=<br \/>   private key: (hidden)<br \/>   listening port: 31194<\/p><\/blockquote>\n\n\n\n<p><strong>Configurar el cliente ( Peer B ) en el archivo \/etc\/wireguard\/wg0.conf<\/strong><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>[Interface]<\/p><cite>#Asignar la cadena en privatekey, ejemplo:<br \/> PrivateKey = gJ0NWwjO0w+JIWK+1ysryCR1FrGoGb\/rtSWXO\/XWSmU=<br \/> #IP del tunel en el cliente<br \/> Address = 200.34.35.2\/32<br \/> #En el cliente el bloque Peer es el servidor<br \/> [Peer]<br \/> #Asignar el texto de publickey del servidor, ejemplo<br \/> PublicKey = py+3ImPAGBA8Osaa5T5beb5R6PHkQ5iv5c1bpJHFjEg=<br \/> #Lista de acceso de IPS de otros nodos o del servidor<br \/> AllowedIPs = 200.34.35.1\/32<br \/> #IP Global para recibir conexiones en IPv4 o IPv6 del servidor<br \/> Endpoint = 192.155.87.230:31194<br \/> #Revisar que la conexi\u00f3n esta viva cada 15 segundos<br \/> PersistentKeepalive = 15<\/cite><\/blockquote>\n\n\n\n<p><em>Arrancar la interface wg0 con systemctl start wg-quick@wg0<\/em><\/p>\n\n\n\n<p>Ejecutar wg, la salida debe ser similar a:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>wg<br \/> interface: wg0<br \/>   public key: bsPJHph1C\/jxg6suouqKTWQhBK\/1OEq8fZRXxUfHfGs=<br \/>   private key: (hidden)<br \/>   listening port: 60372<\/p><p> peer: py+3ImPAGBA8Osaa5T5beb5R6PHkQ5iv5c1bpJHFjEg=<\/p><p>   endpoint: 192.155.87.230:31194<\/p><p>   allowed ips: 200.34.35.1\/32<\/p><p>   transfer: 0 B received, 444 B sent<\/p><p>   persistent keepalive: every 15 seconds <\/p><\/blockquote>\n\n\n\n<p><\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p><strong>Permisos para pasar redes entre los peers<\/strong><\/p>\n\n\n\n<p>En este ejemplo cada peer le da permiso a su contrario en la directiva allowed ips, wireguard controla que solo esas IP pasar\u00e1n, si se quiere pasar redes LAN detr\u00e1s del t\u00fanel deber\u00e1n ser especificas dichas redes<br \/> Ejemplo:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><br \/> allowed ips =  200.34.35.1\/32, 192.168.0.0\/16<\/p><\/blockquote>\n\n\n\n<p><strong>Pruebas de rendimiento<\/strong><\/p>\n\n\n\n<p>Para las im\u00e1genes se contrato 2 VPS, uno en USA y el otro en Alemania para tener latencia significativa y poder medir rendimientos. Se descarg\u00f3 de Alemania a USA un archivo ISO de CentOS 8 en 3 formas distintas, 1 de IP a IP global, 2 con OpenVPN usando las IP del tunnel y usando las IP del tunel usando WireGuard.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/www.lastdragon.net\/misarchivos\/wireguard\/wireguard.jpg\" alt=\"\"\/><\/figure><\/div>\n\n\n\n<p><a href=\"https:\/\/www.lastdragon.net\/misarchivos\/wireguard\/wireguard.jpg\">Ver m\u00e1s grande<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/www.lastdragon.net\/misarchivos\/wireguard\/openvpn2.jpg\" alt=\"\"\/><\/figure>\n\n\n\n<p><a href=\"https:\/\/www.lastdragon.net\/misarchivos\/wireguard\/openvpn2.jpg\">Ver m\u00e1s grande<\/a><\/p>\n\n\n\n<p><strong>El resultado es:<\/strong><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><br \/> IP a IP Global un tiempo aproximado de 6 Minutos<br \/> WireGuard se duplica el tiempo a un aproximado de 12 minutos<br \/> OpenVPN Se requiere un giga por hora, 7 Horas para pasar el ISO<\/p><\/blockquote>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/www.lastdragon.net\/misarchivos\/wireguard\/transferencia.jpg\" alt=\"\"\/><\/figure><\/div>\n","protected":false},"excerpt":{"rendered":"<p>WireGuard es una VPN de ultima generaci\u00f3n, que funciona de forma privilegiada dentro del kernel de Linux lo que le da una ligereza que no tiene OpenVPN. Esta VPN esta pensada para ser f\u00e1cil de implementar y para ser mas veloz que IPSec u OpenVPN En este art\u00edculo se configurar\u00e1 en CentOS 8, salvo se&#8230;<\/p>\n","protected":false},"author":1,"featured_media":2253,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-2250","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-consultoria-y-manuales"],"_links":{"self":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts\/2250","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2250"}],"version-history":[{"count":4,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts\/2250\/revisions"}],"predecessor-version":[{"id":2255,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts\/2250\/revisions\/2255"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/media\/2253"}],"wp:attachment":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2250"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2250"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2250"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}