{"id":874,"date":"2015-11-16T15:08:41","date_gmt":"2015-11-16T18:08:41","guid":{"rendered":"http:\/\/www.nerdadas.com.ar\/blog\/?p=874"},"modified":"2015-11-16T15:10:31","modified_gmt":"2015-11-16T18:10:31","slug":"linux-failover-gateway-2-isp","status":"publish","type":"post","link":"https:\/\/www.nerdadas.com\/blog\/linux-failover-gateway-2-isp\/","title":{"rendered":"Linux FailOver Gateway &#8211; 2 ISP"},"content":{"rendered":"<p>Esta va a modo de recordatorio. Si, porque<strong> a veces escribo tambi\u00e9n para mi.<\/strong><\/p>\n<p>Hoy un compa\u00f1ero me preguntaba si alguna vez hab\u00eda hecho alg\u00fan script en <strong>linux para alternar autom\u00e1ticamente en caso de falla\u00a0distintos proveedores de Internet<\/strong>&#8230; Y casualmente, hace un par de a\u00f1os escrib\u00ed un script as\u00ed para solucionar un problema en mi trabajo.<\/p>\n<p>La idea es la siguiente.<strong> Elijo dos ips que funcionen siempre.<\/strong> (En mi caso eleg\u00ed los DNS de Google: 8.8.8.8 y 8.8.4.4). Luego a cada uno le doy una ruta distinta.<\/p>\n<p>Ejemplo:<\/p>\n<p>[pastacode lang=\u00bbbash\u00bb message=\u00bbAgrego rutas est\u00e1ticas\u00bb highlight=\u00bb\u00bb provider=\u00bbmanual\u00bb]<\/p>\n<pre><code>#Agrego una ruta para 8.8.8.8 a trav\u00e9s de 192.168.1.100 en la eth0\r\nroute add -host 8.8.8.8 gw 192.168.1.100\r\n#Agrego una ruta para 8.8.4.4 a trav\u00e9s de 192.168.2.100\r\nroute add -host 8.8.4.4 gw 192.168.2.100<\/code><\/pre>\n<p>[\/pastacode]<\/p>\n<p><strong>Ahora tengo una forma de comprobar por cual conexi\u00f3n hay internet.<\/strong> Si hago ping a 8.8.8.8 me devolver\u00e1 respuesta\u00a0un ISP, si hago ping al 8.8.4.4 me responder\u00e1 el segundo ISP. Comprobando esto, elijo por cual quiero salir primero y despu\u00e9s necesito que mi programa chequee por d\u00f3nde salir.<\/p>\n<p>De m\u00e1s est\u00e1 decir que cada placa de red debe tener una ip en el rango que est\u00e1 su gateway (Obvio)<\/p>\n<p>Ac\u00e1 el script en perl.<\/p>\n<p>[pastacode lang=\u00bbbash\u00bb message=\u00bbbalance.pl\u00bb highlight=\u00bb\u00bb provider=\u00bbmanual\u00bb]<\/p>\n<pre><code>\tuse Net::Ping;\r\n\t$hostA=\"8.8.8.8\";\r\n\t$hostB=\"8.8.4.4\"\r\n\t$p = Net::Ping->new();\r\n\t\tif ($p->ping($hostA)){\r\n\t\t\tsystem(\"route add default gw 192.168.1.100 eth0\");\t\r\n\t\t\tprint \"Cambiando a puerta de Enlace 1\";\r\n\t\t}else{\r\n\t\t\tif($p->ping($hostB)){\r\n\t\t\t\tsystem(\"route add default gw 192.168.2.100 eth1\");\t\t\t\r\n\t\t\t\tprint \"Todo Ok. Saliendo por GW 2\";\r\n\t\t\t}else{\r\n\t\t\t\tsystem(\"route add default gw 192.168.1.100 eth0\");\t\r\n\t\t\t\tprint \"Cambiando a puerta de Enlace 1\";\r\n\t\t\t}\r\n\t\t}\r\n\t$p->close();<\/code><\/pre>\n<p>[\/pastacode]<\/p>\n<p><strong>Si deja de responder ping el hostA cambiamos la conexi\u00f3n a internet por donde sale el hostB.<\/strong> Cuando vuelve, volvemos todo a la normalidad.<\/p>\n<p><strong>Ojal\u00e1 les sirva.<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Esta va a modo de recordatorio. Si, porque a veces escribo tambi\u00e9n para mi. Hoy un compa\u00f1ero me preguntaba si alguna vez hab\u00eda hecho alg\u00fan script en linux para alternar autom\u00e1ticamente en caso de falla\u00a0distintos proveedores de Internet&#8230; Y casualmente, hace un par de a\u00f1os escrib\u00ed un script as\u00ed para solucionar un problema en mi [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":877,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[301,161,17,804],"tags":[1060,1059,827,823,832,826,582,723,1057,37,833,1062,1063,1061,709,1064,704,1065,298,1058,46],"class_list":["post-874","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-failswins","category-seguridad","category-tecnologia","category-ti","tag-automatico","tag-cambio","tag-centos","tag-debian","tag-fail","tag-failover","tag-falla","tag-internet","tag-isp","tag-linux","tag-over","tag-ping","tag-pong","tag-reconexion","tag-route","tag-router","tag-ruta","tag-ruteo","tag-script","tag-servicio","tag-servidor"],"_links":{"self":[{"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/posts\/874","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/comments?post=874"}],"version-history":[{"count":5,"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/posts\/874\/revisions"}],"predecessor-version":[{"id":880,"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/posts\/874\/revisions\/880"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/media\/877"}],"wp:attachment":[{"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/media?parent=874"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/categories?post=874"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/tags?post=874"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}