Notice: La funzione wp_enqueue_script è stata richiamata in maniera scorretta. Gli script e gli stili non dovrebbero essere registrati o accodati prima degli hook wp_enqueue_scripts, admin_enqueue_scripts, o login_enqueue_scripts. Questo avviso è stato attivato dall'handle nfd_wpnavbar_setting. Leggi Debugging in WordPress per maggiori informazioni. (Questo messaggio è stato aggiunto nella versione 3.3.0.) in /home2/sbkpzrmy/public_html/wp-includes/functions.php on line 6078

Deprecated: La funzione jetpack_form_register_pattern è deprecata dalla versione jetpack-13.4! Utilizza al suo posto Automattic\Jetpack\Forms\ContactForm\Util::register_pattern. in /home2/sbkpzrmy/public_html/wp-includes/functions.php on line 6078

Warning: Cannot modify header information - headers already sent by (output started at /home2/sbkpzrmy/public_html/wp-includes/functions.php:6078) in /home2/sbkpzrmy/public_html/wp-includes/rest-api/class-wp-rest-server.php on line 1831

Warning: Cannot modify header information - headers already sent by (output started at /home2/sbkpzrmy/public_html/wp-includes/functions.php:6078) in /home2/sbkpzrmy/public_html/wp-includes/rest-api/class-wp-rest-server.php on line 1831

Warning: Cannot modify header information - headers already sent by (output started at /home2/sbkpzrmy/public_html/wp-includes/functions.php:6078) in /home2/sbkpzrmy/public_html/wp-includes/rest-api/class-wp-rest-server.php on line 1831

Warning: Cannot modify header information - headers already sent by (output started at /home2/sbkpzrmy/public_html/wp-includes/functions.php:6078) in /home2/sbkpzrmy/public_html/wp-includes/rest-api/class-wp-rest-server.php on line 1831

Warning: Cannot modify header information - headers already sent by (output started at /home2/sbkpzrmy/public_html/wp-includes/functions.php:6078) in /home2/sbkpzrmy/public_html/wp-includes/rest-api/class-wp-rest-server.php on line 1831

Warning: Cannot modify header information - headers already sent by (output started at /home2/sbkpzrmy/public_html/wp-includes/functions.php:6078) in /home2/sbkpzrmy/public_html/wp-includes/rest-api/class-wp-rest-server.php on line 1831

Warning: Cannot modify header information - headers already sent by (output started at /home2/sbkpzrmy/public_html/wp-includes/functions.php:6078) in /home2/sbkpzrmy/public_html/wp-includes/rest-api/class-wp-rest-server.php on line 1831

