Pourquoi les règles iptables disparaissent-elles lors du redémarrage de mon système Debian?

48

J'ajoute cette règle:

sudo iptables -t nat -A OUTPUT -d a.b.c.d -p tcp \
       --dport 1723 -j DNAT --to-destination a.b.c.d:10000
  1. Au redémarrage, les règles de l'ordinateur sont supprimées. Pourquoi?
  2. Que puis-je faire pour que les règles persistent?
Jhonathan
la source

Réponses:

45

Iptables ne contient aucune option qui rendra vos règles permanentes. Mais vous pouvez utiliser iptables-saveet iptables-restoreremplir votre tâche.

Ajoutez d’abord la règle iptable en utilisant la commande que vous avez donnée.

Puis enregistrez les règles iptables dans un fichier en /etc/iptables.confutilisant la commande suivante:

$  iptables-save > /etc/iptables.conf

Ajoutez la commande suivante /etc/rc.localpour recharger les règles à chaque redémarrage.

$  iptables-restore < /etc/iptables.conf
pradeepchhetri
la source
15
Sur Debian, il y a le iptables-persistentpaquet qui le fera.
bahamat
7
C'est plutôt une mauvaise idée de l'insérer, rc.localcar il y aurait un fossé entre les débuts des services et l'application de la politique de pare-feu. Je préfère utiliser le pre-up crochet pour l' interface de réalimentation en /etc/network/interfacessurmonter cela.
Poige
@poige: Je suis d'accord à 100%, rc.localpeut avoir l'effet escompté , mais c'est un kludge dans cette situation.
JM Becker
3
@bahamat: L'installation de ce paquet est la meilleure solution, elle mérite sa propre réponse.
JM Becker
1
@ TechZilla: Fait.
bahamat
53

(Parce qu'il a été suggéré d'en faire une réponse à part entière ...)

Sur l'installation de Debian iptables-persistent.

Le paquet se chargera automatiquement /etc/iptables/rulespour vous lors du démarrage.

Chaque fois que vous modifiez vos règles, exécutez-les /sbin/iptables-save > /etc/iptables/rulespour les sauvegarder. Vous pouvez également ajouter cela à la séquence d'arrêt si vous le souhaitez.

bahamat
la source
12
Il existe deux fichiers de règles différents: /etc/iptables/rules.v4et /etc/iptables/rules.v6pour IPv4 et IPv6 respectivement. Si vous souhaitez qu'une table s'applique aux deux types de connexions, vous devez l'enregistrer dans les deux fichiers de règles.
PetaspeedBeaver
11
Ne l'ajoutez pas à votre séquence d'arrêt! Si vous gâchez vos règles lors de modifications / configuration, au moins un bon vieux redémarrage ramènera les choses à leur état de fonctionnement précédent.
VertigoRay
1

Après l’installation iptables-persistentci-dessus, vous pouvez également enregistrer des règles avec la commande plus courte suivante sur Ubuntu 16.04+: sudo netfilter-persistent save

Et ils peuvent également être restaurés à leur état d'origine la dernière fois que vous les avez enregistrés avec: sudo netfilter-persistent reload

Robin Wilson
la source