2010-01-07 5 views
12

Existe-t-il un moyen pratique d'afficher la liste des modules iptables chargés? Je peux montrer les modules installés en listant le répertoire/lib/iptables/(ou/lib64/iptables /) mais j'ai besoin de la liste des modules actifs.Liste des modules iptables chargés

Répondre

20

Loaded iptables modules peuvent être trouvés dans /proc/net/ip_tables_matches entrée du système de fichiers proc.

cat /proc/net/ip_tables_matches 

En PHP, je peux accéder aux chargés iptables modules en chargeant et en pleine explosion contenu du fichier:

$content = file_get_contents('/proc/net/ip_tables_matches'); 
$modules = explode("\n", $content); 

Bien sûr, il a besoin système de fichiers proc à monter (La plupart GNU Linux distros monter par défaut)

3
Ce

est un poste vraiment vieux, mais on y va:

# lsmod | grep ip 

montre une liste des modules chargés, que je pense que la plupart sont liés à iptables ... /proc/net/ip_tables_matches ne montre pas des modules (au moins pas dans RHEL 6)

+0

Peut-être que vous devriez essayer/proc/net/ip_tables_names' à la place ... –

0

Comme Gonio a suggéré des listes de lsmod tous les modules du noyau chargés, mais grepping "ip" ne vous donnera pas tous les modules iptables.

Je préfère utiliser

lsmod|grep -E "nf_|xt_|ip" 

et encore, je ne suis pas sûr que la liste sera complète.

2

Jetez un oeil dans le répertoire suivant (remplacez par votre version du noyau):

ls /lib/modules/2.6.32-504.8.1.el6.x86_64/kernel/net/netfilter/ 

Vous pouvez charger le module à l'aide (laisser tomber le .ko comme indiqué dans le répertoire):

modprobe nf_conntrack_ftp 

Alternativement, vous pouvez vous assurer qu'il est chargé au démarrage en l'ajoutant à:

/etc/sysconfig/iptables-config (RHEL/CENTOS) 

IPTABLES_MODULES="nf_conntrack_ftp" 

Cela semble être mal documenté.

+0

J'apprécie vraiment la note sur la façon de le charger au démarrage. Woauh. J'ai passé trop de temps à chercher ça. – MrJames

1

Essayez ceci pour un aperçu rapide sur les modules netfilter présents sur votre système, ici un one-liner pour coller:

for i in /lib/modules/$(uname -r)/kernel/net/netfilter/*; do echo "\e[33;1m$(basename "$i")\e[0m"; strings "$i" | \grep -e description -e depends| sed -e 's/Xtables: //g' -e 's/=/: /g' -e 's/depends=/depends on: /g'; echo; done 

Encore une fois pour une meilleure lisibilité, avec les nouvelles lignes ajoutées:

#!/bin/bash 
for i in /lib/modules/$(uname -r)/kernel/net/netfilter/* 
do 
    echo "\e[33;1m$(basename "$i")\e[0m" 
    strings "$i" | \grep -e description -e depends | sed -e 's/Xtables: //g' -e 's/=/: /g' -e 's/depends=/depends on: /g' 
    echo 
done 

Nom du fichier apparaîtra en jaune, à partir de laquelle vous pouvez deviner si le module en question existe ou non. La description et les dépendances sont les deux lignes suivantes.

Cela ne couvrira pas tout (parce que ce serait trop facile, souvent). Le seul fait de regarder les modules manuellement, pour voir s'ils existent, vous donne 100% d'informations précises.

iptables -m <match/module name> --help 

Si un module existe sur votre système, à la fin du texte d'aide, vous obtiendrez quelques informations sur la façon de l'utiliser:

ctr-014# iptables -m limit --help 
iptables v1.4.14 

Usage: iptables -[ACD] chain rule-specification [options] 
     iptables -I chain [rulenum] rule-specification [options] 


... 


[!] --version -V    print package version. 

limit match options: 
--limit avg      max average match rate: default 3/hour 
           [Packets per second unless followed by 
           /sec /minute /hour /day postfixes] 
--limit-burst number   number to match in a burst, default 5 
ctr-014# 

Il le module n'est pas présent sur votre système:

ctr-014# iptables -m iplimit --help 
iptables v1.4.14: Couldn't load match `iplimit':No such file or directory 

Try `iptables -h' or 'iptables --help' for more information. 
ctr-014# 
Questions connexes