Article ID: 9630, created on Dec 20, 2011, last review on May 11, 2014

  • Applies to:
  • Virtuozzo containers for Linux 4.6
  • Virtuozzo containers for Linux 4.0
  • Virtuozzo for Linux 3.x

Síntomas

Los síntomas pueden variar, por ejemplo:
 
-          Algunas reglas iptables no funcionan
 
-          Cuando intento crear una regla iptables en la tabla NAT o utilizar el módulo STATE, obtengo el siguiente error:
 
# iptables -t nat -L
iptables v1.3.5: can't initialize iptables table `nat': Table does not exist (do you need to insmod?) Perhaps iptables or your kernel needs to be upgraded.
#

Causa

Lo más probable es que el seguimiento de conexión (el módulo “conntracks”) esté desactivado por omisión en su nodo hardware PVC. Por este motivo, IPtables no esté en estado completo en la instalación predeterminada.
Usted puede verificarlo comprobando si recibe la misma salida que la siguiente:
 
# grep conntrack /etc/modprobe.conf
options ip_conntrack ip_conntrack_disable_ve0=1
#

Cuando “conntracks” está desactivado, la tabla NAT no aparece en iptables:
 
# cat /proc/net/ip_tables_names
mangle
filter
#

Este es el motivo por el que no se pueden utilizar los módulos ip_natipt_state en el nodo hardware.

Resolución

Nota: La funcionalidad del módulo STATE de iptables puede reemplazarse añadiendo reglas complementarias explícitas para cadenas INPUT y OUTPUT.
 
Si no está satisfecho con esta solución temporal o si necesita la funcionalidad de tabla NAT, siga leyendo este artículo.
 
Antes de activar “conntracks”, es sumamente recomendable considerar las siguientes notas y advertencias:
 
Advertencia 1: La activación del seguimiento de conexión utiliza muchos recursos.
 
Advertencia 2: Cuando “conntracks” está activado, el nodo hardware puede resultar totalmente inaccesible mediante red en caso de una elevada carga de red.
Esto se debe a que el número de slots de seguimiento de conexión es limitado para un servidor físico. Esto resulta especialmente peligroso para un nodo hardware PVC, ya que este asigna dos de estos slots para cada conexión a un contenedor – uno para la conexión externa y otro para la conexión del nodo hardware con el contenedor. De esta forma, si algún contenedor abre demasiadas conexiones, el nodo hardware no podrá crear ninguna conexión nueva.
Esta situación puede suceder debido a un ataque DDoS para cualquier contenedor y el administrador del nodo hardware no podrá detenerlo deteniendo un contenedor o añadiendo algunas reglas iptables porque simplemente no podrá acceder al nodo.
 
