Configurare un Firewall con Load balancing

La configurazione di un firewall con bilanciamento di carico varia molto poco dalla classica configurazione di un firewall con un unico provider, come unica differenza avrà due o più WAN.

Iniziamo con le impostazioni di base necessarie per la maggior parte dei casi e rispettando la regola base dei firewall “chiudo tutte le porte e apro solo quelle che servono”.

La confiugurazione delle interfaccie di rete del firewall sarà ad esempio la seguente:

LAN eth0 192.168.1.2
WAN eth1 10.1.1.2 (ISP 1)
WAN eth2 172.10.10.2 (ISP 2)


iptables -F
iptables -X
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
# INPUT
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -p tcp -m tcp --tcp-flags RST RST -m limit --limit 2/second --limit-burst 2 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -j LOG --log-level 7 --log-prefix "--DROP_INPUT-- "
iptables -A INPUT -m limit --limit 3/min --limit-burst 3 -j LOG --log-prefix "--DROP_INPUT-- "
iptables -A INPUT -j DROP
# FORWARD
iptables -A FORWARD -m state --state INVALID -j DROP
iptables -A FORWARD -i eth0 -o eth2 -p tcp -m state --state NEW -m multiport --dports 20,21,80 -j ACCEPT
iptables -A FORWARD -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p tcp -j REJECT --reject-with tcp-reset
iptables -A FORWARD -j LOG --log-level 7 --log-prefix "--DROP_FORWARD-- "
iptables -A FORWARD -j DROP
# OUTPUT
iptables -A OUTPUT -s 127.0.0.1 -o lo -j ACCEPT
iptables -A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m limit --limit 3/min --limit-burst 3 -j LOG --log-prefix "--DROP_OUTPUT-- "
iptables -A OUTPUT -j LOG --log-level 7 --log-prefix "--DROP_OUTPUT-- "
iptables -A OUTPUT -j DROP
# NAT
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth1 -j SNAT --to-source 10.1.1.2
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth2 -j SNAT --to-source 172.10.10.2

Le righe in corsivo sono le varianti che bisogna aggiungere per gestire il secondo uplinks. Questa parte di configurazione si limita a consentire l’accesso a internet, porta 80, e all’uso dell’ftp porta 20,21 ma non instrada verso un providero o l’altro. Per forzare i pacchetti ad uscire da una WAN piuttosto che dall’altra dobbiamo ricorrere alla tabella “mangle” usata per cambiare il TOS dei pacchetti.


iptables -t mangle -A PREROUTING -i eth0 -s 192.168.1.164 -j MARK --set-xmark 1
iptables -t mangle -A PREROUTING -i lo -p tcp -m tcp --dport 80 -j MARK --set-xmark 2
iptables -t mangle -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j MARK --set-xmark 1
iptables -t mangle -A PREROUTING -i eth0 -p tcp -m tcp --dport 20 -j MARK --set-xmark 1
iptables -t mangle-A PREROUTING -i eth0 -p tcp -m tcp --dport 21 -j MARK --set-xmark 1

Con queste righe ad esempio forzo il traffico di un host della LAN, il 192.168.1.164 ad usare l’ISP 1 marcando i pacchetti con –set-xmark 1, tutta la navigazione del firewall verso l’ISP 2 e nuovamente l’uso del servizio FTP viene indirizzato verso l’ISP 1.

Lo splitting dei pacchetti è possibile solo se in precedenza ho identificato i due uplinks col marker 1 e 2 come spiegato nell’aticolo “Routing tra due uplinks/providers e Load balancing”.

Questa voce è stata pubblicata in Networking e contrassegnata con , , , . Contrassegna il permalink.
 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

verifica *