openSUSE - Carregando Script do IPtables no Boot

Publicado por Marcelo Elias dos Santos em 03/04/2012

[ Hits: 11.371 ]

 


openSUSE - Carregando Script do IPtables no Boot



Olá pessoal,

Esta é a minha primeira dica para o VOL.

Sou usuário do openSUSE e Professor de Redes.

E ao ministrar aulas de IPtables, deparei com um problema: Como reiniciar um servidor openSUSE sem o IPtables perder as configurações?

Obviamente, pesquisei muito na Internet e encontrei várias dicas, mas nenhuma funcionava.

Então resolvi o problema da seguinte forma:

1º - Loguei no Servidor como root, ou seja, tudo o que foi feito abaixo, foi com privilégios de root.

2º - Salvei as configurações do IPtables em um arquivo chamado: /root/firewall.conf

3º - Criei o Script abaixo e salvei em “/etc/init.d/iptables-init.sh” e dentro dele, coloquei as duas linhas abaixo, exatamente do jeito que estão:

#!/bin/bash
iptables-restore < /root/firewall.conf


4º - Dei permissão de execução para o arquivo “iptables-init.sh”:

# chmod +x /etc/init.d/iptables-init.sh

5º - Depois, coloquei para inicializar automaticamente com o comando:

# chkconfig /etc/init.d/iptables-init.sh on

Bom! Aqui no meu Servidor funcionou perfeitamente.

Não sei se esta é a melhor forma e nem se é a maneira correta.

Falo isto, porque observei uns comentários no fórum do SUSEBR, de um camarada dizendo que não devemos colocar Scripts de inicialização em qualquer pasta.


Estou aberto a críticas, sugestões e melhorias.

Um forte abraço a todos.

Outras dicas deste autor

Qual distribuição Linux o iniciante deve usar? Considerações de um ex-usuário Windows

Leitura recomendada

Script para o netfilter (iptables)

Como criar e manter um mirror do Slackware em seu próprio micro

Corrigindo bug do imsniff 0.04 com um simples script (gambiarra)

Usando find para expandir listas de arquivos em argumentos de modo seguro

Como fazer diff entre duas imagens

  

Comentários
[1] Comentário enviado por rrafael em 03/04/2012 - 14:00h

Amigo, acredito que deva colocar seu script no /usr/local/bin/firewall,e um local proprio para isso, eu nao colocaria permicao +x nunca basta colocar uma 640 que ja funciona, mas seu script esta sem cabecario com as informacoes de runlevel e outras mais.

[2] Comentário enviado por rrafael em 03/04/2012 - 14:02h

Esqueci de comentar que uma vez criado no local correto vc pode criar links simbolicos para seu script faco isso em meu servidores e nunca tive problemas.

[3] Comentário enviado por marceloelias em 03/04/2012 - 15:39h

Olá Rafael,

Entendi o que você quiz dizer. Porém o meu maior problema era corregar o script automáticamente no OpenSUSE 12.1.

Encontrei várias dicas sobre esse assunto, porém, eram distros debian. E muitos só falavam pra colocar em uma pasta, como se bastasse só isso para o script ser carregado no boot.

Mas valeu pelos comentários.

Viva o Linux!

[4] Comentário enviado por rrafael em 04/04/2012 - 09:15h

Então Marcelo,

Dessa forma que você faz funciona, mas repare que ela acusa um problema no comando chkconfig ou no dmesg, para resolver isso você coloca no começo do script segue abaixo o modelo de inicio, uma vez que você criar o link simbólico para a pasta /etc/init.d/
você da o comando ckconfig firewall on,

Faço isso desde o Opensuse 10, não tive problemas com isso ate hoje.

Abraço

#!/bin/bash
### BEGIN INIT INFO
# Provides: Rafael
# Required-Start: $al # só executa depois q todo resto tiver pronto seria o s99
# Required-Stop: # se antes dele parar tem q um otro parar
# Default-Start: 3 # em q runlevel começa
# Default-Stop: 0 1 2 6 # em qual para
# Short-Description: Start daemon at boot time
# Description: Enable service provided by daemon.
### END INIT INFO
#

Aqui voce segue com iptables.

[5] Comentário enviado por marceloelias em 05/04/2012 - 10:12h

Entendi Rafael.

No meu exemplo, O MEU FIREWALL JÁ INICIA NO BOOT. A única coisa que faltava era carregar as configurações (as regras criadas por mim). Isso é muito importante, pois esqueci de falar isso na dica.

Agora, eu ainda não entendo direito essa forma de escrita. Por exemplo: Como utilizar cada comando que você descreveu acima? Em que posição?

Você fazer poderia fazer um script de exemplo, imaginado um cenário real?

Grato.

Estou aprendendo muito com você. Gostei do que você falou nos comentários anteriores.

abraços.

[6] Comentário enviado por marceloelias em 10/04/2012 - 09:17h

Olá pessoal,

Gostaria de fazer uma retificação:

Eu observei que as vezes, quando eu coloco o script no chkconfig passando o caminho completo, ele fala que não encontrou o serviço. Ai, se isso acontecer façam o seguinte:


No passo 5:
Primeiro: cd /etc/init.d

Segundo: chkconfig iptables-init.sh on

Problema solucionado.

Um forte abraço a todos e qualquer dúvida é postar aqui.

[7] Comentário enviado por marceloelias em 16/07/2013 - 21:49h

Galera, cometi na forma de carregar o script acima no opensuse.

Na verdade devemos colocar o script no runlevel que desejamos.

Ficaria da seguinte forma:

ln -s /etc/init.d/iptables-init.sh /etc/rc.d/rc3.d/S99iptables-init.sh


Não executem os passos 4 e 5.
Perdão pelo erro.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts