Οδηγός pfSense 2.x MultiWAN FailOver + LoadBalance

Eπανέρχομαι και πάλι στο στο χώρο των firewalls και συγκεκριμένα στο pfSense το οποίο αποτελεί για εμένα προσωπικά την καλύτερη και πιό αξιόπιστη επιλογή όσο αφορά τα open source firewalls.Παρακάτω θα σας δείξω πως μπορείτε να στήσετε ένα αξιόπιστο router/firewall με δυνατότητα failover και load balance δύο ή περισσοτέρων γραμμών internet.Δηλαδή δυνατότητα επαναφοράς του internet σε περίπτωση που η κύρια γραμμή “πέσει” και παράλληλα δυνατότητα όταν αυτές λειτουργούν, να διανέμει τα πακέτα πρός όλες τις γραμμές αυξάνοντας έτσι “εικονικά” το συνολικό bandwidth.

Eαν δεν  έχετε κατεβάσει ήδη το pfSense μπορείτε να το κατεβάσετε εδώ.

Mπορείτε αν θέλετε να πειραματιστείτε είτε σε εικονικό μηχάνημα (virtual machine) χρησιμοποιόντας VirtualBox,vmWare κλπ είτε κάποιο φυσικό μηχάνημα.

Θα θεωρήσω ότι ήδη ξέρετε να κάνετε εγκατάσταση την διανομή και ότι βρισκόμαστε στην αρχική οθόνη του pfSense.Aν θέλετε να μάθετε πως γίνεται η εγκατάσταση κάντε κλικ εδώ.Στο παρακάτω παράδειγμα θα αναφερθώ στην περίπτωση που έχουμε ένα μηχάνημα με 3 κάρτες δικτύου.Μία για το εσωτερικό δίκτυο (LAN), μια για την κύρια γραμμή internet  (primary WAN) και τέλος μία για την δευτερέυουσα σύνδεση στο internet (secondary OPT1).Σημείωση: καλό είναι οι γραμμές του internet να είναι από διαφορετικούς παρόχους π.χ Οtenet και Forthnet ώστε να επιτύχουμε περισσότερες πιθανότητες uptime σε περίπτωση βλάβης του δικτύου του εκάστοτε παρόχου.

Πρώτο βήμα μας θα είναι η ρύθμιση των network interfaces.Των καρτών δικτύου δηλαδή που έχει το μηχάνημα μας.Πηγαίνουμε λοιπόν στην επιλογή interfaces -> assign.Εδώ θα ρυθμίσουμε την κάρτα δικτύου που θα αντιστοιχεί στην κύρια γραμμή του internet (primary WAN) και την δέυτερη (secondary OPT1).Εχουμε ήδη ρυθμισμένη την κάρτα δικτύου που ανήκει στο LAN interface, σε αυτή δηλαδή που αντιστοιχεί στο εσωτερικό δίκτυο και  έχουμε δώσει σε αυτή ip address: 192.168.10.247.Αρα η ip αυτή θα είναι το default gateway που θα ορίσουμε στα τερματικά μας ώστε να έχουν internet.

Βλέπουμε στην παραπάνω εικόνα ότι έχουμε 3 interfaces LAN,WAN και OPT1.H OPT1 μπορείτε να δείτε ότι διαφοροποιείται από τις άλλες δύο διότι χρησιμοποιεί PPPoE authentication για να μπορέσει να συνδεθεί στο internet, ενώ οι άλλες δύο είναι ρυθμισμένες με static ip.Παρακάτω βλέπουμε τις ρυθμιίσεις που έχω δώσει στην WAN1.Συγκεκριμένα έχω βάλει ip 10.1.1.2/24 στο interface και 10.1.1.1 σαν gateway σε αυτή, η οποία 10.1.1.1 αντιστοιχεί στο modem/router που βρίσκεται μπροστά από το interface.Προσοχή εδώ ότι πρέπει να ξετσεκάρουμε την επιλογή Βlock Private Networks διότι εαν δεν το κάνουμε τα πακέτα θα μπλοκαριστούν από το firewall γιατί το subnet που έχω διαλέξει ανήκει σε private network.Eαν χρησιμοποιείται public ips τότε δεν χειάζεται να την ξετσεκάρετε.

Πάμε και στο ΟPT1 interface το οποίο αντιστοιχεί στη δέυτερη γραμμή του internet.Εδώ έχω ρυθμίσει το interface να χρησιμοποιεί PPPoE authentication διότι μπροστά από αυτή έχω ένα adsl modem σε bridge mode και θέλω το opt1 να πάρει την real ip από τον provider.

To επόμενο βήμα είναι να ρυθμίσουμε τις πύλες προς το internet και συγκεκριμένα τα gateways.Συγκεκριμένα πηγαίνουμε στο system -> routing -> gateways.Εκεί πατάμε το κουμπάκι (+) στο δεξί μέρος της οθόνης.Εκεί ρυθμίζουμε το WAN1 και το OPT1 interface όπως παρακάτω:

