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

12

Quiero que mis reglas de iptables se carguen automáticamente al inicio. De acuerdo con la wiki en Debian, esto se puede hacer colocando un script con el nombre iptables en /etc/network/if-pre-up.d/ Así lo hice, así es como se ve:

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

Este script funciona: si lo ejecuto como root, se aplican las reglas de mi firewall. Pero al reiniciar no hay reglas de firewall. ¿Qué estoy haciendo mal?

A petición: el / etc / network / interfaces (no toqué este archivo)

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
Cheiron
fuente
¿Cómo configuras tus interfaces? ¿Se puede agregar el archivo / etc / network / interfaces?
bayindirh
Tenga en cuenta que /etc/network/if-pre-up.d/ya no funciona en Ubuntu 18.04, consulte serverfault.com/questions/914493/…
BurninLeo

Respuestas:

6

Use el iptables-persistentpaquete para esta tarea.

Defina sus reglas /etc/iptables/rules.4y /etc/iptables/rules.6no olvide activar el servicio (usando update-rc.d, chkconfigo su herramienta favorita).

Dawud
fuente
En la instalación del paquete, debconf le pregunta si desea guardar las reglas actuales. Entonces, si ya tiene las reglas definidas, simplemente puede instalar el paquete. Si quieres cambiarlos más tarde, solo dpkg-reconfigure iptables-persistent.
Braiam
10

Este problema puede estar relacionado con los bits de permiso de su script. ¿Cuál es el resultado de este comando? ¿Incluye tu archivo?

run-parts --test /etc/network/if-pre-up.d
eppesuig
fuente
run-parts --test /etc/network/if-pre-up.d da /etc/network/if-pre-up.d/iptables, ¿cuál me parece el resultado correcto?
Cheiron
1
ok, entonces, probablemente deberías comprobar cuándo se ejecuta tu script. Agregue una primera línea como esta (date; set; echo) >> /tmp/iptables-cmd.log, para ver cuándo se llama. Siempre imprimo el entorno para comprobar si hay algún argumento pasado allí. Puede decidir ejecutar sus iptables solo después de que la última interfaz eth * esté activa, en lugar de ejecutarla cada vez que se agrega una interfaz.
eppesuig
3
Ahora que publicaste tu interfaces, veo que no estás usando ifupdown, sino administrador de red. Es por eso que no se llama a su script. Consulte este documento: ubuntuforums.org/showthread.php?t=1084308
eppesuig
Bueno, eso explica mucho. Creo que ahora solo voy con la respuesta de Dawud, que parece funcionar de cualquier manera.
Cheiron
3
run-parts es un poco exigente con el nombre de los scripts y tener un punto en el nombre del archivo estaba haciendo que el script se ignorara al inicio en mi caso.
alexm
0

¿Por qué no hacerlo de la manera fácil?

1 - crea tus reglas de iptables

2 - ejecute "sudo apt-get install iptables-persistent", le preguntará si desea guardar las reglas y restaurarlas después del arranque.

3- Estás HECHO

alex
fuente
1
Duplicado de respuesta aceptada
Cheiron