{"id":1283,"date":"2012-08-07T17:20:20","date_gmt":"2012-08-07T21:20:20","guid":{"rendered":"http:\/\/arielantigua.com\/weblog\/?p=1283"},"modified":"2012-08-07T17:20:20","modified_gmt":"2012-08-07T21:20:20","slug":"site-to-site-con-vyatta-y-openvpn-en-debian","status":"publish","type":"post","link":"https:\/\/arielantigua.com\/weblog\/2012\/08\/site-to-site-con-vyatta-y-openvpn-en-debian\/","title":{"rendered":"Site-to-Site con Vyatta y OpenVPN en Debian."},"content":{"rendered":"<p>Hoy toca uno de Networking, como el titulo lo dice, esto no es solo de Virtualizaci\u00f3n!<\/p>\n<p>Si como yo tienes varias localidades (nah!! Son varios servidores Dedicados con VMs las cuales uso para pruebas) y las quieres administrar directamente como si estuvieran conectadas en una red corporativa y sin problemas de port-forwarding, aqu\u00ed tengo \u201cuna soluci\u00f3n\u201d para eso.<\/p>\n<p>Desde hace un tiempo no uso pfSense, por qu\u00e9?\u00a0 No me gusta OpenBGPd. Es algo lento en pfSense, esa es mi impresi\u00f3n. Adem\u00e1s de eso, no creo que soportara una tabla full de BGP, en Vyatta actualmente en mi lugar de trabajo la tenemos en 2 servidores con Vyatta desde nuestro proveedor CLARO.<\/p>\n<p>Bueno, lo de BGP ser\u00e1 para otro post, ahora mismo para conectar nuestra localidad remota necesitaremos de un router que soporte OpenVPN en ambos lados, en mi casa tengo Vyatta y en el punto remoto un servidor Debian con OpenVPN instalado desde los paquetes. Necesitaremos los siguientes datos:<\/p>\n<blockquote>\n<p style=\"text-align: justify;\">Red para el t\u00fanel: 10.45.252.252\/30<\/p>\n<p style=\"text-align: justify;\">Red en mi casa: 172.22.35.0\/26<\/p>\n<p style=\"text-align: justify;\">Red en punto remoto: 172.22.114.0\/26<\/p>\n<p style=\"text-align: justify;\">IP WAN en Vyatta-HOME: Din\u00e1mico (Gracias al DSL de CLARO)<\/p>\n<p style=\"text-align: justify;\">IP WAN en Debian con OpenVPN: 173.208.168.10<\/p>\n<\/blockquote>\n<p>Solo nos falta generar un key con OpenVPN para usarlo en este t\u00fanel:<\/p>\n<p><strong>openvpn &#8211;genkey &#8211;secret static.key<\/strong><\/p>\n<p>Con estos datos ya podemos configurar\u2026..<\/p>\n<p><strong>En <a title=\"Debian\" href=\"http:\/\/debian.org\" target=\"_blank\">Debian <\/a>con <a title=\"OpenVPN\" href=\"http:\/\/openvpn.net\/\" target=\"_blank\">OpenVPN<\/a>:<\/strong><\/p>\n<blockquote><p>mode p2p\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 # modo peer to peer<\/p>\n<p>proto udp\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 # protocolo UDP<\/p>\n<p>lport 1194\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 # puerto local<\/p>\n<p>dev-type tun\u00a0\u00a0\u00a0\u00a0 # tipo de interface, TUN porque sera en modo routing.<\/p>\n<p>dev tun-home\u00a0 # nombre de la interface que se vera en ifconfig<\/p>\n<p>tun-ipv6\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 # queremos IPv6, don\u2019t we?<\/p>\n<p>comp-lzo\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 # compression<\/p>\n<p>cd \/etc\/openvpn\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 # directorio donde tendremos el key generado.<\/p>\n<p>secret static.key\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 # el archive con el key<\/p>\n<p>persist-key\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 # si paso algo con el tunel, mantener el key<\/p>\n<p>persist-tun\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 # si pasa algo con el tunel, mantener la interface<\/p>\n<p>status \/var\/log\/home.openvpn.status.log # LOGs<\/p>\n<p>log-append \/var\/log\/home.openvpn.log\u00a0\u00a0 # mas LOGs<\/p>\n<p>keepalive 20 120<\/p>\n<p>verb 5\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 # Verbose!<\/p>\n<p>ifconfig 10.45.252.253 10.45.252.254<\/p><\/blockquote>\n<p>&nbsp;<\/p>\n<p>Todo esto lo tendremos en \/etc\/openvpn en un archivo llamado home.conf, OpenVPN detecta todos los archivos con .conf al final y los ejecuta para crear la interface y todo lo necesario para establecer el t\u00fanel.<\/p>\n<p><strong>En el <a title=\"Vyatta\" href=\"http:\/\/vyatta.org\" target=\"_blank\">Vyatta<\/a>:<\/strong><\/p>\n<p>Aqu\u00ed es algo diferente ya que los desarrolladores de Vyatta adaptaron OpenVPN a su CLI, si ya ha usado Vyatta, saben lo bien elaborado que esta el CLI.<\/p>\n<blockquote><p>edit interface openvpn vtun1 #creamos la interface vtun1, no podemos usar nuestros propios nombres aqui.<\/p>\n<p>set local-address 10.45.252.254 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 #Nuestro lado del tunel<\/p>\n<p>set local-host 10.0.0.2 \u00a0 #IP en la WAN con el DSL de CLARO<\/p>\n<p>set local-port 1194 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 #no es necesario<\/p>\n<p>set mode site-to-site \u00a0\u00a0 #tipo de tunel<\/p>\n<p>set openvpn-options \u00ab&#8211;com-lzo &#8211;persist-tun &#8211;tun-ipv6\u00bb \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 #ya que algunas opciones no estan soportadas, existe la opcion de openvpn-options donde podemos usar las que faltan.<\/p>\n<p>set protocol udp \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 #protocolo a ser usado por el tunel<\/p>\n<p>set remote-address 10.45.252.253 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 #lado remoto del tunel<\/p>\n<p>set remote-host 173.208.168.10 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 #IP WAN del servidor con Debian, nuestro Vyatta siempre iniciara la conexion ya que tiene IP Dinamico.<\/p>\n<p>set remote-port 1194 \u00a0\u00a0 #puerto donde realizaremos la conexi\u00f3n<\/p>\n<p>set shared-secret-key-file \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 #archivo con el mismo key que usamos en el servidor.<\/p>\n<p>commit<\/p>\n<p>save<\/p><\/blockquote>\n<p>nota: no podemos usar comentarios en Vyatta, todo despu\u00e9s del # no puede ser introducido en el CLI.<\/p>\n<p>Al momento de hacer commit en Vyatta la configuraci\u00f3n se aplica y este iniciara la conexi\u00f3n al servidor con OpenVPN, ahora debemos iniciar el OpenVPN en el servidor con Debian:<\/p>\n<blockquote><p>\/etc\/init.d\/openvpn start home.conf<\/p><\/blockquote>\n<p>Autom\u00e1ticamente nuestro t\u00fanel debe subir y podemos hacer ping desde nuestro Vyatta hacia Debian usando la red 10.45.252.252\/30.<\/p>\n<p>Desde Vyatta: ping 10.45.252.253<\/p>\n<p>Ahora solo nos faltar\u00eda que nuestro Vyatta y Debian sepan que redes maneja cada cual, esto en Vyatta lo podemos hacer as\u00ed:<\/p>\n<blockquote><p>set protocol static route 172.22.114.0\/26 next-hop 10.45.252.253<\/p><\/blockquote>\n<p>En nuestro servidor con Debian:<\/p>\n<blockquote><p><code>ip route add 172.22.35.0\/26 via 10.45.252.254 dev tun-home<\/code><\/p><\/blockquote>\n<p><code>Ya nuestros equipos en ambos lados deben tener conectividad uno al otro usando el t\u00fanel.<\/code><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hoy toca uno de Networking, como el titulo lo dice, esto no es solo de Virtualizaci\u00f3n! Si como yo tienes varias localidades (nah!! Son varios servidores Dedicados con VMs las cuales uso para pruebas) y las quieres administrar directamente como si estuvieran conectadas en una red corporativa y sin problemas de port-forwarding, aqu\u00ed tengo \u201cuna [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24,34,77],"tags":[],"class_list":["post-1283","post","type-post","status-publish","format-standard","hentry","category-debian","category-networking","category-vyatta"],"_links":{"self":[{"href":"https:\/\/arielantigua.com\/weblog\/wp-json\/wp\/v2\/posts\/1283","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/arielantigua.com\/weblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/arielantigua.com\/weblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/arielantigua.com\/weblog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/arielantigua.com\/weblog\/wp-json\/wp\/v2\/comments?post=1283"}],"version-history":[{"count":0,"href":"https:\/\/arielantigua.com\/weblog\/wp-json\/wp\/v2\/posts\/1283\/revisions"}],"wp:attachment":[{"href":"https:\/\/arielantigua.com\/weblog\/wp-json\/wp\/v2\/media?parent=1283"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/arielantigua.com\/weblog\/wp-json\/wp\/v2\/categories?post=1283"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/arielantigua.com\/weblog\/wp-json\/wp\/v2\/tags?post=1283"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}