2010-01-07 4 views
12

Есть ли удобный способ для показа загруженных iptables список модулей? Я могу показать установленные модули, указав каталог/lib/iptables/(или/lib64/iptables /), но мне нужен активный список модулей.Список загруженных модулей iptables

ответ

20

Загруженные Iptables модули могут быть найдены в /Proc/нетто/ip_tables_matches запись прок файловой системы.

cat /proc/net/ip_tables_matches 

В PHP я могу получить доступ к загруженному IPtables модули от загрузки и взрывающиеся содержимое файла:

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

Конечно, это требует Proc файловая система была установлена ​​(дистрибутивы Большинство GNU Linux установить его по умолчанию)

3

Это очень старый пост, но здесь мы идем:

# lsmod | grep ip 

показывает список загруженных модулей, которые я думаю, что большинство из них связаны с IPTables ... /proc/net/ip_tables_matches не показывает модули (по крайней мере, не в RHEL 6)

+0

Может быть, вы должны попробовать '/ Proc/нетто/ip_tables_names' вместо ... –

0

В Гонио предложил lsmod выводит список всех загруженных модулей ядра, но grepping «ip» не даст вам всех модулей iptables.

Я предпочел бы использовать

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

и до сих пор, я не уверен, что этот список будет завершен.

2

Посмотрите в следующем каталоге (замените на версии ядра):

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

Вы можете загрузить модуль, используя (сбросив .ko, как указано в каталоге):

modprobe nf_conntrack_ftp 

В качестве альтернативы вы можете убедиться, что он загружен при загрузке, добавив его к:

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

IPTABLES_MODULES="nf_conntrack_ftp" 

Это, кажется, плохо документировано.

+0

Я действительно ценю записку о том, как загрузить его на ботинке. Woauh. Провел слишком много времени, чтобы найти это. – MrJames

1

Попробуйте для быстрого обзора на NETFILTER модулей, присутствующих на вашей системе, здесь один вкладыш для вставки:

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 

Снова для удобства чтения, с добавлением новых строк:

#!/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 

Имя файла будет отображаться желтым цветом, из которого вы можете догадаться, существует ли данный модуль или нет. Описание и зависимости следующие две строки ниже.

Это не будет охватывать все (потому что это было бы слишком легко, ofc). Только просмотр модулей вручную, чтобы убедиться, что они существуют, дает вам 100% точной информации.

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

Если модуль существует в вашей системе, в конце текста справки вы получите некоторую информацию о том, как использовать его:

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# 

Этом модуль не присутствует в вашей системе:

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#