iptables: nat table existiert nicht

8

Ich versuche, NAT auf meinem Raspi 2 mit Raspbian auszuführen. Wenn ich jedoch versuche, etwas mit der natTabelle in iptables zu tun , wird der folgende Fehler angezeigt:

iptables v1.4.21: can't initialize iptables table `nat': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.

Und wenn ich es versuche modprobe:

pi@raspberrypi:~ $ sudo modprobe iptables
modprobe: ERROR: ../libkmod/libkmod.c:557 kmod_search_moddep() could not open moddep file '/lib/modules/4.4.11-v7+/modules.dep.bin'

Versions Information:

pi@raspberrypi:~ $ uname -a
Linux raspberrypi 4.4.11-v7+ #888 SMP Mon May 23 20:10:33 BST 2016 armv7l GNU/Linux
Cnly
quelle

Antworten:

11

Schnell Vermutung: Sie haben das Betriebssystem aktualisiert und das System hat sich für eine sehr lange Zeit, oder es geschafft zu aktualisieren , ohne den Kernel zu ersetzen, da die 4.4.11-v7+Module wurden bereits entfernt von Raspbian.

Wenn es kein solches Verzeichnis wie /lib/modules/4.4.11-v7+(look) sollten Sie laufen sudo apt updatedann sudo apt upgradeden Kernel , um sicherzustellen , ersetzt worden ist , dann Neustart und prüfen uname -r; Es sollte eine Version mit einem entsprechenden /lib/modules/Verzeichnis angegeben werden, das vorhanden ist. Der Pi-Kernel kann jedoch ohne starten. Versuchen Sie es also lsmod. Wenn es nichts gibt, stimmt etwas nicht. Wenn dies der Fall ist, können Sie dies filtern, lsmod | grep -P "ip|nf"um diejenigen anzuzeigen, die sich auf iptables / netfilter beziehen (und alles andere, das zufällig diese Buchstabenkombinationen enthält).

Das Basismodul ist eigentlich ip_tables, sollte aber automatisch geladen werden. Das Basismodul für NAT ist nf_nataber das sollte auch automatisch geladen werden.

Goldlöckchen
quelle
2
Ihre Vermutung ist erstaunlich genau! Ich habe kürzlich ein Dist-Upgrade durchgeführt, bei dem der Kernel ohne Neustart aktualisiert wurde. Ich habe versucht neu zu starten und jetzt funktioniert alles gut!
Cnly
Sie sollten wirklich einen Mechanismus haben, um die Leute nicht auf diese Weise im Stich zu lassen, z. B. indem sie schnell die laufende Kernel-Version überprüfen, bevor sie ihre Module löschen! Das Problem auf dem Pi ist standardmäßig, dass ein Kernel mit mehrdeutigem Namen kernel.img(oder kernel7.img) geladen wird, es sei denn, Sie fügen eine Zeile hinzu config.txt. Wenn sie den Kernel aktualisieren, löschen / überschreiben sie den alten Kernel ( config.txtstattdessen kann das Ändern für einige Leute zu Problemen führen, wäre aber im Allgemeinen wahrscheinlich ein sauberer Ansatz).
Goldlöckchen