Estes dias, precisei instalar um firewall novo, baixei o Fedora 17 e fiz o de sempre, instalei o b?sico e fui colocando apenas os servi?os necess?rios para a tarefa.
Logo percebi que o ntsysv n?o conseguia executar meu script no boot e nem o /etc/rc.local, existia mais...
A solu??o foi estudar um pouco o systemd, ent?o, descobri o seguinte:
Meu arquivo com as regras de IPtables para ser iniciado no boot, fica em /etc/ini.d/firewall, e antigamente, iniciava ele colocando no /etc/rc.local a linha: . /etc/init.d/firewall start
No systemd, os arquivos de controle ficam em /etc/systemd/system, logo criei um arquivo:
# vi /etc/systemd/system/firewall.service
Com o seguinte conte?do:
[Unit]Description=Firewall
[Service]
Type=forking
ExecStart=/etc/init.d/firewall start
ExecStop=/etc/init.d/firewall start
[Install]
WantedBy=multi-user.target
Dei um:
# shutdown -r now
E funcionou... Melhor, ?s vezes funcionava e ?s vezes n?o...
Um dos objetivos do systemd ? fazer o sistema inciar mais r?pido, para isso, os diversos processos do S.O. n?o s?o iniciados um a um, mas em paralelo.
Em meu script, existe uma linha verificando se a placa de rede est? ativa, se n?o estiver, ele aborta o processo, o que ?s vezes acontecia se houvesse qualquer atraso no DHCP.
A solu??o mais pr?tica que encontrei, foi criar um atraso no script do firewall acrescentando a linha sleep 20, isto ?, ele inicia a execu??o, mas p?ra nessa linha por 20 segundos, tempo suficiente para que o systemd levante as placas de rede.
Acredito que tenha outras solu??es para o problema, mas de momento, ? o que est? funcionando...
Quem quiser saber mais sobre o sysmted:
Nenhum comentário:
Postar um comentário