Есть ли удобный способ показать список модулей загруженных iptables? Я могу показать установленные модули, указав каталог/lib/iptables/(или/lib64/iptables/), но мне нужен активный список модулей.
Список загруженных модулей iptables
Ответ 1
Загруженные модули iptables можно найти в записи файловой системы proc /proc/net/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 монтируются по умолчанию)
Ответ 2
Это действительно старый пост, но здесь мы идем:
# lsmod | grep ip
показывает список загруженных модулей, которые, как я думаю, больше всего связаны с iptables...
/proc/net/ip_tables_matches
не отображает модули (по крайней мере, не в RHEL 6)
Ответ 3
Взгляните в следующий каталог (замените на версию вашего ядра):
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"
Это плохо документировано.
Ответ 4
Попробуйте это для быстрого обзора модулей 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#
Ответ 5
Поскольку Gonio предложила lsmod перечислить все загруженные модули ядра, но grepping "ip" не даст вам всех модулей iptables.
Я предпочел бы использовать
lsmod|grep -E "nf_|xt_|ip"
и все же, я не уверен, что список будет полным.
Ответ 6
В качестве альтернативного метода это также можно сделать с помощью скрипта Python.
Сначала убедитесь, что у вас есть библиотека iptc. sudo pip install --upgrade python-iptables
(Предполагается, что Python3 - ваша версия)
import iptc
table = iptc.Table(iptc.Table.FILTER)
for chain in table.chains:
print("------------------------------------------")
print("Chain ", chain.name)
for rule in chain.rules:
print("Rule ", "proto", rule.protocol, "src:", rule.src, "dst:" , rule.dst, "in:", rule.in_interface, "out:", rule.out_interface)
print("Matches:")
for match in rule.matches:
print(match.name)
print("Target:")
print(rule.target.name)
print("------------------------------------------")