iptables nat no existe

13

¡Hoy mi iptables nat en el sistema host dejó de funcionar y no tengo idea de lo que sucedió! (Eso es muy malo, lo sé)

Todos los comandos se ejecutan como usuario root.

Si ejecuto $ iptables -t nat -Lme sale el siguiente mensaje de error:

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

No hay más actualizaciones disponibles. También reinicié el servidor con varios núcleos más antiguos, pero siempre recibo el mismo mensaje de error.

Mi servidor se ejecuta en CentOS con el núcleo oficial de OpenVZ en la última versión.

$ uname -r
2.6.32-042stab088.4

Versión de kernel también probada: 2.6.32-042stab85.20 y 2.6.32-042stab084.26

Primer núcleo en 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

Se instalaron las siguientes actualizaciones:

$ 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 da lo siguiente:

$ 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

Ejecutar modprobe da el siguiente error:

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

Pero el archivo 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*

¿Algunas ideas?

Lukas Schulze
fuente
Algunas configuraciones de OpenVZ no habilitan NAT en los invitados. ¿Ha cambiado algo en el host?
Zoredache 05 de
Este es el sistema host, no uno invitado.
Lukas Schulze

Respuestas:

10

Debido a la actualización de vzctl de 4.6 a 4.7, cambiaron la configuración de nf_conntrack para que esté deshabilitada de forma predeterminada. ( https://openvz.org/Download/vzctl/4.7/changes )

Mensaje de confirmación correspondiente:

...

Deshabilitar conntrack para VE0 por defecto

La funcionalidad de conntrack de IP tiene un impacto negativo en el rendimiento de venet (hasta aproximadamente el 10%), por lo que es mejor deshabilitarlo de forma predeterminada.

...

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

Solución:

En dependencia de la distribución, está en algún lugar del directorio / etc. Encuéntralo:

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

y reemplace el "1" con "0":

opciones nf_conntrack ip_conntrack_disable_ve0 = 0

reinicie su sistema

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

Alternativamente al reinicio:

rmmod iptable_nat
rmmod nf_nat
rmmod nf_conntrack_ipv4
rmmod nf_conntrack

Y nat ahora trabaja

Todas las fuentes:

Registro de cambios para vzctl 4.7: https://openvz.org/Download/vzctl/4.7/changes

Informe de error con solución en comentarios: https://bugzilla.openvz.org/show_bug.cgi?id=2943

Informe de error con descripción abreviada de la solución: https://bugzilla.openvz.org/show_bug.cgi?id=2755#c4

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

Artículo de Wiki relacionado: https://openvz.org/NAT#IP_conntracks

Lukas Schulze
fuente
4

Deberías ser súper usuario para ejecutar iptables. Por lo tanto, ejecútelo como 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
fuente
1
Ya estoy conectado como usuario root.
Lukas Schulze
1

Parece que algo está realmente mal con el archivo? ¿Qué sucede si intenta estratificar modprobe /lib/modules/2.6.32-042stab088.4/kernel/net/ipv4/netfilter/iptable_nat.ko? ¿El sistema realmente devuelve un ENOENT (no existe tal archivo o directorio)? No puedo imaginar que sea así, pero ¿tal vez SELinux está jugando con el archivo? Y finalmente, tal vez el archivo / sistema de archivos está dañado. md5sum con una buena versión conocida. O simplemente quítelo y copie uno nuevo por completo. Esperemos que no sea el sistema de archivos.

Pruebe esto: /programming/3140478/fatal-module-not-found-error-using-modprobe

majikman
fuente
0

¡Encontré otra solución a este problema! En el nodo no pude eliminar

rmmod iptable_nat
rmmod nf_nat
rmmod nf_conntrack_ipv4
rmmod nf_conntrack

en la Guía oficial, encontré:

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

Дмаи Летов
fuente