BIND non si avvia in automatico su pfSense
Recentemente ho riscontrato alcuni problemi con l’avvio automatico di BIND su pfSense.
Quello che succedeva era che il servizio BIND (server DNS) non si avvia in automatico con il sistema causando quindi un problema ai nodi della rete che utilizzano questo servizio.
In questo articolo vi mostro come ho rimediato al problema.
Per risolvere questo problema ci sono due soluzioni:
- Modifica file rndc
- Utilizzare il servizio Watchdog [deprecato]
- Utilizzare il servizio Shellcmd [deprecato]
Modifica file rndc
Uno dei motivi di lentezza relativo all’avvio di bind è il servizio rndc.
Un utile workaround è creare uno script bash da sostituire al file /usr/local/sbin/rndc che esca immediatamente in caso il servizio bind non sia in esecuzione. Ciò è dovuto al fatto che se bind è il dns con cui pfSense risolve gli indirizzi ci saranno timeout importanti nel risolvere hostname da parte di rndc. In questo modo, se bind non è attivo non verranno effettuate chiamate e quindi attese e bind si avvierà immediatamente.
Per fare ciò è necessario rinominare il file /usr/local/sbin/rndc in /usr/local/sbin/rndc.orig
# mv /usr/local/sbin/rndc /usr/local/sbin/rndc.orig
A questo punto dobbiamo creare uno script /usr/local/sbin/rndc che richiami /usr/local/sbin/rndc.orig se bind è in esecuzione. Il contenuto di tale script sarà il seguente:
#!/bin/sh
if [ -n "`/bin/ps auxw | /usr/bin/grep "[n]amed " | /usr/bin/awk '{print $2}'`" ]; then
/usr/local/sbin/rndc.orig "$@"
fi
Diamo i permessi di esecuzione:
# chmod +x /usr/local/sbin/rndc
Riavviamo il sistema e non avremo più ritardi con bind.
Avvertenza: in caso di aggiornamento del sistema tale file potrebbe essere sovrascritto. In tal caso ripetere l’operazione.
Servizio Watchdog
Questo servizio è un tool aggiuntivo da scaricare ed installare. Consente di monitorare periodicamente i servizi nel sistema e riattivarli in caso essi siano spenti con la possibilità inoltre di inviare una notifica all’occorrenza.
Per installarlo occorre:
- Entrare nella dashboard di pfSense
- Selezionare il menu System->Package Manager
- Selezionare il tab Available Packages
- Trovare nell’elenco Service_Watchdog nella categoria sysutils
- Installarlo cliccando sul pulsante verde Install
Terminata l’installazione sarà disponibile una nuova voce nel menu Services con il nome di Watchdog. Cliccate li per configurarla:
- Cliccare sul pulsante verde Add New Service
- Selezionare named: Domain Name Service
- Cliccare sul pulsante blu Add
Vi dovrebbe comparire una finestra come quella riportata qui sotto:
Spuntando il flag in corrispondenza della colonna Notify verrete avvisati tramite il sistema di notifica di pfSense di eventuali riavvi del servizio.
Il risultato è che al riavvio di pfSense dopo alcuni secondi il servizio bind partirà da solo.
Servizio Shellcmd
Shellcmd è un tool che consente di eseguire dei comandi in diverse situazioni:
- shellcmd: Esegue un comando al termine del processo di boot di pfSense
- earlyshellcmd: Esegue un comando all’inizio del processo di boot di pfSense
- afterfilterchangeshellcmd: Esegue un comando ogni volta che viene invocata la funzione filter_configure()
- disabled: Il comando configurato non viene eseguito
Per installarlo occorre:
- Entrare nella dashboard di pfSense
- Selezionare il menu System->Package Manager
- Selezionare il tab Available Packages
- Trovare nell’elenco Shellcmd nella categoria sysutils
- Installarlo cliccando sul pulsante verde Install
Terminata l’installazione sarà disponibile una nuova voce nel menu Services con il nome di Shellcmd. Cliccate li per configurarla:
- Cliccare sul pulsante verde Add
- Nella voce Command inserite: “/usr/local/sbin/named -c /etc/namedb/named.conf -u bind -t /cf/named/“
- Nella voce Shellcmd Type selezionate: shellcmd
- Inserite una descrizione a vostra scelta (Es: Restart BIND)
- Cliccare sul pulsante blu Save
Vi dovrebbe comparire una finestra come quella riportata qui sotto:
In questo modo al riavvio di pfSense, terminata la fase di boot, il servizio BIND viene riavviato.
Alla prossima!
Share this content: