18. Annexe A. Explication détaillée des commandes spéciales▲
18-1. A.1. Afficher votre table de règles▲
Pour afficher votre table de règles, vous devez passer une option spéciale à la commande iptables, dont nous avons brièvement parlé dans le chapitre Création d'une règleCréation d'une règle. Ceci pourrait ressembler à ça :
iptables -L
Cette commande affichera votre table de règles active, et la traduira dans une forme lisible. Par exemple, elle traduira tous les différents ports selon le fichier /etc/services aussi bien que le DNS de toutes les adresses IP pour en obtenir des enregistrements. Cette dernière peut poser un léger problème. Par exemple, elle tentera de résoudre les adresses IP LAN, i.e., 192.168.1.1, en quelque chose de plus fonctionnel. 192.168.0.0/16 est une plage d'adresses privées et la commande semblera se figer. Pour résoudre ce problème, nous ferons comme suit :
iptables -L -n
Une autre chose qui peut être intéressante c'est de voir quelques statistiques concernant chaque stratégie, règle et chaîne.
iptables -L -n -v
N'oubliez pas qu'il est également possible d'afficher les tables nat et mangle. Ceci est fait avec l'option -t, comme ça :
iptables -L -t nat
Il y a aussi quelques fichiers qu'il serait intéressant de regarder dans le système de fichiers /proc. Par exemple, savoir quelles connexions sont en cours dans la table conntrack. Cette table contient toutes les connexions tracées et sert de table de base, ainsi nous pouvons toujours connaître l'état de nos connexions. Cette table ne peut être éditée, et même si c'était le cas, ce ne serait pas une bonne idée. Pour voir la table, exécutez la commande :
cat /proc/net/ip_conntrack | less
La commande ci-dessus indique toutes les connexions tracées même si ça peut être un peu difficile de tout comprendre.
18-2. A.2. Mise à jour et vidange des tables▲
Si à un certain moment vous sabotez votre iptables, il existe des commandes pour le vidanger, ainsi vous n'aurez pas à rebooter. J'ai abordé cette question plusieurs fois, ainsi je crois que la réponse ici sera correcte. Si vous faites une erreur dans une règle, vous n'avez juste qu'à changer les paramètres de -A en -D dans la ligne qui contient l'erreur. iptables trouvera la ligne erronée et l'effacera pour vous, dans le cas où vous avez de multiples lignes avec des erreurs identiques dans la chaîne, il supprimera la première instance et fera l'appariement de votre règle. Si ce n'est pas le comportement voulu vous pouvez essayer d'utiliser l'option -D comme dans iptables -D INPUT 10 laquelle effacera la dixième règle de la chaîne INPUT.
Il y a aussi certains cas où vous voudrez vider une chaîne complète, dans ces cas vous exécuterez l'option -F. Par exemple, iptables -F INPUT supprimera la chaîne INPUT en totalité, mais ne modifiera pas la stratégie par défaut, ainsi si elle est placée à DROP vous bloquerez la chaîne INPUT. Pour réinitialiser la stratégie de la chaîne, qui était placée à DROP, faites par exemple, iptables -P INPUT ACCEPT.
J'ai écrit un rc.flush-iptables.txtJ.5. Exemple rc.flush-iptables script (disponible dans l'annexe) qui vide et réinitialise votre iptables que vous pouvez utiliser lors de l'écriture de votre fichier rc.firewall.txt. Une chose encore, si vous démarrez avec une table mangle qui contient des erreurs, le script ne les supprimera pas, il est plus simple d'ajouter quelques lignes pour les supprimer. Je ne l'ai pas fait, car la table mangle n'est pas utilisée dans mon script rc.firewall.txt.