iptables nat existiert nicht


12

Heute haben meine iptables nat auf dem Hostsystem aufgehört zu funktionieren und ich habe keine Ahnung, was passiert ist! (Das ist sehr schlecht, ich weiß)

Alle Befehle werden als Root ausgeführt.

Wenn ich laufe $ iptables -t nat -Lbekomme ich folgende Fehlermeldung:

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

Es sind keine weiteren Updates verfügbar. Ich habe den Server auch mit mehreren älteren Kerneln neu gestartet, bekomme aber immer die gleiche Fehlermeldung.

Mein Server läuft unter CentOS mit dem offiziellen OpenVZ-Kernel in der neuesten Version.

$ uname -r
2.6.32-042stab088.4

Ebenfalls getestete Kernel-Version: 2.6.32-042stab85.20 und 2.6.32-042stab084.26

Erster Kernel in der grub.conf:

title OpenVZ (2.6.32-042stab088.4)
root (hd0,1)
kernel /vmlinuz-2.6.32-042stab088.4 ro root=/dev/md2 rd_NO_LUKS rd_NO_DM nomodeset crashkernel=auto SYSFONT=latarcyrheb-sun16 LANG=en_US.UTF-8 KEYTABLE=de
initrd /initramfs-2.6.32-042stab088.4.img

Die folgenden Updates wurden installiert:

$ rpm -qa --last
vzctl-4.7.2-1.x86_64                          Mon 05 May 2014 03:25:16 AM CEST
vzctl-core-4.7.2-1.x86_64                     Mon 05 May 2014 03:25:14 AM CEST
util-linux-ng-2.17.2-12.14.el6_5.x86_64       Wed 30 Apr 2014 11:37:19 PM CEST
libuuid-2.17.2-12.14.el6_5.x86_64             Wed 30 Apr 2014 11:37:18 PM CEST
libblkid-2.17.2-12.14.el6_5.x86_64            Wed 30 Apr 2014 11:37:18 PM CEST
vzkernel-2.6.32-042stab088.4.x86_64           Mon 26 Apr 2014 09:01:00 AM CEST
nss-softokn-freebl-3.14.3-10.el6_5.x86_64     Sat 26 Apr 2014 09:01:00 AM CEST
nss-softokn-3.14.3-10.el6_5.x86_64            Sat 26 Apr 2014 09:01:00 AM CEST
bridge-utils-1.2-10.el6.x86_64                Tue 15 Apr 2014 02:22:41 PM CEST
openssl-1.0.1e-16.el6_5.7.x86_64              Wed 09 Apr 2014 10:14:03 AM CEST
...

lsmod gibt mir folgendes:

$ lsmod | grep ip
iptable_nat             6302  0
nf_nat                 23213  2 iptable_nat,vzrst
nf_conntrack_ipv4       9946  3 iptable_nat,nf_nat
nf_defrag_ipv4          1531  1 nf_conntrack_ipv4
nf_conntrack           80281  5 iptable_nat,vzrst,nf_nat,nf_conntrack_ipv4,vzcpt
ip6t_REJECT             4711  0
ip6table_mangle         3669  0
ip6table_filter         3033  0
ip6_tables             18988  2 ip6table_mangle,ip6table_filter
iptable_mangle          3493  0
iptable_filter          2937  0
xt_multiport            2716  0
ipt_REJECT              2399  0
ip_tables              18119  3 iptable_nat,iptable_mangle,iptable_filter
ipv6                  322519  35 vzrst,ip6t_REJECT,ip6table_mangle

Das Ausführen von modprobe gibt den folgenden Fehler aus:

$ modprobe /lib/modules/2.6.32-042stab088.4/kernel/net/ipv4/netfilter/iptable_nat.ko
FATAL: Module /lib/modules/2.6.32_042stab088.4/kernel/net/ipv4/netfilter/iptable_nat.ko not found.

Die Datei existiert aber:

