Outils pour utilisateurs

Outils du site


firewall_heartbeat

Ceci est une ancienne révision du document !


FIXME

Firewall Haute-Disponibilité

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

FIXME: 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….

firewall_heartbeat.1321146180.txt.gz · Dernière modification: 2011/11/13 02:03 par thierry