iptables nat n'existe pas

13

Aujourd'hui, mon nat iptables sur le système hôte a cessé de fonctionner et je n'ai aucune idée de ce qui s'est passé! (C'est très mauvais, je sais)

Toutes les commandes sont exécutées en tant qu'utilisateur root.

Si je cours, $ iptables -t nat -Lj'obtiens le message d'erreur suivant:

$ 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.

Aucune autre mise à jour n'est disponible. J'ai également redémarré le serveur avec plusieurs noyaux plus anciens, mais je reçois toujours le même message d'erreur.

Mon serveur fonctionne sur CentOS avec le noyau officiel OpenVZ dans la dernière version.

$ uname -r
2.6.32-042stab088.4

Version du noyau également testée: 2.6.32-042stab85.20 et 2.6.32-042stab084.26

Premier noyau dans 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

Les mises à jour suivantes ont été installées:

$ 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 me donne ce qui suit:

$ 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

L'exécution de modprobe donne l'erreur suivante:

$ 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.

Mais le fichier existe:

$ 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*

Des idées?

Lukas Schulze
la source
Certaines configurations d'OpenVZ n'activent pas NAT dans les invités. Quelque chose a-t-il changé sur l'hôte?
Zoredache
Il s'agit du système hôte, pas d'un système invité.
Lukas Schulze

Réponses:

10

En raison de la mise à jour de vzctl de 4.6 à 4.7, ils ont modifié le paramètre de nf_conntrack pour qu'il soit désactivé par défaut. ( https://openvz.org/Download/vzctl/4.7/changes )

Message de validation correspondant:

...

Désactiver conntrack pour VE0 par défaut

La fonctionnalité de conntrack IP a un impact négatif sur les performances de Venet (uo à environ 10%), il est donc préférable de les désactiver par défaut.

...

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

Solution:

En fonction de la distribution, il se trouve quelque part dans le répertoire / etc. Trouve le:

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

et remplacez le "1" par "0":

options nf_conntrack ip_conntrack_disable_ve0 = 0

redémarrez votre système

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

Alternativement au redémarrage:

rmmod iptable_nat
rmmod nf_nat
rmmod nf_conntrack_ipv4
rmmod nf_conntrack

Et nat travaille maintenant

Toutes les sources:

Journal des modifications pour vzctl 4.7: https://openvz.org/Download/vzctl/4.7/changes

Rapport de bogue avec solution dans les commentaires: https://bugzilla.openvz.org/show_bug.cgi?id=2943

Rapport de bogue avec description de solution raccourcie: https://bugzilla.openvz.org/show_bug.cgi?id=2755#c4

Validation GIT correspondante: http://git.openvz.org/?p=vzctl;a=commit;h=a191a462579ee

Article Wiki connexe: https://openvz.org/NAT#IP_conntracks

Lukas Schulze
la source
4

Vous devez être super utilisateur pour exécuter iptables. Par conséquent, exécutez-le en tant que 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
[...]
Spack
la source
1
Je suis déjà connecté en tant qu'utilisateur root.
Lukas Schulze
1

Semble que quelque chose ne va pas avec le fichier? Et si vous essayez de structurer modprobe /lib/modules/2.6.32-042stab088.4/kernel/net/ipv4/netfilter/iptable_nat.ko? Le système renvoie-t-il vraiment un ENOENT (aucun fichier ou répertoire de ce type)? Je ne peux pas imaginer que ce serait ça, mais peut-être que SELinux joue avec le fichier? Et enfin, le fichier / système de fichiers est peut-être corrompu. md5sum avec une bonne version connue. Ou supprimez-le simplement et copiez-en un nouveau. Espérons que ce ne soit pas le système de fichiers.

Essayez ceci: /programming/3140478/fatal-module-not-found-error-using-modprobe

majikman
la source
0

J'ai trouvé une autre solution à ce problème! Sur le nœud que je n'ai pas pu supprimer

rmmod iptable_nat
rmmod nf_nat
rmmod nf_conntrack_ipv4
rmmod nf_conntrack

dans le Guide officiel, j'ai trouvé:

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

Дмаи Летов
la source