J'avais mon propre jeu de règles iptables sur mon installation Ubuntu 14.04 LTS. Cela résidait dans /etc/network/if-pre-up.d/iptables
.
Maintenant, apparemment après un autre apt-get dist-upgrade
, il semble que mes règles soient remplacées: lorsque je lance iptables -L
, je vois des éléments qui semblent provenir de libvirt
ou de quelque chose d'autre, mais pas de moi.
Je cherche donc un moyen de savoir d'où proviennent ces règles afin de pouvoir les éditer/les contrôler. La façon dont je suis après doit être plus intelligente que celle que je suis en train d'essayer - il suffit de rechercher dans tous les fichiers de configuration système des chaînes uniques apparaissant dans la sortie iptables -L
.
PDATE:
Après avoir exécuté virsh net-autostart default --disable
et redémarré toutes ces règles iptables étranges ont disparu. Maintenant que j'ai des iptables propres, je les connais - ils étaient auparavant pollués par libvirt/kvm.
Reste cependant la question: existe-t-il un moyen général de déterminer d'où proviennent les règles d'iptables? Quelque chose de plus intelligent que de deviner et d’éteindre un à un pour voir s’il affecte iptables?
Généralement, les règles iptables sont enregistrées ou chargées par des scripts résidant dans /etc/init.d. En supposant que les scripts utilisent les commandes typiques iptables-save et iptables-restore, vous pouvez les rechercher avec un grep récursif, par exemple:
grep -R iptables-restore /etc/init.d/
Si la sortie de la commande grep révèle des fichiers, vous pouvez voir quel paquet était chargé de placer ces fichiers sur le système.
dpkg-query -S file-name-result-of-grep
Il est possible que le fichier ait été généré au moment de l'installation ou créé par un utilisateur normal. Si tel est le cas, dpkg risque de ne pas connaître l'existence du fichier.
Si la sortie concise de nom de paquet unique provenant de dpkg n'est pas suffisamment descriptive, vous pouvez apt-cache show package-name
sur le nom du paquet fourni par dpkg.
Je crois que les règles iptables résultantes proviennent de /var/lib/libvirt/network/default.xml
, lequel est à son tour généré à partir de /etc/libvirt/qemu/networks/default.xml
lorsque virsh net-edit default
est utilisé pour apporter des modifications. Je pense, mais je ne suis pas sûr, que les règles ne sont pas stockées comme un ensemble de règles, mais plutôt compilées à partir de la source .xml et entrées dans le jeu de règles iptables lorsque libvirtd est démarré au démarrage.