uname -r :4.13.0-16-generic (serveur Ubuntu 17.10)
J'ai un problème avec iptables qui ne fonctionne pas après un redémarrage :
iptables-apply /etc/network/iptables
[ ok ] Stopping fail2ban (via systemctl): fail2ban.service.
Applying new iptables rules from '/etc/network/iptables'... modprobe: FATAL: Module ip_tables not found in directory /lib/modules/4.13.0-16-generic
iptables-restore v1.6.1: iptables-restore: unable to initialize table 'filter'
Error occurred at line: 3
Try `iptables-restore -h' or 'iptables-restore --help' for more information.
failed.
Error: unknown error applying new iptables rules: /etc/network/iptables
Reverting to old iptables rules... done.
J'ai essayé de réinstaller le noyau et iptables :
apt install --reinstall linux-generic linux-image-4.13.0-16-generic linux-image-extra-4.13.0-16-generic linux-headers-4.13.0-16-generic iptables
quand je le réinstalle (sans redémarrage) iptables fonctionne après un redémarrage du service.
lorsque je redémarre la machine, j'obtiens à nouveau la même erreur.
J'ai remarqué qu'à chaque redémarrage, le dossier suivant a disparu :
/lib/modules/4.13.0-16-generic/kernel/net/ipv4/netfilter
seuls 2 fichiers restants dans le dossier ipv4 sont :
gre.ko udp_tunnel.ko
copier les fichiers manquants à cet emplacement ne fonctionne pas, sera supprimé au prochain redémarrage.
Une idée de comment résoudre ce problème ?
Réponse acceptée :
J'obtiens la même chose sur Ubuntu 16.04. Je n'ai pas de solution, mais j'ai une idée de la raison pour laquelle cela se produit. Pendant le processus de livre, le système démarre initialement sur un système de fichiers basé sur la RAM :initramfs. Plus tard dans le processus de démarrage, le disque dur prend le relais, mais le répertoire des modules de l'initramfs est monté sur le répertoire des modules du disque dur. Notez que la sortie de mount
inclut la ligne :
copymods on /lib/modules type tmpfs (rw,relatime)
Ok, donc toute modification de /lib/modules, par ex. en exécutant
sudo apt-get install --reinstall linux-image-$(uname -r)
seront perdus lors du redémarrage du système. Alors, comment est-ce censé fonctionner? Eh bien, lorsque le apt install
La commande ajoute de nouveaux modules, elle doit mettre une entrée correspondante dans /usr/share/initramfs-tools/hooks
. Puis le script d'installation qui apt install
invoque exécute update-initramfs
, qui génère l'archive CPIO /boot/initrd.img-(uname -r)
qui est votre image initramfs, qui devrait maintenant contenir les modules nécessaires pour qu'iptables fonctionne lorsque le système est redémarré.
Le bogue est que les entrées pertinentes ne sont jamais réellement faites dans /usr/share/initramfs-tools/hooks
, et donc les entrées pertinentes ne sont pas faites dans initramfs, et ne sont donc pas conservées lorsque le système est redémarré.
À ce stade, je suis bloqué.