OpenWRT: as regras iptables serão excluídas automaticamente

3

Na minha instância OpenWRT, eu adicionei regras iptables na tabela de filtros de entrada, mas o problema é quando eu ligo o meu sistema, descobri que as regras são apagadas. O que posso fazer para que as regras não sejam excluídas automaticamente?

    
por kaio 05.06.2015 / 23:55

2 respostas

4

OpenWRT

Existem algumas maneiras de editar o iptables no OpenWRT.

Uso direto de iptables

O OpenWRT executará o conteúdo de /etc/firewall.user na inicialização. É um script de shell, então será algo como isto:

root@OpenWrt:/etc# cat firewall.user 
# This file is interpreted as shell script.
# Put your custom iptables rules here, they will
# be executed with each firewall (re-)start.

iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 22 -j DNAT --to 10.1.1.1:2222
iptables -A FORWARD -p tcp -d 10.1.1.1 --dport 2222 -j ACCEPT

Testando /etc/firewall.user

Depois de editar o arquivo /etc/firewall.user , você provavelmente desejará testá-lo. Isso ocorre porque você pode ver erros se você executar o script na inicialização. Para testar o script:

  • Primeiro, remova as regras afetadas pelo script. Um iptables -F funcionará, mas poderá remover regras que você não precisa testar.
  • Em seguida, execute bash /etc/firewall.user . Você quer ver se há algum erro no script. Se você receber alguma mensagem de volta, provavelmente terá um erro de digitação.
  • Em seguida, execute iptables -L e verifique se as regras que você deseja adicionar foram adicionadas corretamente.
  • Finalmente, reinicie o dispositivo. Neste ponto, você deve esperar que as regras sejam adicionadas exatamente como eram da última vez.

iptables-save e iptables-restore

OpenWRT (junto com outras distros), tem um comando iptables-save . Ao executar iptables-save > myrules , você terá um arquivo que contém tudo o que é necessário para restaurar suas regras do iptables.

iptables-restore < myrules lerá um arquivo de regras do iptables e as aplicará.

Portanto, você precisaria criar um arquivo myrules e, em seguida, executar iptables-restore < myrules na inicialização. Você pode executar a inicialização editando o arquivo /etc/rc.local .

Mais informações sobre iptables-save e iptables-restore podem ser encontradas aqui .

Use a sintaxe de configuração de firewall do OpenWRTs

O arquivo /etc/config/firewall também pode ser editado. O Firewall "fornece uma interface de configuração que faz abstração do sistema iptables para fornecer um modelo de configuração simplificado que é adequado para a maioria das finalidades regulares, enquanto permite que o usuário forneça regras de iptables necessárias quando necessário."

Mais informações podem ser encontradas aqui

Outras Distros

Debian ou Ubuntu

Se você está rodando Debian ou Ubuntu, você pode tentar o pacote iptables-persistent .

sudo apt-get install iptables-persistent

O acima irá instalar o serviço. Em seguida, salvará suas regras para /etc/iptables/rules.v4 e /etc/iptables/rules.v6 .

Você pode obter mais informações sobre o Ubuntu 12.04 aqui , Ubuntu 14.04 aqui .

CentOS

Se você estiver executando o CentOS, poderá salvar as regras executando:

/sbin/service iptables save 

que salvará o conteúdo do iptables em /etc/sysconfig/iptables . O conteúdo anterior de /etc/sysconfig/iptables será salvo em /etc/sysconfig/iptables.save .

Você pode obter mais informações aqui .

    
por 06.06.2015 / 00:04
0

Você pode escrever um script de shell contendo todos os seus comandos do iptables, depois adicionar uma linha ao /etc/rc.local para executar o script de shell automaticamente quando o sistema for inicializado. Veja link para um bom tutorial sobre como fazer isso .

    
por 06.06.2015 / 00:16