Debian 'ignora' /etc/network/if-pre-up.d/iptables


12

Voglio che le mie regole iptables vengano caricate automaticamente all'avvio. Secondo il wiki su Debian questo può essere fatto posizionando uno script con il nome iptables in /etc/network/if-pre-up.d/ Quindi l'ho fatto, ecco come appare:

cat /etc/network/if-pre-up.d/iptables 
#!/bin/sh
/sbin/iptables-restore < /etc/firewall/iptables.rules
/sbin/ip6tables-restore < /etc/firewall/ip6tables.rules

Questo script funziona: se lo eseguo come root vengono applicate le mie regole del firewall. Ma al riavvio non ci sono regole del firewall. Che cosa sto facendo di sbagliato?

Su richiesta: / etc / network / interfaces (non ho toccato questo file)

user@DebianVPS:~$ cat /etc/network/interfaces 
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp

Come si configurano le interfacce? È possibile aggiungere il file / etc / network / interfaces?
bayindirh,

Nota che /etc/network/if-pre-up.d/non funziona più in Ubuntu 18.04, vedi serverfault.com/questions/914493/…
BurninLeo,

Risposte:


6

Utilizzare il iptables-persistentpacchetto per questa attività.

Definire le regole /etc/iptables/rules.4e /etc/iptables/rules.6e non dimenticate di attivare il servizio (utilizzando update-rc.d, chkconfigo strumento preferito.


All'installazione del pacchetto, debconf ti chiede se vuoi salvare le regole correnti. Quindi, se hai già definito le regole, puoi semplicemente installare il pacchetto. Se vuoi cambiarli in seguito, basta dpkg-reconfigure iptables-persistent.
Braiam,

10

Questo problema potrebbe essere correlato ai bit di autorizzazione dello script. Qual è l'output di questo comando? Include il tuo file?

run-parts --test /etc/network/if-pre-up.d

run-parts --test /etc/network/if-pre-up.d dà /etc/network/if-pre-up.d/iptables, che mi sembra l'output corretto?
Cheiron,

1
ok, quindi, probabilmente dovresti controllare quando viene eseguito lo script. Aggiungi una prima riga come questa (date; set; echo) >> /tmp/iptables-cmd.log, così vedrai quando viene chiamata. Inoltre stampo sempre l'ambiente per verificare la presenza di eventuali argomenti. Potresti decidere di eseguire iptables solo dopo che l'ultima interfaccia eth * è attiva, invece di eseguirla ogni volta che viene aggiunta un'interfaccia.
Eppesuig,

3
Ora che hai pubblicato il tuo, interfacesvedo che non stai usando ifupdown, ma gestore di rete. Questo è il motivo per cui il tuo script non viene chiamato. Si prega di controllare questo documento: ubuntuforums.org/showthread.php?t=1084308
eppesuig,

Bene, questo spiega molto. Penso che ora vado solo con la risposta di Dawud, che sembra funzionare in entrambi i modi.
Cheiron,

3
run-parts è un po 'esigente riguardo al nome degli script e avere un punto nel nome del file stava causando che lo script venisse ignorato all'avvio nel mio caso.
alex

0

Perché non farlo nel modo più semplice?

1 - crea le tue regole iptables

2 - esegui "sudo apt-get install iptables-persistent" ti chiederà se vuoi salvare le regole e ripristinarle dopo l'avvio.

3- Sei fatto


1
Duplicazione della risposta accettata
Cheiron,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.