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 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 Ricordo inoltre di abilitare il forwarding ipv4 in sysctrl.conf<\/em>.<\/span><\/p>\n e il nat in iptables:<\/span><\/p>\n Nella prossima pagina passiamo allo script.<\/span><\/p>\n Lo script \u00e8 molto semplice da realizzare!<\/span><\/p>\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> 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 Gli altri file conterranno il corpo del messaggio. Ad esempio, per quanto riguarda messaggio1.txt<\/em>:<\/span><\/p>\n e l’altro (messaggio2.txt<\/em>):<\/span><\/p>\n A questo punto lo script diventa:<\/span><\/p>\n 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!Configurazione iniziale<\/span><\/strong><\/h2>\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
# \/etc\/sysctl.conf\n# Togliere l'hashtag all'inizio della riga\nnet.ipv4.ip_forward=1<\/code><\/pre>\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
Script base<\/span><\/strong><\/h2>\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
\nAllo script si pu\u00f2 aggiungere una funzione di invio di una notifica via email, ma che vedremo nell’ultima pagina.<\/span><\/p>\nConfigurazione client di posta<\/span><\/strong><\/h2>\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
Connessione primaria down. Si prega di verificare!<\/code><\/pre>\n
Connessione primaria ripristinata.<\/code><\/pre>\n
Script avanzato<\/span><\/strong><\/h2>\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":"
\n Continua a leggere