Как исправить сообщение об ошибке iptables & ldquo; невозможно инициализировать таблицу 'filter'?

Когда я пытаюсь использовать команду iptables на одном из моих облачных серверов Rackspace, я получаю следующую ошибку.

В попытке применить правила iptables с iptables-apply -t 120 /etc/iptables.rules и iptables-restore < /etc/iptables.rules я получил следующую ошибку:

FATAL: Could not load /lib/modules/2.6.32.4-rscloud/modules.dep: No such file or directory
iptables-restore v1.4.4: iptables-restore: unable to initialize table 'filter'

Error occurred at line: 2
Try `iptables-restore -h' or 'iptables-restore --help' for more information.

Как это исправить?

РЕДАКТИРОВАТЬ 1 :

uname -r :

2.6.32.4-rscloud

modprobe / lib / modules / $ (uname -r) / kernel / net / ipv4 /netfilter/iptable_filter.ko:

FATAL: Could not load /lib/modules/2.6.32.4-rscloud/modules.dep: No such file or directory

ls / lib / modules / $ (uname -r) / kernel / net / ipv4 / netfilter /
:

ls: cannot access /lib/modules/2.6.32.4-rscloud/kernel/net/ipv4/netfilter/: No such file or directory

РЕДАКТИРОВАТЬ 2 :

apt-cache search linux-image-
*:

alsa-base - ALSA driver configuration files
linux-image-2.6.31-14-generic - Linux kernel image for version 2.6.31 on x86/x86_64
linux-image-2.6.31-14-server - Linux kernel image for version 2.6.31 on x86_64
linux-image-2.6.31-14-virtual - Linux kernel image for version 2.6.31 on x86/x86_64
linux-image-2.6.31-302-ec2 - Linux kernel image for version 2.6.31 on x86/x86_64
linux-image-2.6.31-9-rt - Linux kernel image for version 2.6.31 on Ingo Molnar's full real time preemption patch
linux-image-rt - Rt Linux kernel image
rt2400-source - source for rt2400 wireless network driver
rt2500-source - source for rt2500 wireless network driver
rt2570-source - source for rt2570 wireless network driver
linux-image - Generic Linux kernel image.
linux-image-2.6.31-15-generic - Linux kernel image for version 2.6.31 on x86/x86_64
linux-image-2.6.31-15-server - Linux kernel image for version 2.6.31 on x86_64
linux-image-2.6.31-15-virtual - Linux kernel image for version 2.6.31 on x86/x86_64
linux-image-2.6.31-16-generic - Linux kernel image for version 2.6.31 on x86/x86_64
linux-image-2.6.31-16-server - Linux kernel image for version 2.6.31 on x86_64
linux-image-2.6.31-16-virtual - Linux kernel image for version 2.6.31 on x86/x86_64
linux-image-2.6.31-17-generic - Linux kernel image for version 2.6.31 on x86/x86_64
linux-image-2.6.31-17-server - Linux kernel image for version 2.6.31 on x86_64
linux-image-2.6.31-17-virtual - Linux kernel image for version 2.6.31 on x86/x86_64
linux-image-2.6.31-19-generic - Linux kernel image for version 2.6.31 on x86/x86_64
linux-image-2.6.31-19-server - Linux kernel image for version 2.6.31 on x86_64
linux-image-2.6.31-19-virtual - Linux kernel image for version 2.6.31 on x86/x86_64
linux-image-2.6.31-20-generic - Linux kernel image for version 2.6.31 on x86/x86_64
linux-image-2.6.31-20-server - Linux kernel image for version 2.6.31 on x86_64
linux-image-2.6.31-20-virtual - Linux kernel image for version 2.6.31 on x86/x86_64
linux-image-2.6.31-21-generic - Linux kernel image for version 2.6.31 on x86/x86_64
linux-image-2.6.31-21-server - Linux kernel image for version 2.6.31 on x86_64
linux-image-2.6.31-21-virtual - Linux kernel image for version 2.6.31 on x86/x86_64
linux-image-2.6.31-304-ec2 - Linux kernel image for version 2.6.31 on x86/x86_64
linux-image-2.6.31-305-ec2 - Linux kernel image for version 2.6.31 on x86/x86_64
linux-image-2.6.31-306-ec2 - Linux kernel image for version 2.6.31 on x86/x86_64
linux-image-ec2 - Linux kernel image for ec2 machines
linux-image-generic - Generic Linux kernel image
linux-image-server - Linux kernel image on Server Equipment.
linux-image-virtual - Linux kernel image for virtual machines
linux-image-2.6.31-22-generic - Linux kernel image for version 2.6.31 on x86/x86_64
linux-image-2.6.31-22-server - Linux kernel image for version 2.6.31 on x86_64
linux-image-2.6.31-22-virtual - Linux kernel image for version 2.6.31 on x86/x86_64
linux-image-2.6.31-307-ec2 - Linux kernel image for version 2.6.31 on x86/x86_64
6
задан 18 September 2012 в 11:16

8 ответов

Я также использую Rackspace Cloud с ядром 2.6.35.4-rscloud. У меня есть несколько экземпляров с этим ядром, и iptables отлично работает на некоторых, и у меня та же проблема, что и у вас на паре других.

Поэтому я считаю, что это ядро ​​имеет необходимую поддержку для iptables, и проблема вызвана чем-то другим (я все еще ищу решение самостоятельно)

РЕДАКТИРОВАТЬ: я решил свою проблему с помощью [ 110] копирование /lib/modules/2.6.35.4-rscloud с рабочего iptables сервера на нерабочий.

По какой-то причине uname -r показывает 2.6.35.4-rscloud и ls /lib/modules/ содержит только предыдущую версию, как /lib/modules/2.6.31-302-rs.

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

Мне не нужно было перекомпилировать ядро ​​или что-то в этом роде.

0
ответ дан 18 September 2012 в 11:16

Возможно, что используемое вами ядро ​​Linux не было создано с поддержкой загружаемых модулей. Хороший способ выяснить, поддерживает ли ваше ядро ​​модуль, - проверить наличие файла /proc/modules. Если он есть, но у вас нет файла /lib/modules/$(uname -r)/modules.dep, это означает, что ваше ядро ​​поддерживает модули, но они не были правильно установлены. Похоже, ваше ядро ​​было собрано вашим провайдером Rackspace, вам следует спросить их о конфигурации ядра.

0
ответ дан 18 September 2012 в 11:16

Вам необходимо загрузить модуль ядра для включения таблицы фильтров. Запустите следующую команду от имени пользователя root:

modprobe /lib/modules/$(uname -r)/kernel/net/ipv4/netfilter/iptable_filter.ko

(uname -r указывает текущую версию ядра)


Для получения списка доступных модулей для iptables, укажите каталог, содержащий модули iptables. :

ls /lib/modules/$(uname -r)/kernel/net/ipv4/netfilter/

Чтобы получить информацию обо всех модулях:

modinfo /lib/modules/$(uname -r)/kernel/net/ipv4/netfilter/*.ko
0
ответ дан 18 September 2012 в 11:16

оказывается, что это был просто пропавший sudo !

sudo iptables-restore < /etc/iptables.rules

вместо

iptables-restore < /etc/iptables.rules

0
ответ дан 18 September 2012 в 11:16

Еще один способ получить надлежащую поддержку iptables - установить xtables-addons, хотя для его работы необходимо иметь довольно много инструментов (module-assistant, build-essential и т. Д.), Но преимущество заключается в В конце концов, у вас есть ipset, а также iptables и (IMHO) использование ipset также намного лучше для больших сложных наборов правил

apt-get install xtables-addons-common

apt-get install xtables-addons-source

m-a prepare

m-a build xtables-addons

m-a install xtables-addons
0
ответ дан 18 September 2012 в 11:16

У меня была та же ошибка, но я нашел случайный комментарий в несвязанной статье ( http://articles.slicehost.com/2007/11/6/ubuntu-gutsy-setup-page-1 ]) которая определила глупую молекулярную ошибку, которая была виновата в моем случае. Проблема заключалась в том, что я создал файл iptables.rules с помощью текстового редактора (Notepad ++), но поскольку тип файла не был распознан, Notepad ++ по умолчанию использовал Windows End-of-Line и Конец файла символов. iptables отклоняет эти символы, требуя их эквивалентов Unix, и, таким образом, выдает ошибку при первом появлении: конце строки *filter, создавая ложное впечатление, что с синтаксисом *filter что-то не так. Ах, вездесущие радости ошибок, связанных с кодировкой символов!

Два решения

  • Установленный выше комментатор (sudo aptitude install tofrodos) и запустил (fromdos /etc/iptables.rules) небольшую утилиту преобразования файла.

--- ИЛИ [

  • То, что я сделал, было в Блокноте ++, Edit> EOL Conversion> UNIX Format, а затем Save и повторно загрузить файл. Это позаботилось о символах конца строки , но не о символе конца файла (несмотря на то, что можно ожидать). Поэтому, как только я загрузил его на сервер, я открыл его в nano, создал новую строку в конце файла и сохранил. Тогда все работало отлично.

Также может быть также возможно, что простое открытие файла в nano и повторное сохранение без фактического изменения символов вручную, но я не проверял.

]
0
ответ дан 18 September 2012 в 11:16

Можно ли также получить ошибки с iptables, если Вы установили новую версию Ядра, но Вы еще не перезагрузили (довольно распространенный, если Вы создаете новое использование сервера, например, сборник пьес Ansible, и более ранняя задача склонна - добираются, обновление )

См. https://bugs.debian.org/cgi-bin/bugreport.cgi? ре bug=829269#41 : "Неизвестный символ в модуле или неизвестный параметр" ошибка.

0
ответ дан 18 September 2012 в 11:16

Ответ Лекенштейна почти, но не совсем правильный. Ошибка заключается в том, что команда modprobe принимает в качестве аргумента имя модуля ( iptables_filter или iptables-filter ; modprobe автоматически преобразует дефисы в символы подчеркивания, если соответствующий модуль с таким именем файла найден в его путях поиска), а не путь к файлу объекта ядра ( .ko ), как написано в этом ответе.

У меня была проблема, очень похожая на эту проблему, в системе, где таблицы IPv4 NetFilter были загружены, а таблицы IPv6 нет. Это привело к тому, что iptables-restore успешно загрузил мои правила брандмауэра, но ip6tables-restore выдал ошибку «не удалось инициализировать таблицу 'фильтр'». Решением было просто запустить следующую команду modprobe от имени пользователя root или с помощью sudo перед восстановлением набора правил брандмауэра iptables:

modprobe ip6table_filter

Я испытал это на Виртуальная среда Travis CI в одном из моих конвейеров CI / CD. Надеюсь, это поможет кому-то в подобной ситуации.

0
ответ дан 13 December 2019 в 21:06

Другие вопросы по тегам:

Похожие вопросы: