Sans rentrer dans les détails conernant la configuration du firewall dans Solaris 10, cette article va vous permettre de configurer ipfilter dans le cas ou une configuration ipmp est déjà présente. Les détails se trouvent ci-dessous :
Configuration ipmp
Soit un serveur solaris type V40z avec deux interfaces type bge.
# cat /etc/hostname.bge0
host01 deprecated -failover netmask + broadcast + group ipmp1
addif host netmask + broadcast + up
# cat /etc/hostname.bge1
host02 deprecated -failover netmask + broadcast + group ipmp1
# cat /etc/inet/hosts
...
192.168.1.10 host host.domain.com loghost
192.168.1.11 host01 host01.domain.com
192.168.1.12 host02 host02.domain.com
Configuration ipfilter
Cas Solaris 10 update 2
Pour configurer ipfilter avec l'ipmp, il faut utiliser le driver pfil.
# cat /etc/ipf/pfil.ap
...
#e1000g -1 0 pfil
bge -1 0 pfil
...
La modification du fichier /etc/ipf/pfil.ap nécessite un arrêt/relance du module (ou plus simplement du serveur). Il ne faut pas oublier d'activer le service smf.
# svcs online svc:/network/pfil:default
# svcs svc:/network/pfil:default
STATE STIME FMRI
online Oct_03 svc:/network/pfil:default
Il faut créer un groupe (nommé ici ipmp1, tout comme le nom du groupe ipmp) et lui assigner les deux cartes réseaux.
# ndd -get /dev/pfil qif_ipmp_set ipmp1=bge0,bge1
La vérification s'effectue de cette façon
# ndd -get /dev/pfil qif_ipmp_status
ifname members
ipmp1 bge0,bge1
# ndd -get /dev/pfil qif_status
ifname ill q OTHERQ ipmp num sap hl nr nw bad copy copyfail drop notip nodata notdata
ipmp1 0 0 0 0 0 800 0 0 0 0 0 0 0 0 0 0
QIF3 0 ffffffff882e7050 ffffffff882e7148 0 3 806 0 1633203 106184 0 0 0 0 0 0 0
bge1 ffffffff88121540 ffffffff8824d568 ffffffff8824d660 ffffffff9e14c580 2 800 14 9627709772 18921021835 0 3638 0 3638 0 0 0
QIF1 0 ffffffff8824f7f0 ffffffff8824f8e8 0 1 806 0 0 17 0 0 0 0 0 0 0
bge0 ffffffff880ad1c0 ffffffff8814d7e8 ffffffff8814d8e0 ffffffff9e14c580 0 800 14 0 0 0 0 0 0 0 0 0
Pour visulaliser toutes les options du driver pfil
# ndd -get /dev/pfil ?
? (read only)
pfildebug (read and write)
pfil_delayed_copy (read and write)
pfil_interface (read only)
qif_status (read only)
sill_status (read only)
qif_ipmp_status (read only)
qif_ipmp_set (write only)
qif_verbose (read and write)
pfil_inet4 (read only)
pfil_inet6 (read only)
pfil_sync (read only)
Cas Solaris 10 update 3
Le driver pfil n'existe plus à partir de l'update 3 de Solaris 10. Il faut utilisé l'option ipmp_hook_emulation du driver ip.
# ndd -get /dev/ip ipmp_hook_emulation
0
# ndd -set /dev/ip ipmp_hook_emulation 1
# ndd -get /dev/ip ipmp_hook_emulation
1
Validation dans ipfilter
Les règles du firewall doivent contenir le nom du groupe ipmp (attention dans le cas de Solaris 10 update 2 c'est le nom du groupe pfil qu'il faut indiquer). Le démon ipmon doit être lancés pour visualiser les logs
# tail -f /var/adm/ipfilter.log
12/03/2008 08:48:27.432715 ipmp1 @0:117 b 192.168.1.10,3200 -> 192.168.1.100,4976 PR tcp len 20 40 -R OUT
12/03/2008 08:48:29.444544 ipmp1 @0:117 b 192.168.1.10,3200 -> 192.168.1.100,4976 PR tcp len 20 40 -R OUT
12/03/2008 08:48:33.468254 ipmp1 @0:117 b 192.168.1.10,3200 -> 192.168.1.100,4976 PR tcp len 20 40 -R OUT
12/03/2008 08:48:41.515359 ipmp1 @0:117 b 192.168.1.10,3200 -> 192.168.1.100,4976 PR tcp len 20 40 -R OUT