{"id":589,"date":"2010-05-06T17:26:59","date_gmt":"2010-05-06T16:26:59","guid":{"rendered":"http:\/\/blog.walii.es\/2010\/05\/06\/openvpn-server-bridge-en-linux\/"},"modified":"2010-10-09T20:35:51","modified_gmt":"2010-10-09T18:35:51","slug":"openvpn-server-bridge-en-linux","status":"publish","type":"post","link":"https:\/\/blog.walii.es\/?p=589","title":{"rendered":"OPENVPN Server Bridge en LINUX"},"content":{"rendered":"<p><a href=\"http:\/\/blog.walii.es\/wp-content\/uploads\/2010\/05\/ovpntech_logo-s.png\"><img loading=\"lazy\" class=\"alignleft size-full wp-image-606\" title=\"ovpntech_logo-s\" src=\"http:\/\/blog.walii.es\/wp-content\/uploads\/2010\/05\/ovpntech_logo-s.png\" alt=\"\" width=\"208\" height=\"54\" \/><\/a>Hoy explicare como configurar un servidor LINUX para comportarse como un Servidor de tunel Multi-cliente para que podamos conectarnos a nuestra casa o empresa desde cualquier parte del mundo, con una simple conexi\u00f3n de internet y que nos asigne direcciones IP de nuestra red privada, y podr\u00edamos ver los discos compartidos o imprimir en las impresoras de nuestra casa o trabajo desde cualquier parte. Y de una manera muy segura.<\/p>\n<p>El OPENVPN es un servidor de tuneles gratuito OPENSOURCE pensado para empresas, y que nos ofrece una configuraci\u00f3n muy r\u00e1pida y eficaz. En este caso, veremos c\u00f3mo se configura como BRIDGE (PUENTE), \u00bfQu\u00e9 es lo que quiere decir BRIDGE? Este tipo de configuraci\u00f3n no utiliza ruteo IP y lo que hace es un t\u00fanel IP to IP desde nuestro cliente hasta nuestro server, sin importar lo que hay en medio, encapsulando toda la informaci\u00f3n y solo abriendo esta en el destino. Esto genera que una vez conectados tengamos toda la sensaci\u00f3n de estar con un cable directo a nuestra red privada. Esto a parte de seguro es pr\u00e1ctico ya que todos los protocolos de distribuci\u00f3n y broadcast de nuestra red, funcionaran perfectamente. NETBEUI\/SAMBA\/NFS. Traduci\u00e9ndolo al porte\u00f1o, podremos ver los discos en red, las carpetas compartidas de Windows, Linux o MACos y las impresoras en red.<\/p>\n<p><!--more--><\/p>\n<p><a href=\"http:\/\/openvpn.net\/\" target=\"_blank\">VINCULO A LA WEB DE OPENVPN<\/a><\/p>\n<p>Lo que vamos a hacer es instalar un servidor multicliente en un equipo LINUX, pudiendo ser desde un PC hasta un router con este tipo de firmware por ejemplo un router LINKSYS con el firmware de OPENWRT.<\/p>\n<p><span style=\"text-decoration: underline;\"><strong>Y los clientes en este caso pueden ser WINDOWS o MACosx<br \/>\n<\/strong><\/span><\/p>\n<p><em>En Windows necesitaremos instalar el programa gratuito que ofrece OPENVPN y configurarlo como cliente.<br \/>\n<\/em><\/p>\n<p><strong><em>Config de cliente<br \/>\n<\/em><\/strong><\/p>\n<p><em>Se crea un archivo con nombre <strong>conexi\u00f3n-con-servidor.ovpn<\/strong> en el directorio <strong>C:\\Archivos de programa\\OpenVPN\\config<\/strong><\/em><\/p>\n<p><em><strong><br \/>\n<\/strong><\/em><\/p>\n<address><code><span style=\"font-family: Courier New; font-size: 8pt;\">dev tap <\/span><\/code><\/address>\n<address><code><span style=\"font-family: Courier New; font-size: 8pt;\">proto udp <\/span><\/code><\/address>\n<address><code><span style=\"font-family: Courier New; font-size: 8pt;\">remote \"direcci\u00f3n ip del servidor o nombre de DYNDNS\" 5000 <\/span><\/code><\/address>\n<address><code><span style=\"font-family: Courier New; font-size: 8pt;\">resolv-retry infinite <\/span><\/code><\/address>\n<address><code><span style=\"font-family: Courier New; font-size: 8pt;\">nobind <\/span><\/code><\/address>\n<address><code><span style=\"font-family: Courier New; font-size: 8pt;\">mute-replay-warnings <\/span><\/code><\/address>\n<address><code><span style=\"font-family: Courier New; font-size: 8pt;\">secret openvpn.key   ;con la  firma de clients copiada en el mismo directorio <\/span><\/code><\/address>\n<address><code><span style=\"font-family: Courier New; font-size: 8pt;\">comp-lzo <\/span><\/code><\/address>\n<address><code><span style=\"font-family: Courier New; font-size: 8pt;\">verb 3 <\/span><\/code><\/address>\n<address><code><span style=\"font-family: Courier New; font-size: 8pt;\">;mute 20 <\/span><\/code><\/address>\n<address><code><span style=\"font-family: Courier New; font-size: 8pt;\">Float <\/span><\/code><\/address>\n<address>\n<\/address>\n<address>\n<\/address>\n<address><span style=\"font-family: Courier New; font-size: 8pt;\"><br \/>\n<\/span><\/address>\n<p><em>NOTA: recordemos que a cada cliente deberemos copiarle el archivo de firma generado anteriormente en el servidor, este al ser una firma digital o certificado, puede enviarse v\u00eda correo o transferirse en una llave usb. Pero hay que tener mucho cuidado que no caiga en malas manos, este archivo es como la llave de nuestra casa, quien lo tenga puede entrar en nuestra red privada.<br \/>\n<\/em><\/p>\n<p><strong><em>OPENVPN.KEY<br \/>\n<\/em><\/strong><\/p>\n<p><em>En Mac aunque no existe un programa OPENVPN, tenemos opciones varias, en mi caso he probado con <a href=\"http:\/\/www.viscosityvpn.com\/\">VISCOSITY<\/a> y funciona perfecto.<br \/>\n<\/em><\/p>\n<p><strong>EL SERVIDOR<br \/>\n<\/strong><\/p>\n<p>Lo primero que debemos hacer es instalar el programa OPENVPN, seg\u00fan la distribuci\u00f3n de Linux el procedimiento es diferente:<\/p>\n<p>Para los DEBIAN el comando es: <strong>apt-get install openvpn<\/strong><\/p>\n<p>Para los OPENWRT\/FONERA\/LINKSYS el comando es: <strong>opkg install openvpn<br \/>\n<\/strong><\/p>\n<p>Luego de instalar el programa deberemos crear el archivo de configuraci\u00f3n como servidor.<\/p>\n<p>En este caso creamos un archivo llamado <strong>server.ovpn <\/strong>en el directorio creado para el t\u00fanel por ejemplo<strong> \/etc\/openvpn<\/strong><\/p>\n<p>Y ponemos dentro lo siguiente: pueden omitir los comentarios (lo que est\u00e9 detr\u00e1s de \u00ab;\u00bb   )<\/p>\n<address><span style=\"font-family: Courier New; font-size: 8pt;\">port 5000 ; Puerto donde escuchara las conexiones nuestro t\u00fanel<br \/>\n<\/span><\/address>\n<address><span style=\"font-family: Courier New; font-size: 8pt;\">proto udp\u00a0\u00a0\u00a0\u00a0;protocolo que utilizara la transmisi\u00f3n<br \/>\n<\/span><\/address>\n<address><span style=\"font-family: Courier New; font-size: 8pt;\">dev tap0\u00a0\u00a0\u00a0\u00a0;Interfaz que utilizaremos para recibir las conexiones clientes<br \/>\n<\/span><\/address>\n<address><span style=\"font-family: Courier New; font-size: 8pt;\">keepalive 10 120\u00a0\u00a0\u00a0\u00a0;configuraciones de tiempo de vida de las sesiones cada 10 segundos pregunta si la conexi\u00f3n est\u00e1 viva y si muere ;espera 120 segundos para cortar la sesi\u00f3n.<br \/>\n<\/span><\/address>\n<address><span style=\"font-family: Courier New; font-size: 8pt;\">comp-lzo\u00a0\u00a0\u00a0\u00a0;compresi\u00f3n que utilizara la comunicaci\u00f3n dentro del t\u00fanel<br \/>\n<\/span><\/address>\n<address><span style=\"font-family: Courier New; font-size: 8pt;\">status \/mnt\/usbdrive\/etc\/openvpn\/status.log\u00a0\u00a0\u00a0\u00a0;archivo de log, para guardar informaci\u00f3n de registro<br \/>\n<\/span><\/address>\n<address><span style=\"font-family: Courier New; font-size: 8pt;\">verb 9\u00a0\u00a0\u00a0\u00a0;configuraci\u00f3n de nivel de informaci\u00f3n del archivo de registro valores entre 3 y 9 siendo 9 el mayor detalle.<br \/>\n<\/span><\/address>\n<address><span style=\"font-family: Courier New; font-size: 8pt;\">;mute 20\u00a0\u00a0\u00a0\u00a0;indica que cantidad de mensajes iguales deja pasar antes de dejar de presentar en logs.<br \/>\n<\/span><\/address>\n<address><span style=\"font-family: Courier New; font-size: 8pt;\">secret \/etc\/openvpn.key   ;llave de intercambio para utilizar de firma de conexi\u00f3n<\/span><\/address>\n<address>\n<\/address>\n<address>\n<\/address>\n<address><span style=\"font-family: Courier New; font-size: 8pt;\"><br \/>\n<\/span><\/address>\n<p>Generamos la clave de intercambio (con el comando abajo explicado) la cual deberemos distribuir entre los clientes que quieran conectarse a nuestro servidor.<\/p>\n<p><span style=\"color: #08284f; font-family: Courier New; font-size: 12pt;\"><strong>openvpn &#8211;genkey &#8211;secret \/etc\/openvpn.key<br \/>\n<\/strong><\/span><\/p>\n<p>Necesitaremos tambi\u00e9n un script para el v\u00ednculo y creaci\u00f3n de los puertos TAP0 en este caso haremos lo siguiente:<\/p>\n<p>Creamos un archivo que se llame: <strong>startupscript<br \/>\n<\/strong><\/p>\n<p><strong>Vi \/etc\/openvpn\/startupscript<br \/>\n<\/strong><\/p>\n<p><strong>Y pondremos dentro lo siguiente<br \/>\n<\/strong><\/p>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\">#!\/bin\/sh<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\">#\/etc\/openvpn\/startupscript<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\"># OpenVPN Bridge Config File<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\"># Creates TAP devices for use by OpenVPN and bridges them into OpenWRT Bridge<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\"># Taken from http:\/\/openvpn.net\/bridge.html<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\"># Define Bridge Interface<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\"># Preexisting on OpenWRT<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\">br=\u00bbbr-lan\u00bb<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\"># Define list of TAP interfaces to be bridged,<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\"># for example tap=\u00bbtap0 tap1 tap2&#8243;.<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\">tap=\u00bbtap0&#8243;<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\">case \u00ab$1\u00bb in<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\"> up)<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\"> # Make sure module is loaded<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\"> insmod tun<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\"> # Build tap devices<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\"> for t in $tap; do<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\"> openvpn &#8211;mktun &#8211;dev $t<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\"> done<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\"> # Add TAP interfaces to OpenWRT bridge<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\"> for t in $tap; do<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\"> brctl addif $br $t<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\"> done<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\"> #Configure bridged interfaces<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\"> for t in $tap; do<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\"> ifconfig $t 0.0.0.0 promisc up<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\"> done<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\"> ;;<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\"> down)<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\"> for t in $tap; do<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\"> ifconfig $t 0.0.0.0 down<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\"> done<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\"> for t in $tap; do<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\"> brctl delif $br $t<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\"> done<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\"> for t in $tap; do<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\"> openvpn &#8211;rmtun &#8211;dev $t<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\"> done<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\"> rmmod tun<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\"> ;;<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\"> *)<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\"> echo \u00ab$0 {up|down}\u00bb<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\"> ;;<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\">esac<\/span><\/address>\n<address>\n<\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\"><br \/>\n<\/span><\/address>\n<p>Y por ultimo creamos un archivo de inicio, para que arranque autom\u00e1ticamente el servidor.<\/p>\n<p>Creamos un archivo de inicio.<\/p>\n<address><strong>Vi \/etc\/init.d\/openvpn<br \/>\n<\/strong><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\">#!\/bin\/sh \/etc\/rc.common<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\"># Copyright (C) 2007 OpenWrt.org<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\">START=70<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\">BIN=openvpn<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\">DEFAULT=\/etc\/default\/$BIN<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\">RUN_D=\/var\/run<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\">PID_F=$RUN_D\/$BIN.pid<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\">start() {<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\"> [ -f $DEFAULT ] &amp;&amp; . $DEFAULT<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\"> mkdir -p $RUN_D<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\"> \/etc\/openvpn\/startupscript up<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\"> $BIN $OPTIONS<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\">}<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\">stop() {<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\"> [ -f $PID_F ] &amp;&amp; kill $(cat $PID_F)<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\"> \/etc\/openvpn\/startupscript down<br \/>\n<\/span><\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\">}<\/span><\/address>\n<address>\n<\/address>\n<address><span style=\"color: #262626; font-family: Courier New; font-size: 8pt;\"><br \/>\n<\/span><\/address>\n<p>Le damos permiso de ejecuci\u00f3n con el comando <strong>CHMOD +X \/etc\/init.d\/openvpn<\/strong><\/p>\n<p>NOTA: Dependiendo el caso, necesitar\u00edamos agregar una lista de permisos en el servidor de firewall para permitir el acceso de nuestros clientes a la red privada.<\/p>\n<p>En OPENWRT deberemos agregar las siguientes l\u00edneas al archivo <strong>\/etc\/firewall.user<\/strong> y reiniciar el servicio de firewall con <strong>\/etc\/init.d\/firewall restart<\/strong><\/p>\n<address>\n<\/address>\n<address><span style=\"font-family: Courier New; font-size: 8pt;\"># Allow incoming OpenVPN packets<br \/>\n<\/span><\/address>\n<address><span style=\"font-family: Courier New; font-size: 8pt;\">iptables -A INPUT -p udp &#8211;dport 5000 -j ACCEPT<br \/>\n<\/span><\/address>\n<address><span style=\"font-family: Courier New; font-size: 8pt;\"># Allow packets from TUN\/TAP devices.<br \/>\n<\/span><\/address>\n<address><span style=\"font-family: Courier New; font-size: 8pt;\">iptables -A INPUT -i tun+ -j ACCEPT<br \/>\n<\/span><\/address>\n<address><span style=\"font-family: Courier New; font-size: 8pt;\">iptables -A FORWARD -i tun+ -j ACCEPT<br \/>\n<\/span><\/address>\n<address><span style=\"font-family: Courier New; font-size: 8pt;\">iptables -A INPUT -i tap+ -j ACCEPT<br \/>\n<\/span><\/address>\n<address><span style=\"font-family: Courier New; font-size: 8pt;\">iptables -A FORWARD -i tap+ -j ACCEPT<br \/>\n<\/span><\/address>\n<p>Cuando ejecutemos el servidor con el comando <strong>\/etc\/init.d\/openvpn start<\/strong><\/p>\n<p>Podremos ver si est\u00e1 atendiendo al puerto con el comando <strong>netstat \u2013an <\/strong>y buscar el puerto 5000 si aparece ya podremos conectar a los clientes.<strong><br \/>\n<\/strong><\/p>\n<p><strong>Los comandos para comprobar que la conexi\u00f3n funciona son:<br \/>\n<\/strong><\/p>\n<p><strong>Ifconfig o ipconfig &#8212;-<\/strong> para saber qu\u00e9 direcci\u00f3n IP nos ofreci\u00f3. Tiene que ser del mismo rango que nuestra red privada.<\/p>\n<p><strong>Traceroute o tracert<\/strong> &#8212;- para ver por d\u00f3nde va el tr\u00e1fico que enviemos a nuestra red privada, una vez conectados.<\/p>\n<p>Y si verificamos estos pasos solo nos queda conectarnos a los equipos de nuestra casa u oficina.<\/p>\n<p>Funciona tanto el procedimiento de ejecutar \/\/nombre de host o IP\u2026. Como el buscar equipo en red con el explorador.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hoy explicare como configurar un servidor LINUX para comportarse como un Servidor de tunel Multi-cliente para que podamos conectarnos a nuestra casa o empresa desde cualquier parte del mundo, con una simple conexi\u00f3n de internet y que nos asigne direcciones IP de nuestra red privada, y podr\u00edamos ver los discos compartidos o imprimir en las &hellip;<br \/><a href=\"https:\/\/blog.walii.es\/?p=589\" class=\"more-link pen_button pen_element_default pen_icon_arrow_double\">Seguir leyendo <span class=\"screen-reader-text\">OPENVPN Server Bridge en LINUX<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[68,13],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.walii.es\/index.php?rest_route=\/wp\/v2\/posts\/589"}],"collection":[{"href":"https:\/\/blog.walii.es\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.walii.es\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.walii.es\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.walii.es\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=589"}],"version-history":[{"count":4,"href":"https:\/\/blog.walii.es\/index.php?rest_route=\/wp\/v2\/posts\/589\/revisions"}],"predecessor-version":[{"id":728,"href":"https:\/\/blog.walii.es\/index.php?rest_route=\/wp\/v2\/posts\/589\/revisions\/728"}],"wp:attachment":[{"href":"https:\/\/blog.walii.es\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=589"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.walii.es\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=589"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.walii.es\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=589"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}