$ ll /lib/modules/2.6.32-042stab088.4/kernel/net/ipv4/netfilter/iptable_nat.ko
-rwxr--r-- 1 root root 16K Apr  3 16:20 /lib/modules/2.6.32-042stab088.4/kernel/net/ipv4/netfilter/iptable_nat.ko*

Irgendwelche Ideen?


Einige Konfigurationen von OpenVZ aktivieren NAT in den Gästen nicht. Hat sich am Host etwas geändert?
Zoredache

Dies ist das Hostsystem, kein Gastsystem.
Lukas Schulze

Antworten:


10

Aufgrund des Updates von vzctl von 4.6 auf 4.7 wurde die Einstellung von nf_conntrack so geändert, dass sie standardmäßig deaktiviert ist. ( https://openvz.org/Download/vzctl/4.7/changes )

Entsprechende Commit-Nachricht:

...

Deaktivieren Sie standardmäßig conntrack für VE0

Die IP-Überwachungsfunktionalität hat einen negativen Einfluss auf die Leistung von Venet (bis zu 10%), sodass diese standardmäßig deaktiviert werden sollten.

...

(Quelle: http://git.openvz.org/?p=vzctl;a=commit;h=a191a462579ee )

Lösung:

In Abhängigkeit von der Distribution liegt es irgendwo im Verzeichnis / etc. Finde es:

$ sudo grep -R "options nf_conntrack ip_conntrack_disable_ve0 = 1" /etc/modprobe.d/

und ersetze die "1" durch "0":

options nf_conntrack ip_conntrack_disable_ve0 = 0

Starten Sie Ihr System neu

(Quelle: https://bugzilla.openvz.org/show_bug.cgi?id=2943#c5 )

Alternativ zum Neustart:

rmmod iptable_nat
rmmod nf_nat
rmmod nf_conntrack_ipv4
rmmod nf_conntrack

Und nat jetzt arbeiten

Alle Quellen:

Änderungsprotokoll für vzctl 4.7: https://openvz.org/Download/vzctl/4.7/changes

Fehlerbericht mit Lösung in Kommentaren: https://bugzilla.openvz.org/show_bug.cgi?id=2943

Fehlerbericht mit verkürzter Lösungsbeschreibung: https://bugzilla.openvz.org/show_bug.cgi?id=2755#c4

Entsprechendes GIT-Commit: http://git.openvz.org/?p=vzctl;a=commit;h=a191a462579ee

Zugehöriger Wiki-Artikel: https://openvz.org/NAT#IP_conntracks


4

Sie sollten Superuser sein, um zu laufen iptables. Führen Sie es daher als aus root.

$ iptables -t nat -L
iptables v1.4.19.1: can't initialize iptables table `nat': Permission denied (you must be root)
Perhaps iptables or your kernel needs to be upgraded.

# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
[...]

1
Ich bin bereits als Root angemeldet.
Lukas Schulze

1

Scheint, als ob tatsächlich etwas mit der Datei nicht stimmt? Was ist, wenn Sie versuchen, modprobe /lib/modules/2.6.32-042stab088.4/kernel/net/ipv4/netfilter/iptable_nat.ko zu stracen? Gibt das System wirklich einen ENOENT zurück (keine solche Datei oder kein solches Verzeichnis)? Ich kann mir nicht vorstellen, dass das so ist, aber vielleicht macht SELinux mit der Datei rum? Und schließlich ist die Datei / das Dateisystem möglicherweise beschädigt. md5sum es mit einer bekannt guten version. Oder entfernen Sie es einfach und kopieren Sie ein neues. Hoffentlich ist es nicht das Dateisystem.

Versuchen Sie Folgendes: /programming/3140478/fatal-module-not-found-error-using-modprobe


0

Ich habe eine andere Lösung für dieses Problem gefunden! Auf dem Knoten konnte ich nicht entfernen

rmmod iptable_nat
rmmod nf_nat
rmmod nf_conntrack_ipv4
rmmod nf_conntrack

Im Official Guide fand ich:

vzctl set VZID --netfilter full --save --setmode restart

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.