ReLoad

Thierry Jaouen ~ WikiBlog
"Rien à foutre d'être lu, tant que je peux me relire."

Outils pour utilisateurs

Outils du site


blog:2012:03:07:nfs_et_firewall

NFS et FireWall

Je n'ai pas dit “IpTables”, mais “FireWall”… parce qu'en fait , je vais utiliser une surcouche a IpTables nommé “Ferm”.

Peu importe: c'est le même principe.

NFS sans port dynamique

Par défaut, NFS attribue aléatoirement, via portmap, des ports d'entrée pour NFS.

Nous allons attribué au serveur NFS des ports FIXES : les règles “FireWall” seront alors possible.

Installer NFS-SERVER

( Avec port “dynamique” par defaut… )

# aptitude install nfs-kernel-server

On va préparer un partage (pour exemple, toujours):

# mkdir -p /mnt/data/share4backup
# mkdir -p /mnt/data/share4backup/www-free-fr

Qu'on va “exporter” a nos clients NFS: Dans /etc/exports , par exemple:

/mnt/data/share4backup                  192.168.0.111(rw,no_subtree_check,no_root_squash)
/mnt/data/share4backup/www-free-fr      212.27.48.10(rw,no_subtree_check,no_root_squash)
# /etc/init.d/nfs-kernel-server reload

Et voila pour le serveur.

Sur le client en local (192.168…) :
On prépare le point de montage:

# mkdir -p /mnt/share4backup

Et on ajoute dans /etc/fstab :

192.168.0.222:/mnt/data/share4backup /mnt/share4backup nfs defaults,rw,noauto,noatime,nodiratime        0       0

Où:

192.168.0.111 IP du client NFS
192.168.0.222 IP du serveur NFS

mais, vous aviez compris.

On test le montage:

# mount /mnt/share4backup

Ça marche.

Mais ça marche parce qu'on est sur le même reseau.
Pour ce qui est du client en 212.27.48.10, ça ne fonctionnera pas (encore).

Ports FIXES

Liens:

On va utiliser les ports suivant:

  • 111
  • 2049

Et on va choisir (libre a vous de changer):

  • 2764
  • 2765
  • 2766
  • 2767
  • 2768

En résumé , uniquement sur le serveur:

Dans /etc/default/nfs-common , faire en sorte d'avoir:

STATDOPTS="--port 2765 --outgoing-port 2766"

Dans /etc/default/nfs-kernel-server, faire en sorte d'avoir:

RPCMOUNTDOPTS='-p 2767'

Crééer ou adapter le fichier /etc/modprobe.d/local.conf afin d'avoir:

options lockd nlm_udpport=2768 nlm_tcpport=2768
options nfs callback_tcpport=2764

Ce qui defini les options associés au chargement des modules lockd et nfs.

:!: Il faudra rebooter (pas trouvé d'autres moyens) pour appliquer ces options.

Ferm

Et voila, on peut enfin autoriser l'IP public a atteindre un serveur NFS dans le reseau local, avec des règles Ferm comme cela, par exemple:

@def $LAN_IF = eth0;
@def $WAN_IF = eth1;

# ... etc ... nat PREROUTING , nat POSTROUTING, ... etc...

chain FORWARD if $WAN_IF of $LAN_IF saddr 212.27.48.10 daddr 192.168.0.222 {
   mod state state NEW proto ( udp tcp ) dport ( 111 2049 2764:2768 ) ACCEPT;
   mod state state ( ESTABLISHED RELATED ) ACCEPT;
  }

chain FORWARD if $LAN_IF of $WAN_IF ACCEPT;

# ... etc ...

AutoFS

Parce que c'est mieux…

  1. ça se connecte/déconnecte quand necessaire
  2. ça se reconnecte automatiquement en qu'à d'incident (reboot du firewall!)
# aptitude install autofs
# mkdir -p /mnt/autofs

Ça va se mounter automatiquement dans /mnt/autofs (n'essayer pas /mnt)

Apporter les modifications suivantes dans /etc/auto.master :

# TJ ----------
#+auto.master

/mnt/autofs /etc/auto.share4backup --ghost,--timeout=300

# -------------

Créer un fichier /etc/auto.share4backup contenant:

share4backup    -fstype=nfs,rw,nfsver=3,intr,noatime,nodiratime 192.168.0.222:/mnt/data/share4backup
# /etc/init.d/autofs reload

Dans, /mnt/autofs/share4backup , on doit trouver les fichiers via NFS…

Comments




Si vous ne pouvez pas lire le code, téléchargez ce fichier .wav pour l'écouter.
blog/2012/03/07/nfs_et_firewall.txt · Dernière modification: 2012/03/07 13:37 par thierry