uname -r:4.13.0-16-generic(ubuntu 17.10サーバー)
再起動後にiptablesが機能しないという問題があります。
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.
カーネルと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
(再起動せずに)再インストールすると、サービスの再起動後にiptablesが機能します。
マシンを再起動すると、同じエラーが再び発生します。
再起動するたびに、次のフォルダがなくなることに気づきました。
/lib/modules/4.13.0-16-generic/kernel/net/ipv4/netfilter
フォルダipv4に残っているファイルは2つだけです:gre.ko udp_tunnel.ko
不足しているファイルをこの場所にコピーすることはできません。次回の再起動で削除されます。
これを修正する方法はありますか?
Ubuntu16.04でも同じことがわかります。修正はありませんが、なぜこれが発生しているのかについての洞察はあります。ブックプロセス中、システムは最初にRAMベースのファイルシステムinitramfsで起動します。ブートプロセスの後半で、ハードディスクが引き継ぎますが、initramfsのmodulesディレクトリはハードディスクのmodulesディレクトリにマウントされます。 mount
の出力には次の行が含まれていることに注意してください。
_copymods on /lib/modules type tmpfs (rw,relatime)
_
わかりました。/lib/modulesへの変更(例:実行することによって
_Sudo apt-get install --reinstall linux-image-$(uname -r)
_
システムを再起動すると失われます。では、これはどのように機能するのでしょうか? _apt install
_コマンドが新しいモジュールを追加するときは、対応するエントリを_/usr/share/initramfs-tools/hooks
_に配置する必要があります。次に、_apt install
_が呼び出すインストーラースクリプトが_update-initramfs
_を実行し、CPIOアーカイブ/boot/initrd.img-(uname -r)
を生成します。これはinitramfsイメージであり、システムでiptablesが機能するために必要なモジュールが含まれているはずです。再起動されます。
バグは、関連するエントリが実際には_/usr/share/initramfs-tools/hooks
_で作成されないため、関連するエントリがinitramfsで作成されないため、システムの再起動時に保持されないことです。
この時点で私は立ち往生しています。
@ scottwh2で述べたように、問題はおそらくcopymods
ramfsボリュームが/lib/modules
にマウントされていることです。これを確認するには、mount | grep /lib/modules
を実行します。
これを削除するには、
apt remove cloud-initramfs-copymods
次に、再起動します。
再起動後、copymods
エントリがmount
から削除されていることを再確認してください。
Ubuntu Server16.04でも同じ問題が発生しました。コマンド:
mount | grep /lib/modules
表示:
copymods on /lib/modules type tmpfs (rw,relatime)
そのため、最初にcloud-initramfs-copymodsを削除しようとしましたが、そのパッケージがシステムにインストールされていませんでした。それから私はそれをインストールしました:
apt-get install cloud-initramfs-copymods
そしてその直後に私はそれを削除しました:
apt-get remove cloud-initramfs-copymods
そして、サーバーを再起動した後、copymodsはなくなり、モジュールは再起動後に削除されません!おかげでscottwh2とfalsePockets問題は正常に解決しました。