iptables nat non esiste


13

Oggi il mio iptables nat sul sistema host ha smesso di funzionare e non ho idea di cosa sia successo! (Molto male, lo so)

Tutti i comandi vengono eseguiti come utente root.

Se corro $ iptables -t nat -Lricevo il seguente messaggio di errore:

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

Non ci sono ulteriori aggiornamenti disponibili. Ho anche riavviato il server con diversi kernel più vecchi, ma ricevo sempre lo stesso messaggio di errore.

Il mio server è in esecuzione su CentOS con il kernel ufficiale OpenVZ nell'ultima versione.

$ uname -r
2.6.32-042stab088.4

Versione del kernel testata anche: 2.6.32-042stab85.20 e 2.6.32-042stab084.26

Primo kernel in 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

Sono stati installati i seguenti aggiornamenti:

$ 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 mi dà quanto segue:

$ 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'esecuzione di modprobe dà il seguente errore:

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

Ma il file esiste:

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

Qualche idea?


Alcune configurazioni di OpenVZ non abilitano NAT nei guest. È cambiato qualcosa sull'host?
Zoredache,

Questo è il sistema host, non ospite.
Lukas Schulze,

Risposte:


10

A causa dell'aggiornamento di vzctl da 4.6 a 4.7, hanno modificato l'impostazione di nf_conntrack per disabilitarla di default. ( https://openvz.org/Download/vzctl/4.7/changes )

Messaggio di commit corrispondente:

...

Disabilita conntrack per VE0 per impostazione predefinita

La funzionalità di connessione IP ha un impatto negativo sulle prestazioni di Venet (fino a circa il 10%), quindi è meglio disabilitarle per impostazione predefinita.

...

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

Soluzione:

A seconda della distribuzione, si trova da qualche parte nella directory / etc. Trovalo:

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

e sostituisci "1" con "0":

opzioni nf_conntrack ip_conntrack_disable_ve0 = 0

riavviare il sistema

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

In alternativa al riavvio:

rmmod iptable_nat
rmmod nf_nat
rmmod nf_conntrack_ipv4
rmmod nf_conntrack

E Nat ora funziona

Tutte le fonti:

Log delle modifiche per vzctl 4.7: https://openvz.org/Download/vzctl/4.7/changes

Segnalazione di bug con soluzione nei commenti: https://bugzilla.openvz.org/show_bug.cgi?id=2943

Segnalazione di bug con descrizione abbreviata della soluzione: https://bugzilla.openvz.org/show_bug.cgi?id=2755#c4

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

Articolo Wiki correlato: https://openvz.org/NAT#IP_conntracks


4

Dovresti essere un super utente da eseguire iptables. Pertanto, eseguilo come 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
Ho già effettuato l'accesso come utente root.
Lukas Schulze,

1

Sembra che qualcosa sia effettivamente sbagliato nel file? Cosa succede se si tenta di modificare modprobe /lib/modules/2.6.32-042stab088.4/kernel/net/ipv4/netfilter/iptable_nat.ko? Il sistema restituisce davvero un ENOENT (nessun file o directory del genere)? Non riesco a immaginare che sarebbe così, ma forse SELinux sta scherzando con il file? E infine, forse il file / filesystem è corrotto. md5sum con una buona versione conosciuta. O semplicemente rimuoverlo e copiarne uno nuovo del tutto. Spero non sia il filesystem.

Prova questo: /programming/3140478/fatal-module-not-found-error-using-modprobe


0

Ho trovato un'altra soluzione a questo problema! Sul nodo non ho potuto rimuovere

rmmod iptable_nat
rmmod nf_nat
rmmod nf_conntrack_ipv4
rmmod nf_conntrack

nella Guida ufficiale, ho trovato:

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.