MAL - Memória Auxiliar do Lutieri

domingo, abril 13, 2008

PF com problemas no boot[atualizado]

Logo após ter instalado e configurado um firewall em BSD usando PF me deparei com um simples, comum e impactante problema. O rc no bsd é o cara que carrega e lê os scripts de inicialização do sistema. Existem um ordem para carregá-los e essa ordem normalmente tem lógica. Por exemplo, não adianta carregar um serviço como NTP antes de ter acesso a internet.

Mas é exatamente essa ordem de carregamento do serviços que estava errada para a minha necessidade. O meu firewall estava sendo carregado antes das configurações de rede. Tudo bem.. beleza. Entretanto, eu tenho algumas regras baseadas em hosts e não IP's. Exemplo:

block quick from any to chatenabled.mail.google.com


Uma vez que a rede é "levantada" depois do firewall eu pergunto: Como o pobre firewall vai conseguir traduzir chatenabled.mail.google.com em IP?! Coisas do mundo moderno DNS. :-)

Para solucionar pode-se fazer uso da POG ou:

chmod o+w /etc/rc.d/pf
vi /etc/rc.d/pf

# REQUIRE: root mountcritlocal netif pflog pfsync networking

inserir na linha acima a palavra "networking"

:x
chmod o-w /etc/rc.d/pf


Isso diz que o serviço de networking é necessário para carregar o pf. Vale pra quem tem o mesmo problema com VPN's.

Pronto!!!

Mentira. Aquilo ali em cima acho que não funcionou.. mas enfim. Peço perdão e todos vivem felizes.

Consegui solucionar esse problema alterando a ordem dos scripts na inicialização. O trecho abaixo mostra a comparação entre os arquivos originais e a modificação que é necessária fazer.

----snip------
upmefirewall# diff -ruN /etc/rc.d/ /home/lutierib/etc/rc.d/
diff -ruN /etc/rc.d/NETWORKING /home/lutierib/etc/rc.d/NETWORKING
--- /etc/rc.d/NETWORKING Fri Jan 12 04:13:15 2007
+++ /home/lutierib/etc/rc.d/NETWORKING Mon Mar 24 17:28:13 2008
@@ -7,6 +7,7 @@
# PROVIDE: NETWORKING NETWORK
# REQUIRE: netif routing network_ipv6 isdnd ppp
# REQUIRE: routed mrouted route6d mroute6d
+# BEFORE: pf

# This is a dummy dependency, for services which require networking
# to be operational before starting.
diff -ruN /etc/rc.d/pf /home/lutierib/etc/rc.d/pf
--- /etc/rc.d/pf Mon Mar 24 17:51:16 2008
+++ /home/lutierib/etc/rc.d/pf Mon Mar 24 17:27:05 2008
@@ -5,7 +5,6 @@

# PROVIDE: pf
# REQUIRE: root mountcritlocal netif pflog pfsync
-# BEFORE: routing
# KEYWORD: nojail

. /etc/rc.subr
upmefirewall#

----snip------

Resumindo a saída do diff acima:

Dois arquivos são alterados. São eles: NETWORKING e pf.
No arquivo NETWORKING adiciona-se a linha: # BEFORE: pf
E no arquivo pf remove-se a linha: # BEFORE: routing



Para verificar a ordem que os scripts serão carregados:

rcorder /etc/rc.d/* /usr/local/etc/rc.d/*

Marcadores: ,

1 Comentários:

  • Blz cara?
    Sou do sul tbm, de cachoeirinha x)
    Me add ai no msn
    jgabriel_mello@hotmail.com
    ou email jgnmello@gmail.com

    Abraço, parabéns pelo blog!

    By Anonymous Anônimo, at 19/04/2008, 02:49  

Postar um comentário

<< Home



Chat with Lutieri G. B.

Subscribe in a reader