Table des matières
Firewall Haute-Disponibilité
Liens:
Introduction
But: mettre en place un firewall Haute-Disponibilité en utilisant: heartbeat et des scripts a ma façon.
Iproute2
Comment on va surement utiliser “iproute” au lieu de “ifconfig”, on va étudier les bases:
Soit eth1
une interface sans aucune configuration, et même pas “up”.
Voir les adresses:
# ip addr show
Associer une IP:
# ip addr add dev eth1 local <IP>/24
Monter l'interface:
# ip link set eth1 up
Et voila. Par exemple:
# route -n ... Destination Passerelle Genmask Indic Metric Ref Use Iface <IP.0> 0.0.0.0 255.255.255.0 U 0 0 0 eth1 ...
Mais pas encore de gateway.
Donc, on peut faire simplement:
# ip route add default via <IP_GATEWAY>
Aprés la création de l'interface initiale, ce sont des alias. Donc:
# ip addr add dev eth1 local <IP_A>/24 # ip addr add dev eth1 local <IP_B>/24 ...
Pour supprimer:
... # ip addr del dev eth1 local <IP_B>/24 # ip addr del dev eth1 local <IP_A>/24
Voila.
HeartBeat
# aptitude install heartbeat
# cd /etc/heartbeat # cp /usr/share/doc/heartbeat/authkeys . # chmod 0600 authkeys
Faire en sorte d'avoir, par exemple:
auth 1 1 sha1 <CODE_SECRET_PARTAGE>
# zcat /usr/share/doc/heartbeat/ha.cf.gz > ha.cf
logfacility local0 keepalive 2 deadtime 15 ucast eth0 <IP_NODE_1> ucast eth0 <IP_NODE_2> auto_failback on node <NAME_NODE_1> node <NAME_NODE_2> respawn hacluster /usr/lib/heartbeat/ipfail apiauth ipfail gid=haclient uid=hacluster
Où:
<IP_NODE_x> | IP du “master” et puis du “slave” |
<NAME_NODE_x> | Nom des machines uname -n : le “master” en premier |
“NODE_1” est le master
“NODE_2” est le slave
Eventuellement, ajouter:
ping <IP_d_un hôte toujours Up>
# zcat /usr/share/doc/heartbeat/haresources.gz > haresources
<NAME_NODE_1> <SERVICES_A_DEMARRER>
Il est voulu que les fichiers de configuration soient identique sur chaque “node”.
Lorsque ça marche, forcer le “standby” de la machine courante:
# /usr/share/heartbeat/hb_standby
Installation
Interfaces
eth0 : LAN : IP fixe locale
eth1 : WAN : IP fixe publique
sysctl.d
- Désactiver l'ipv6
- (ne pas) activer le forward entre interface
- kernel panic pour le fun
- les interfaces ne repondent pas aux requetes ARP qui ne leur sont pas destiné.
Dans /etc/sysctl.d/local.conf
:
# TJ --------------------- # Desactiver Ipv6 (sous Squeeze) net.ipv6.conf.all.disable_ipv6=1 net.ipv6.conf.all.autoconf=0 net.ipv6.conf.default.disable_ipv6=1 net.ipv6.conf.default.autoconf=0 # Activer forward #net.ipv4.ip_forward=1 # En cas de crash noyau kernel.panic=300 # Les requetes ARP ne traversent pas net.ipv4.conf.all.arp_ignore=1 # ------------------------ # pour les *gros* firewall # Par defaut: 65536 # => 65536*2 net.ipv4.netfilter.ip_conntrack_max=131072 net.netfilter.nf_conntrack_max=131072 # ---------- # default ---- ## cat /proc/sys/net/ipv4/neigh/default/gc_thresh{1,2,3} #128 #512 #1024 net.ipv4.neigh.default.gc_thresh1=512 net.ipv4.neigh.default.gc_thresh2=1024 net.ipv4.neigh.default.gc_thresh3=2048 # ------------------------
ne pas activer le “forward” : Donc, laisser le commentaire devant: net.ipv4.ip_forward=1 |
Appliquer:
# sysctl -p /etc/sysctl.d/local.conf
ferm
Liens:
Dans /etc/modules
:
# TJ ------------------ ip_tables ip_conntrack_ftp ip_nat_ftp #ip_conntrack_irc ip_nat_pptp ip_conntrack_pptp # ---------------------
Installer ferm.
# aptitude install ferm
QoS
: Scripte qoshtb
# update-rc.d qoshtb defaults update-rc.d: using dependency based boot sequencing
Tunning
Liens:
Pour un firewall trés solicité, il faut modifier deux ou trois bricoles :
Par exemple, par defaut on a:
/proc/sys/net/ipv4/tcp_fin_timeout = 60 /proc/sys/net/ipv4/tcp_keepalive_time = 7200 /proc/sys/net/ipv4/tcp_window_scaling = 1 /proc/sys/net/ipv4/tcp_sack = 1 /proc/sys/net/ipv4/tcp_timestamps = 1
On peut changé ça en:
/proc/sys/net/ipv4/tcp_fin_timeout = 30 /proc/sys/net/ipv4/tcp_keepalive_time = 1800
Le reste… booooof….