Αυτό που πρέπει να προσέξετε εδώ είναι η επιλογή Alternative monitor IP στην οποία έχω δηλώσει την ip 8.8.8.8 (dns server της google).Ο λόγος που την έχω βάλει είναι για να παρακολουθεί το firewall εα η γραμμή αυτή είναι ενεργή κάνοντας ping την συγκεκριμένη ip.Στη περίπτωση της OPT1 δεν χρειάζεται διότι θα πάρει την public ip μέσω pppoe οπότε θα μπορεί να κάνει ping εκείνη για να δεί εάν η opt1 είναι ενεργή.Επόμενο βήμα είναι να πάμε στην καρτέλα routes για να δηλώσουμε τα static routes.

Παραπάνω βλέπετε ότι έχω δηλώσει 2 static routes.Ενα με την 8.8.8.8 την οποία έχω δηλώσει να “βγαίνει” μέσω της wan1 και την 8.8.4.4 να βγαίνει μέσω της OPT1. Ο λόγος είναι για να έχω redundancy στους dns server της  google που χρησιμοποιό στο firewall.Aν δεν το κάνω σε περίπτωση που πέσει η πρώτη γραμμή wan1 το firewall δεν θα μπορεί να κάνει resolve τα ονόματα των διευθύνσεων στο ιinternet.Επόμενο βήμα είναι να πάμε στην κατηγορία groups στην ίδια κατηγορία.Εδω θα δημιουργήσουμε 3 groups όπως παρακάτω.

 

 

 

 

Oπως βλέπετε δημιούργησα 3 κατηγορίες: WAN1foWAN2, WAN2foWAN1,WAN1lbWAN2.Oι δύο πρώτες είναι για την περίπτωση που μία από τις 2 γραμμές πέσει (εναλλάξ).Η τρίτη ειναι γιά την περίπτωση που και οι δύο δουλέυουν οπότε ισχύει η πολιτική του load-balancing.Επόμενο βήμα είναι να ρυθμίσουμε τους DNS servers στο firewall.Εγώ προτιμώ να χρησιμοποιώ τους DNS servers της google γιατί είναι και πιό ασφαλείς από αυτούς των ISPs αλλά και από το γεγονός ότι επιτρέπουν την πρόσβαση από οποιοδήποτε πάροχο ISP.Πηγαίνουμε λοιπόν στην καρτέλα System -> General Setup -> DNS Servers  kαι βάζουμε τα παρακάτω:

Τέλος πάμε να δημιουργήσουμε και τα αντίστοιχα firewall rules πηγαίνοντας στο Firewall -> Rules -> LAN

Στην πρώτη εικόνα βλέπουμε το σύνολο των κανόνων.Οι υπόλοιπες είναι ο κάθε κανόνας ξεχωριστά εσωτερικά ξεκινώντας από πάνω προς τα κάτω.Ο πρώτος κανόνας χρειάζεται για να μπορείτε να κατεβάζετε από ftp server δεδομένα.Ο δέυτερος (HTTPs) είναι γιά να μπορέσουν να δουλέψουν σωστά τα λεγόμενα sticky connections όπως το https,ssh,pop3s κλπ τα οποία δεν μπορούν να γίνουν load balance.O τρίτος (WAN1 + WAN2 ) είναι γιανα δουλέψει ο load balancer γα τις δύο γραμμές.Ο τέταρτος κανόνας είναι για να μπορέσουμε να έχουμε πρόσβαση στο router της πρώτης γραμμής.Ο πέμπτος για μπορέσουμε να έχουμε πρόσβαση στο router της δευτερης γραμμής (tellas).Τελος ο έκτος κανόνας είναι για να επιτρέπει όλη την υπόλοιπη κίνηση από το εσωτερικό δίκτυο προς το internet.

Εδώ θέλω να αναφέρω ότι σε μερικά rules όπως για παράδειγμα το HTTPs,WAN1+WAN2 κλπ έχω δηλώσει σαν destination Aliases.Αυτό το έκανα γιατι τα Aliases μας βοηθάνε να γκρουπάρουμε ports,ips κλπ χωρίς να είναι ανάγκη να τα δηλώνουμε μεμονομένα.Για να το κάνετε αυτό πηγαίνετε στην επιλογή  Firewall -> Aliases

Λοιπόν τώρα είμαστε έτοιμοι να δοκιμάσουμε το firewall μας.Βγάλτε το καλωδιο δικτύου από το πρώτο router (wan1) και μετά από λίγα δευτερόλεπτα δοκιμάστε να ανοίξετε μιά σελίδα στο internet.Θα πρέπει να ανοίξει.Εάν όχι τότε κάτι έχετε ξεχάσει οπότε πρέπει να κάνετε troubleshooting 🙂

Αυτά προς το παρόν.Περισσότερα για το pfSense σε επόμενα posts.