Warning: Cannot modify header information - headers already sent by (output started at /home2/sbkpzrmy/public_html/wp-includes/functions.php:6078) in /home2/sbkpzrmy/public_html/wp-includes/rest-api/class-wp-rest-server.php on line 1831
{"id":283,"date":"2019-06-23T16:02:24","date_gmt":"2019-06-23T14:02:24","guid":{"rendered":"https:\/\/www.alessandrovita.com\/?p=283"},"modified":"2023-01-03T22:35:07","modified_gmt":"2023-01-03T21:35:07","slug":"gestione-automatica-link-primario-backup","status":"publish","type":"post","link":"https:\/\/www.alessandrovita.com\/gestione-automatica-link-primario-backup\/","title":{"rendered":"Gestione automatica link primario e backup"},"content":{"rendered":"

Introduzione<\/span><\/strong><\/h2>\n

Disponendo gi\u00e0 di un computer con linux a bordo, anche di dimensioni ridotte (es: raspberry), \u00e8 possibile gestire una doppia connessione wan, una primaria e una secondaria. Con questo semplice sistema \u00e8 in grado di passare dalla connessione primaria alla secondaria in caso di un fail del collegamento primario e di ritornare su di essa in caso di ripristino, il tutto in maniera automatica.<\/span><\/p>\n

Il trucco \u00e8 molto semplice!<\/span><\/p>\n

Partiamo assegnando alle due interfacce wan due metriche diverse, una pi\u00f9 bassa al link primario ed una pi\u00f9 alta al link secondario. Questo serve per far si che sia possibile dirottare il traffico da e verso la lan e, contemporaneamente, monitorare l’interfaccia primaria. Per monitorare il corretto funzionamento dell’interfaccia, risulta essere sufficiente eseguire un ping, da essa, verso un host esterno, per esempio il classico dns Google 8.8.8.8. In caso di ping negativo viene dirottato il traffico sull’altra interfaccia. Se il traffico \u00e8 stato deviato sulla seconda interfaccia e ritorna online i link primario, viene ripristinato nuovamente il traffico sul link principale.\u00a0 Per spostare il traffico da un’interfaccia ad un’altra, non si fa altro che giocare con la metrica dell’interfaccia primaria, alzandola in caso di fail e abbassandola in caso di ripristino.<\/span><\/p>\n

Ovviamente, il valore della metrica dell’interfaccia primaria deve superare o sottostare a quello dell’interfaccia secondaria. Per modificare le metriche a dispositivo acceso si usa il pacchetto ifmetric<\/strong>. Con uno script si andr\u00e0 a gestire gli instradamenti in automatico.<\/span><\/p>\n

Nelle prossime pagine inserir\u00f2 la configurazione di partenza delle interfacce, uno script base ed un altro script con l’invio di una notifica via email.<\/span><\/p>\n

Configurazione iniziale<\/span><\/strong><\/h2>\n

L’esempio \u00e8 basato su Debian, ma pu\u00f2 essere facilmente modificato per funzionare anche con altre disto.<\/span><\/p>\n

Supponiamo di avere tre interfacce chiamate eth0<\/em> (per la wan1), eth1<\/em> (per la wan2) e eth2<\/em> (per la lan) e di configurarle in questo modo:<\/span><\/p>\n

auto eth0\niface eth0 inet static\n    address 10.10.10.10\n    netmask 255.255.255.0\n    gateway 10.10.10.1\n    metric 10\n\nauto eth1\niface eth1 inet static\n\n    address 10.10.11.10\n    netmask 255.255.255.0\n    gateway 10.10.11.1\n    metric 20\n\nauto eth2\niface eth2 inet static\n\n    address 192.168.1.1\n    netmask 255.255.255.0<\/code><\/pre>\n

Ricordo inoltre di abilitare il forwarding ipv4 in sysctrl.conf<\/em>.<\/span><\/p>\n

# \/etc\/sysctl.conf\n# Togliere l'hashtag all'inizio della riga\nnet.ipv4.ip_forward=1<\/code><\/pre>\n

e il nat in iptables:<\/span><\/p>\n

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE\niptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE\niptables -A FORWARD -s 192.168.1.0\/24 -j ACCEPT\niptables -A FORWARD -d 192.168.1.0\/24 -m state --state RELATED,ESTABLISHED -j ACCEPT<\/code><\/pre>\n

Nella prossima pagina passiamo allo script.<\/span><\/p>\n

Script base<\/span><\/strong><\/h2>\n

Lo script \u00e8 molto semplice da realizzare!<\/span><\/p>\n

#!\/bin\/sh\nOBIETTIVO=8.8.8.8\nATTESA=3\nwhile [ 1 ] # creo un loop infinito\n\n    do\n        if ping -c 1 -W $ATTESA $OBIETTIVO -I eth0 > \/dev\/null\n        then\n\n            # link primario ok, ripristino il traffico\n            ifmetric eth0 10\n\n        else\n            # link primario ko, passo al link secondario\n            ifmetric eth0 50\n\n        fi\n    sleep 1m # attende 1 minuto (modificabile)\ndone<\/code><\/pre>\n

L’importante \u00e8 richiamare lo script generato nel file \/etc\/rc.local<\/em> per l’avvio automatico, inserendo alla fine della riga ‘&<\/em>‘, in modo tale da non bloccare il boot.<\/span>
\nAllo script si pu\u00f2 aggiungere una funzione di invio di una notifica via email, ma che vedremo nell’ultima pagina.<\/span><\/p>\n

Configurazione client di posta<\/span><\/strong><\/h2>\n

Per l’invio in console di una email uso un programma di nome mutt.<\/span><\/p>\n

Questo programma necessita di tre file di testo: uno per la configurazione dell’account e gli altri due per il corpo del messaggio.<\/span><\/p>\n

Il primo file l’ho chiamato server.conf<\/em> e lo user\u00f2 per la configurazione del programma per sfruttare un’account Gmail. Per questioni di sicurezza, \u00e8 fortemente consigliabile la creazione di una password dedicata.<\/span><\/p>\n

set from = @gmail.com\nset use_from = yes\nset envelope_from = yes\nset realname = "nome utente"\nset imap_user = @gmail.com\nset imap_pass = \nset spoolfile = imaps:\/\/imap.gmail.com:993\/INBOX\nset smtp_url = smtp:\/\/@smtp.gmail.com:587\/\nset smtp_pass = \nset folder = imaps:\/\/imap.gmail.com:993\nset record = "+[Gmail]\/Sent Mail"\nset postponed = "+[Gmail]\/Drafts"\nset header_cache = \/etc\/mutt\/cache\/headers\nset message_cachedir = \/etc\/mutt\/cache\/bodies\nset certificate_file = \/etc\/mutt\/certificates\nset move = no<\/code><\/pre>\n

Gli altri file conterranno il corpo del messaggio. Ad esempio, per quanto riguarda messaggio1.txt<\/em>:<\/span><\/p>\n

Connessione primaria down. Si prega di verificare!<\/code><\/pre>\n

e l’altro (messaggio2.txt<\/em>):<\/span><\/p>\n

Connessione primaria ripristinata.<\/code><\/pre>\n

Script avanzato<\/span><\/strong><\/h2>\n

A questo punto lo script diventa:<\/span><\/p>\n

#!\/bin\/sh\nOBIETTIVO=8.8.8.8\nATTESA=3\nwhile [ 1 ] # creo un loop infinito\n    do\n        if ping -c 1 -W $ATTESA $OBIETTIVO -I eth0 > \/dev\/null\n        then\n\n            # link primario ok, ripristino il traffico\n            mutt -s "Stato connessione primaria" -F .\/server.conf  < .\/messagio1.txt\n            ifmetric eth0 10\n\n        else\n            # link primario ko, passo al link secondario\n            mutt -s "Stato connessione primaria" -F .\/server.conf  < .\/messagio2.txt\n            ifmetric eth0 50\n\n        fi\n    sleep 1m # attende 1 minuto (modificabile)\ndone<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"

Con un doppia connessione internet e una rete lan, possiamo configurarne una connessione primaria ed una secondaria. In caso di fail del primario, passa al secondario in automatico. Con questa guida ti dir\u00f2 come fare!
\n Continua a leggere→<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":293,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"nf_dc_page":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[5],"tags":[10,6,7,8],"yoast_head":"\nGestione automatica link primario e backup - Alessandro Vita<\/title>\n<meta name=\"description\" content=\"Una semplice guida che affronta la gestione automatica di una connessione primaria e secondaria in ambiente Linux (ad esempio: Debian o simili)\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.alessandrovita.com\/gestione-automatica-link-primario-backup\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Gestione automatica link primario e backup - Alessandro Vita\" \/>\n<meta property=\"og:description\" content=\"Una semplice guida che affronta la gestione automatica di una connessione primaria e secondaria in ambiente Linux (ad esempio: Debian o simili)\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.alessandrovita.com\/gestione-automatica-link-primario-backup\/\" \/>\n<meta property=\"og:site_name\" content=\"Alessandro Vita\" \/>\n<meta property=\"article:published_time\" content=\"2019-06-23T14:02:24+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-01-03T21:35:07+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.alessandrovita.com\/wp-content\/uploads\/2019\/06\/plan-a-b-copertina.png\" \/>\n\t<meta property=\"og:image:width\" content=\"300\" \/>\n\t<meta property=\"og:image:height\" content=\"200\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"_AV\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"_AV\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.alessandrovita.com\/gestione-automatica-link-primario-backup\/\",\"url\":\"https:\/\/www.alessandrovita.com\/gestione-automatica-link-primario-backup\/\",\"name\":\"Gestione automatica link primario e backup - Alessandro Vita\",\"isPartOf\":{\"@id\":\"https:\/\/www.alessandrovita.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.alessandrovita.com\/gestione-automatica-link-primario-backup\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.alessandrovita.com\/gestione-automatica-link-primario-backup\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i0.wp.com\/www.alessandrovita.com\/wp-content\/uploads\/2019\/06\/plan-a-b-copertina.png?fit=300%2C200&ssl=1\",\"datePublished\":\"2019-06-23T14:02:24+00:00\",\"dateModified\":\"2023-01-03T21:35:07+00:00\",\"author\":{\"@id\":\"https:\/\/www.alessandrovita.com\/#\/schema\/person\/d99ed9670bf796733813644e2a724c0a\"},\"description\":\"Una semplice guida che affronta la gestione automatica di una connessione primaria e secondaria in ambiente Linux (ad esempio: Debian o simili)\",\"breadcrumb\":{\"@id\":\"https:\/\/www.alessandrovita.com\/gestione-automatica-link-primario-backup\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.alessandrovita.com\/gestione-automatica-link-primario-backup\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/www.alessandrovita.com\/gestione-automatica-link-primario-backup\/#primaryimage\",\"url\":\"https:\/\/i0.wp.com\/www.alessandrovita.com\/wp-content\/uploads\/2019\/06\/plan-a-b-copertina.png?fit=300%2C200&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/www.alessandrovita.com\/wp-content\/uploads\/2019\/06\/plan-a-b-copertina.png?fit=300%2C200&ssl=1\",\"width\":300,\"height\":200,\"caption\":\"copertina\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.alessandrovita.com\/gestione-automatica-link-primario-backup\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.alessandrovita.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Gestione automatica link primario e backup\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.alessandrovita.com\/#website\",\"url\":\"https:\/\/www.alessandrovita.com\/\",\"name\":\"Alessandro Vita\",\"description\":\"La logica \u00e8 la base dell'informatica!\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.alessandrovita.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.alessandrovita.com\/#\/schema\/person\/d99ed9670bf796733813644e2a724c0a\",\"name\":\"_AV\",\"url\":\"https:\/\/www.alessandrovita.com\/author\/hbcn9d6w59\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Gestione automatica link primario e backup - Alessandro Vita","description":"Una semplice guida che affronta la gestione automatica di una connessione primaria e secondaria in ambiente Linux (ad esempio: Debian o simili)","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.alessandrovita.com\/gestione-automatica-link-primario-backup\/","og_locale":"it_IT","og_type":"article","og_title":"Gestione automatica link primario e backup - Alessandro Vita","og_description":"Una semplice guida che affronta la gestione automatica di una connessione primaria e secondaria in ambiente Linux (ad esempio: Debian o simili)","og_url":"https:\/\/www.alessandrovita.com\/gestione-automatica-link-primario-backup\/","og_site_name":"Alessandro Vita","article_published_time":"2019-06-23T14:02:24+00:00","article_modified_time":"2023-01-03T21:35:07+00:00","og_image":[{"width":300,"height":200,"url":"https:\/\/www.alessandrovita.com\/wp-content\/uploads\/2019\/06\/plan-a-b-copertina.png","type":"image\/png"}],"author":"_AV","twitter_card":"summary_large_image","twitter_misc":{"Scritto da":"_AV","Tempo di lettura stimato":"4 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.alessandrovita.com\/gestione-automatica-link-primario-backup\/","url":"https:\/\/www.alessandrovita.com\/gestione-automatica-link-primario-backup\/","name":"Gestione automatica link primario e backup - Alessandro Vita","isPartOf":{"@id":"https:\/\/www.alessandrovita.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.alessandrovita.com\/gestione-automatica-link-primario-backup\/#primaryimage"},"image":{"@id":"https:\/\/www.alessandrovita.com\/gestione-automatica-link-primario-backup\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/www.alessandrovita.com\/wp-content\/uploads\/2019\/06\/plan-a-b-copertina.png?fit=300%2C200&ssl=1","datePublished":"2019-06-23T14:02:24+00:00","dateModified":"2023-01-03T21:35:07+00:00","author":{"@id":"https:\/\/www.alessandrovita.com\/#\/schema\/person\/d99ed9670bf796733813644e2a724c0a"},"description":"Una semplice guida che affronta la gestione automatica di una connessione primaria e secondaria in ambiente Linux (ad esempio: Debian o simili)","breadcrumb":{"@id":"https:\/\/www.alessandrovita.com\/gestione-automatica-link-primario-backup\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.alessandrovita.com\/gestione-automatica-link-primario-backup\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/www.alessandrovita.com\/gestione-automatica-link-primario-backup\/#primaryimage","url":"https:\/\/i0.wp.com\/www.alessandrovita.com\/wp-content\/uploads\/2019\/06\/plan-a-b-copertina.png?fit=300%2C200&ssl=1","contentUrl":"https:\/\/i0.wp.com\/www.alessandrovita.com\/wp-content\/uploads\/2019\/06\/plan-a-b-copertina.png?fit=300%2C200&ssl=1","width":300,"height":200,"caption":"copertina"},{"@type":"BreadcrumbList","@id":"https:\/\/www.alessandrovita.com\/gestione-automatica-link-primario-backup\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.alessandrovita.com\/"},{"@type":"ListItem","position":2,"name":"Gestione automatica link primario e backup"}]},{"@type":"WebSite","@id":"https:\/\/www.alessandrovita.com\/#website","url":"https:\/\/www.alessandrovita.com\/","name":"Alessandro Vita","description":"La logica \u00e8 la base dell'informatica!","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.alessandrovita.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"it-IT"},{"@type":"Person","@id":"https:\/\/www.alessandrovita.com\/#\/schema\/person\/d99ed9670bf796733813644e2a724c0a","name":"_AV","url":"https:\/\/www.alessandrovita.com\/author\/hbcn9d6w59\/"}]}},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/i0.wp.com\/www.alessandrovita.com\/wp-content\/uploads\/2019\/06\/plan-a-b-copertina.png?fit=300%2C200&ssl=1","_links":{"self":[{"href":"https:\/\/www.alessandrovita.com\/wp-json\/wp\/v2\/posts\/283"}],"collection":[{"href":"https:\/\/www.alessandrovita.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.alessandrovita.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.alessandrovita.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.alessandrovita.com\/wp-json\/wp\/v2\/comments?post=283"}],"version-history":[{"count":8,"href":"https:\/\/www.alessandrovita.com\/wp-json\/wp\/v2\/posts\/283\/revisions"}],"predecessor-version":[{"id":301,"href":"https:\/\/www.alessandrovita.com\/wp-json\/wp\/v2\/posts\/283\/revisions\/301"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.alessandrovita.com\/wp-json\/wp\/v2\/media\/293"}],"wp:attachment":[{"href":"https:\/\/www.alessandrovita.com\/wp-json\/wp\/v2\/media?parent=283"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.alessandrovita.com\/wp-json\/wp\/v2\/categories?post=283"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.alessandrovita.com\/wp-json\/wp\/v2\/tags?post=283"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}