Como posso consertar a mensagem de erro iptables “incapaz de inicializar tabela 'filter'”?

6

Quando tento usar o comando iptables em um dos servidores de nuvem Rackspace, estou recebendo o seguinte erro.

Em uma tentativa de aplicar regras de iptables com iptables-apply -t 120 /etc/iptables.rules e iptables-restore < /etc/iptables.rules , recebi o próximo erro:

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.

Como corrijo isso?

EDIT 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

EDIT 2 :

pesquisa do apt-cache 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
    
por user3215 26.02.2011 / 18:42

7 respostas

5

Você precisa carregar um módulo do kernel para ativar a tabela de filtros. Execute o próximo comando como root:

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

( uname -r fornece a versão atual do kernel)

Para uma lista de módulos disponíveis para o iptables, liste o diretório que contém os módulos iptables:

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

Para obter informações sobre todos os módulos:

modinfo /lib/modules/$(uname -r)/kernel/net/ipv4/netfilter/*.ko
    
por Lekensteyn 26.02.2011 / 19:01
1

É possível que o kernel do linux que você está usando não tenha sido construído com suporte a módulos carregáveis. Uma boa maneira de descobrir se seu kernel tem suporte a módulo é verificar a existência do arquivo /proc/modules . Se estiver lá, mas você não tiver um arquivo /lib/modules/$(uname -r)/modules.dep , significa que seu kernel tem suporte para módulos, mas que eles não foram instalados corretamente. Parece que o seu kernel foi construído pelo seu provedor Rackspace, você deve perguntar sobre a configuração do kernel.

    
por Pierre 03.03.2011 / 15:08
1

Outra maneira de obter suporte adequado ao iptables é instalar o xtables-addons, você precisa ter muitas ferramentas para fazer isso funcionar (module-assistant, build-essential etc.), mas a vantagem é que no você tem ipset e iptables e (IMHO) usando ipset também é muito melhor para grandes conjuntos de regras complexas

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
    
por Francis Turner 12.07.2011 / 08:15
1

Eu também uso o Rackspace Cloud, com o kernel 2.6.35.4-rscloud. Eu tenho várias instâncias com este kernel e iptables funciona bem em alguns e eu tenho o mesmo problema que você em alguns outros.

Portanto, acredito que este kernel tem o suporte necessário para o iptables, e o problema é causado por outra coisa (eu mesmo estou procurando a solução)

EDIT: Eu resolvi meu problema por scp -r copiando o /lib/modules/2.6.35.4-rscloud do servidor iptables de trabalho para o não-funcional.

Por algum motivo, uname -r mostra 2.6.35.4-rscloud e ls /lib/modules/ apenas continha a versão anterior como /lib/modules/2.6.31-302-rs .

Não sei por que isso pode ficar fora de sincronia ou o que fazer se você não tiver um servidor em funcionamento para copiar esses arquivos, mas espero que isso o direcione na direção certa.

Eu não precisei recompilar um kernel ou algo assim.

    
por codercake 12.07.2011 / 01:35
1

Eu tive o mesmo erro, mas encontrei um comentário perdido em um artigo não relacionado ( link ) que identificou o erro molecular bobo que estava em falta no meu caso. O problema é que eu criei o arquivo iptables.rules usando um editor de texto (Notepad ++), mas como o tipo de arquivo não era reconhecido, o Notepad ++ padronizou o uso do Windows Fim de linha e Caracteres de fim de arquivo . iptables rejeita esses caracteres, exigindo seus equivalentes Unix, e estava lançando um erro na primeira ocorrência: o final da linha *filter - dando a falsa impressão de que havia algo errado com a sintaxe *filter . Ah, as alegrias sempre presentes de erros relacionados à codificação de caracteres!

Duas soluções

  • O comentarista que mencionei acima instalou ( sudo aptitude install tofrodos ) e executou ( fromdos /etc/iptables.rules ) um pequeno utilitário de conversão no arquivo.

--- OR ---

  • O que eu fiz foi, no Notepad ++, Edit > EOL Conversion > UNIX Format e, em seguida, Save e reenvie o arquivo. Isso cuidou dos caracteres End-of-Line , mas não do caracter End-of-File (apesar do que se poderia esperar). Então, quando eu fiz o upload para o servidor, abri em nano e criei uma nova linha no final do arquivo e salvei. Então tudo funcionou perfeitamente.

Também pode ser possível que apenas abrir o arquivo em nano e salvar novamente, sem alterar os caracteres manualmente, funcione, mas eu não testei.

    
por David Michael Gregg 28.02.2012 / 03:33
1

Você também pode obter erros com iptables se tiver instalado uma nova versão do Kernel, mas ainda não tiver reiniciado (bastante comum se você estiver construindo um novo servidor usando, por exemplo, um playbook Ansible e um tarefa anterior é um upgrade do apt-get )

Consulte o link re: "Símbolo desconhecido no módulo ou parâmetro desconhecido "erro.

    
por William Turrell 03.05.2018 / 00:11
0

acontece que foi apenas um sudo !

sudo iptables-restore < /etc/iptables.rules

em vez de

iptables-restore < /etc/iptables.rules

    
por Anona112 08.03.2018 / 10:25