Cómo activar “conntracks”:
 
  1. Compruebe que todos los módulos necesarios se han cargado al nodo hardware:
    [root@pvcfl46x64 ~]# lsmod | grep ipt
    ipt_REDIRECT 34944 0
    iptable_nat 43404 0
    ip_nat 53520 4 ipt_REDIRECT,ip_nat_irc,ip_nat_ftp,iptable_nat
    ip_conntrack 101396 10 ip_conntrack_netbios_ns,ip_nat_irc,ip_nat_ftp,xt_helper,xt_conntrack,ip_conntrack_irc,ip_conntrack_ftp,xt_state,iptable_nat,ip_nat
    ipt_recent 43404 1
    ipt_LOG 39808 1
    ipt_TOS 35200 0
    ipt_ttl 34816 0
    ipt_TCPMSS 37248 0
    iptable_mangle 37888 1
    iptable_filter 37760 2
    ipt_tos 34560 0
    ipt_REJECT 39812 0
    ip_tables 57440 3 iptable_nat,iptable_mangle,iptable_filter
    x_tables 52744 21 ipt_REDIRECT,xt_helper,xt_conntrack,xt_state,iptable_nat,ipt_recent,ipt_LOG,ipt_TOS,xt_comment,xt_length,ipt_ttl,xt_tcpmss,ipt_TCPMSS,xt_multiport,xt_limit,ipt_tos,ipt_REJECT,ip_tables,ip6t_REJECT,xt_tcpudp,ip6_tables
    [root@pvcfl46x64 ~]#
  2. Añada estos módulos a la configuración iptables en el nodo:
    [root@pvcfl46x64 ~]# egrep '^IPTABLES_MODULES=' /etc/sysconfig/iptables-config
    IPTABLES_MODULES="ipt_comment ipt_tcp iptable_filter iptable_mangle ipt_limit ipt_multiport ipt_tos ipt_TOS ipt_REJECT ipt_TCPMSS ipt_tcpmss ipt_ttl ipt_LOG ipt_length ip_conntrack ip_conntrack_ftp ip_conntrack_irc ipt_conntrack ipt_helper iptable_nat ip_nat_ftp ip_nat_irc ipt_REDIRECT ipt_state ip_conntrack_netbios_ns"
    [root@pvcfl46x64 ~]#
  3. Edite /etc/modprobe.conf y defina ip_conntrack_disable_ve0=0:
    [root@pvcfl46x64 ~]# grep conntrac /etc/modprobe.conf
    options ip_conntrack ip_conntrack_disable_ve0=0
    [root@pvcfl46x64 ~]#
  4. Active el registro iptables para verificar que funciona:
    [root@pvcfl46x64 ~]# egrep "^kern" /etc/syslog.conf
    kern.* /var/log/iptables.log
    [root@pvcfl46x64 ~]#
  5. Reinicie iptables:
    [root@pvcfl46x64 ~]# service iptables restart
    Flushing firewall rules: [ OK ]
    Setting chains to policy ACCEPT: nat mangle filter [ OK ]
    Unloading iptables modules: [FAILED]
    Applying iptables firewall rules: [ OK ]
    Loading additional iptables modules: ipt_comment ipt_tcp iptable_filter iptable_mangle ipt_limit ipt_multiport ipt_tos ipt_TOS ipt_REJECT ipt_TCPMSS ipt_tcpmss ipt_ttl ipt_LOG ipt_length ip_conntrack ip_conntrack_ftp ip_conntrack_irc ipt_conntrack ipt_helper iptable_nat ip_nat_ftp ip_nat_irc ipt_REDIRECT ipt_state[ OK ]track_netbios_ns
    [root@pvcfl46x64 ~]#
  6. Reinicie syslog:
    [root@pvcfl46x64 ~]# service syslog restart
    Shutting down kernel logger: [ OK ]
    Shutting down system logger: [ OK ]
    Starting system logger: [ OK ]
    Starting kernel logger: [ OK ]
    [root@pvcfl46x64 ~]#
  7. Añada alguna regla de prueba, como por ejemplo la que realizará el seguimiento de las conexiones SSH nuevas:
    [root@pvcfl46x64 ~]# iptables -A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name ssh_attempt --rsource -j LOG --log-prefix "SSH connection attempt: "
    [root@pvcfl46x64 ~]#
  8. Evite realizar el seguimiento de cualquier otra conexión TCP para no utilizar tantos recursos de sistema:
    iptables -t raw -I PREROUTING ! --dport 22 -j NOTRACK
  9. Intente acceder al servidor vía SSH mientras monitoriza el registro:
    [root@pvcfl46x64 ~]# tail -f /var/log/iptables.log
    Mar 10 07:09:32 pvcfl46x64 kernel: SSH connection attempt: IN=eth0 OUT= MAC=00:1c:42:43:65:5c:00:1c:c0:46:1f:e5:08:00 SRC=192.168.33.58 DST=10.55.63.10 LEN=48 TOS=0x00 PREC=0x00 TTL=123 ID=40718 DF PROTO=TCP SPT=1478 DPT=22 WINDOW=65535 RES=0x00 SYN URGP=0

FAQs

P: ¿Qué significa esta opción exactamente?
 
R: Esta opción controla el seguimiento de paquetes en el entorno del nodo. Cuando está desactivada, los paquetes son aceptados, enrutados, etc., pero el kernel no guarda ninguna información de las relaciones del paquete y considera cada paquete como una unidad completa.

Esto también afecta a NAT, ya que en este caso usted necesita disponer de esta información: usted necesita determinar el primer paquete de una conexión y decidir cuáles de los siguientes paquetes pertenecen al primer paquete...Es decir, estos también deberían considerar una "conexión".

e8e50b42231236b82df27684e7ec0beb d02f9caf3e11b191a38179103495106f 9b9439294978ca011521bd467a069524 36627b12981f68a16405a79233409a5e 35c16f1fded8e42577cb3df16429c57a 2897d76d56d2010f4e3a28f864d69223

Email subscription for changes to this article
Save as PDF