Debian «ignore» /etc/network/if-pre-up.d/iptables

12

Je veux que mes règles iptables soient automatiquement chargées au démarrage. Selon le wiki sur Debian, cela peut être fait en plaçant un script avec le nom iptables dans /etc/network/if-pre-up.d/ Donc je l'ai fait, voici à quoi cela ressemble:

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

Ce script fonctionne: si je l'exécute en tant que root, mes règles de pare-feu sont appliquées. Mais au redémarrage, il n'y a pas de règles de pare-feu. Qu'est-ce que je fais mal?

Sur demande: les / etc / network / interfaces (je n'ai pas touché ce fichier)

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
la source
Comment configurez-vous vos interfaces? Pouvez-vous ajouter le fichier / etc / network / interfaces?
bayindirh
Veuillez noter que /etc/network/if-pre-up.d/cela ne fonctionne plus dans Ubuntu 18.04, voir serverfault.com/questions/914493/…
BurninLeo

Réponses:

6

Utilisez le iptables-persistentpackage pour cette tâche.

Définissez vos règles dans /etc/iptables/rules.4et /etc/iptables/rules.6n'oubliez pas d'activer le service (en utilisant update-rc.d, chkconfigou votre outil préféré.

dawud
la source
Lors de l'installation du paquet, debconf vous demande si vous souhaitez enregistrer les règles actuelles. Donc, si vous avez déjà défini les règles, vous pouvez simplement installer le package. Si vous voulez les changer plus tard, tout simplement dpkg-reconfigure iptables-persistent.
Braiam
10

Ce problème peut être lié aux bits d'autorisation de votre script. Quelle est la sortie de cette commande? Comprend-il votre dossier?

run-parts --test /etc/network/if-pre-up.d
eppesuig
la source
run-parts --test /etc/network/if-pre-up.d donne /etc/network/if-pre-up.d/iptables, ce qui me semble la sortie correcte?
Cheiron
1
ok, vous devriez donc probablement vérifier quand votre script est exécuté. Ajoutez une première ligne comme celle-ci (date; set; echo) >> /tmp/iptables-cmd.log, ainsi vous verrez quand elle sera appelée. J'imprime toujours aussi l'environnement afin de vérifier tout argument passé là-bas. Vous pouvez décider d'exécuter vos iptables uniquement après la dernière interface eth *, au lieu de l'exécuter chaque fois qu'une interface est ajoutée.
eppesuig
3
Maintenant que vous avez posté votre interfacesje vois que vous n'utilisez pas ifupdown, mais network-manager. C'est pourquoi votre script n'est pas appelé. Veuillez consulter ce document: ubuntuforums.org/showthread.php?t=1084308
eppesuig
Eh bien, cela explique beaucoup de choses. Je pense que maintenant je vais juste avec la réponse de dawud, qui semble fonctionner de toute façon.
Cheiron
3
run-parts est un peu pointilleux sur le nom des scripts et avoir un point dans le nom de fichier faisait que le script était ignoré au démarrage dans mon cas.
alexm
0

Pourquoi ne pas le faire facilement?

1 - Créez vos règles iptables

2 - exécutez "sudo apt-get install iptables-persistent", il vous demandera si vous souhaitez enregistrer les règles et les restaurer après le démarrage.

3- Vous avez terminé

alex
la source
1
Duplicata de la réponse acceptée
Cheiron