uname -r:4.13.0-16-generic (server ubuntu 17.10)
Mám problém, že iptables po restartu nefunguje:
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.
Zkusil jsem přeinstalovat jádro a 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
když jej přeinstaluji (bez restartu), iptables po restartu služby funguje.
když restartuji počítač, znovu se zobrazí stejná chyba.
Všiml jsem si, že s každým restartem zmizí následující složka:
/lib/modules/4.13.0-16-generic/kernel/net/ipv4/netfilter
ve složce ipv4 zbývají pouze 2 soubory:
gre.ko udp_tunnel.ko
kopírování chybějících souborů do tohoto umístění nefunguje, bude odstraněno při příštím restartu.
Máte nápad, jak to opravit?
Přijatá odpověď:
Mám to samé na Ubuntu 16.04. Nemám opravu, ale mám určitý přehled o tom, proč se to děje. Během procesu knihy se systém zpočátku spouští ze souborového systému založeného na RAM:initramfs. Později v procesu zavádění převezme řízení pevný disk, ale adresář modulů z initramfs je připojen do adresáře modulů pevného disku. Všimněte si, že výstup mount
obsahuje řádek:
copymods on /lib/modules type tmpfs (rw,relatime)
Dobře, takže jakékoli změny v /lib/modules, např. provedením
sudo apt-get install --reinstall linux-image-$(uname -r)
budou ztraceny při restartování systému. Jak to tedy má fungovat? Když se apt install
příkaz přidá nové moduly, měl by vložit odpovídající záznam do /usr/share/initramfs-tools/hooks
. Poté instalační skript, který apt install
vyvolá spuštění update-initramfs
, který generuje archiv CPIO /boot/initrd.img-(uname -r)
což je váš obraz initramfs, který by nyní měl obsahovat moduly potřebné k tomu, aby iptables fungovaly, když je systém restartován.
Chyba je v tom, že relevantní položky nejsou ve skutečnosti nikdy vytvořeny v /usr/share/initramfs-tools/hooks
, a proto se příslušné položky nezapisují do initramfs, a proto se při restartu systému nezachovají.
V tomto bodě jsem uvízl.