Este tema proporciona información para entender y solucionar los problemas del Distributed Firewall de VMware NSX 6.x (DFW).

Problema

Errores al publicar reglas en el distributed firewall.

Errores al actualizar reglas en el distributed firewall.

Origen

El Distributed Firewall de NSX es un firewall integrado en el kernel del hipervisor que proporciona visibilidad y control para las redes y las cargas de trabajo virtualizadas. Puede crear directivas para controlar el acceso basadas en los objetos de VMware vCenter como bases de datos y clústeres, nombres y etiquetas de máquinas virtuales, construcciones de red tales como direcciones IP, VLAN, y VXLAN, así como una identidad de grupo de usuarios desde Active Directory. Se han asegurado directivas constantes para controlar el acceso cuando una máquina virtual llega a vMotioned a través de hosts físicos sin tener que reescribir las reglas del firewall. Desde que el Distributed Firewall está integrado en el hipervisor, proporciona un rendimiento actualizado para habilitar una mayor consolidación de la carga de trabajo en los servidores físicos. La naturaleza distribuida del firewall proporciona una arquitectura de escalabilidad horizontal que extiende automáticamente la capacidad del firewall cuando se agregan hosts adicionales a un centro de datos.

La aplicación web de NSX Manager y los componentes de NSX de los hosts ESXi se comunican unos con otros a través del agente RabbitMQ, proceso que se ejecuta en la misma máquina virtual que la aplicación web de NSX Manager. El protocolo de comunicación que se utiliza es AMQP (Advanced Message Queueing Protocol) y se aseguran los canales a través del SSL. En un host ESXi, el proceso de VSFWD (vShield Firewall Daemon) establece y mantiene la conexión SSL con el agente y envía y recibe mensajes en nombre de otros componentes, que se comunican con él a través de la IPC.

Compruebe que cada paso para solucionar los problemas son adecuados para su entorno. Cada paso proporciona instrucciones o un vínculo a un documento para eliminar posibles causas y realizar las acciones necesarias para corregirlas. Los pasos se ordenan en la secuencia más apropiada para aislar el problema e identificar la solución correcta. Tras cada paso, vuelva a intentar actualizar y publicar las reglas del Distributed Firewall.

Procedimiento

  1. Compruebe que los VIB de NSX se instalaron correctamente en cada host ESXi del clúster. Para ello, ejecute estos comandos en cada host ESXi que se encuentra en el clúster.
    # esxcli software vib list | grep vsip
    esx-vsip                       6.0.0-0.0.4744062  VMware  VMwareCertified   2017-01-04 
    
    # esxcli software vib list | grep vxlan
    esx-vxlan                      6.0.0-0.0.4744062  VMware  VMwareCertified   2017-01-04
    

    Las versiones anteriores a NSX 6.2 tienen un VIB adicional:

    # esxcli software vib list | grep dvfilter
    
    esx-dvfilter-switch-security   5.5.0-0.0.2318233  VMware  VMwareCertified   2015-01-24

    A partir de la versión NSX 6.3.3 con ESXi 6.0 o posterior, los VIB esx-vxlan y esx-vsip se reemplazan por esx-nsxv.

    # esxcli software vib list | grep nsxv
    esx-nsxv                       6.0.0-0.0.6216823  VMware  VMwareCertified   2017-08-10

  2. Compruebe en cada host ESXi que el servicio de vShield Stateful Firewall está ejecutándose.

    Por ejemplo:

    # /etc/init.d/vShield-Stateful-Firewall status
    
    vShield-Stateful-Firewall is running
  3. Compruebe que el bus de mensajería se comunica correctamente con NSX Manager.

    El proceso comienza automáticamente a través del comando watchdog y reinicia el proceso si termina por alguna razón desconocida. Ejecute este comando en cada host ESXi del clúster.

    Por ejemplo:

    # ps | grep vsfwd
    
    107557 107557 vsfwd /usr/lib/vmware/vsfw/vsfwd
    107574 107557 vsfwd /usr/lib/vmware/vsfw/vsfwd
    107575 107557 vsfwd /usr/lib/vmware/vsfw/vsfwd
    107576 107557 vsfwd /usr/lib/vmware/vsfw/vsfwd
    107577 107557 vsfwd /usr/lib/vmware/vsfw/vsfwd
    107578 107557 vsfwd /usr/lib/vmware/vsfw/vsfwd 
    
  4. Compruebe que el puerto 5671 está abierto para la comunicación en la configuración del firewall.

    Este comando muestra la conectividad de VSFWD al agente RabbitMQ. Ejecute este comando en los hosts ESXi para visualizar una lista de conexiones desde el proceso vsfwd en el host ESXi hasta NSX Manager. Asegúrese de que el puerto 5671 está abierto a la comunicación en cualquiera de los firewalls externos del entorno. Por otra parte, el puerto 5671 debe tener al menos dos conexiones. Puede haber tantas conexiones en el puerto 5671 como máquinas virtuales de NSX Edge implementadas en el host ESXi que también se conecten al agente RMQ.

    Por ejemplo:

    # esxcli network ip connection list |grep 5671
    
    tcp         0       0  192.168.110.51:30133            192.168.110.15:5671   ESTABLISHED  10949155  newreno  vsfwd
    tcp         0       0  192.168.110.51:39156            192.168.110.15:5671   ESTABLISHED  10949155  newreno  vsfwd
    
  5. Compruebe que VSFWD esté configurado.

    Este comando debe mostrar la dirección IP de NSX Manager.

    # esxcfg-advcfg -g /UserVars/RmqIpAddress
  6. Si está utilizando un perfil de host para este host ESXi, compruebe que la configuración de RabbitMQ no se ha realizado en el perfil del host.
  7. Compruebe que las credenciales de RabbitMQ del host ESXi no están sincronizadas con NSX Manager. Descargue los Registros de soporte tecnológico de NSX Manager (NSX Manager Tech Support Logs) Tras cumplir con todos los Registros de soporte tecnológico de NSX Manager (NSX Manager Tech Support Logs), busque todos los registros para entradas similares a:

    Sustituya el host-420 por el ID de host en cuestión.

    PLAIN login refused: user 'uw-host-420' - invalid credentials.
  8. Si dichas entradas se encuentran en los registros del host ESXi en cuestión, vuelva a sincronizar el bus de mensajería.

    Para volver a sincronizarlo, use la API de REST. Para comprender mejor este problema, recopile los registro inmediatamente después de volver a sincronizar el bus de mensajería.

    HTTP Method : POST 
    Headers , 
    Authorization : base64encoded value of username password
    Accept : application/xml
    Content-Type : application/xml
    Request:
    
    POST https://NSX_Manager_IP/api/2.0/nwfabric/configure?action=synchronize
    
    Request Body:
    
    <nwFabricFeatureConfig>
    <featureId>com.vmware.vshield.vsm.messagingInfra</featureId>
    <resourceConfig>
    <resourceId<{HOST/CLUSTER MOID}</resourceId>
    </resourceConfig>
    </nwFabricFeatureConfig>
  9. Ejecute el comando export host-tech-support <host-id> scp <uid@ip:/path> para obtener los registros del firewall específico del host.

    Por ejemplo:

    nsxmgr# export host-tech-support host-28 scp Administrator@192.168.110.10
    Generating logs for Host: host-28...
    
  10. Ejecute el comando show dfw host host-id summarize-dvfilter para comprobar que las reglas del firewall se implementan en un host y se aplican a las máquinas virtuales.

    En la salida, módulo: vsip (module: vsip) muestra que el módulo DFW está cargado y en ejecución. El nombre (name) muestra el firewall que está en ejecución en cada vNic.

    Puede obtener los ID del host si ejecuta el comando show dfw cluster all para mostrar los ID del dominio del clúster, seguido de show dfw cluster domain-id para tener acceso a los ID del host.

    Por ejemplo:

    # show dfw host host-28 summarize-dvfilter
    
    Fastpaths:
    agent: dvfilter-faulter, refCount: 1, rev: 0x1010000, apiRev: 0x1010000, module: dvfilter
    agent: ESXi-Firewall, refCount: 5, rev: 0x1010000, apiRev: 0x1010000, module: esxfw
    agent: dvfilter-generic-vmware, refCount: 1, rev: 0x1010000, apiRev: 0x1010000, module: dvfilter-generic-fastpath
    agent: dvfilter-generic-vmware-swsec, refCount: 4, rev: 0x1010000, apiRev: 0x1010000, module: dvfilter-switch-security
    agent: bridgelearningfilter, refCount: 1, rev: 0x1010000, apiRev: 0x1010000, module: vdrb
    agent: dvfg-igmp, refCount: 1, rev: 0x1010000, apiRev: 0x1010000, module: dvfg-igmp
    agent: vmware-sfw, refCount: 4, rev: 0x1010000, apiRev: 0x1010000, module: vsip
    
    Slowpaths:
    
    Filters:
    world 342296 vmm0:2-vm_RHEL63_srv_64-shared-846-3f435476-8f54-4e5a-8d01-59654a4e9979 vcUuid:'3f 43 54 76 8f 54 4e 5a-8d 01 59 65 4a 4e 99 79'
     port 50331660 2-vm_RHEL63_srv_64-shared-846-3f435476-8f54-4e5a-8d01-59654a4e9979.eth1
      vNic slot 2
       name: nic-342296-eth1-vmware-sfw.2
       agentName: vmware-sfw
       state: IOChain Attached
       vmState: Detached
       failurePolicy: failClosed
       slowPathID: none
       filter source: Dynamic Filter Creation
      vNic slot 1
       name: nic-342296-eth1-dvfilter-generic-vmware-swsec.1
       agentName: dvfilter-generic-vmware-swsec
       state: IOChain Attached
       vmState: Detached
       failurePolicy: failClosed
       slowPathID: none
       filter source: Alternate Opaque Channel
     port 50331661 (disconnected)
      vNic slot 2
       name: nic-342296-eth2-vmware-sfw.2
       agentName: vmware-sfw        <================ DFW filter
       state: IOChain Detached
       vmState: Detached
       failurePolicy: failClosed
       slowPathID: none
       filter source: Dynamic Filter Creation
     port 33554441 2-vm_RHEL63_srv_64-shared-846-3f435476-8f54-4e5a-8d01-59654a4e9979
      vNic slot 2
       name: nic-342296-eth0-vmware-sfw.2
       agentName: vmware-sfw    <================= DFW filter
       state: IOChain Attached
       vmState: Detached
       failurePolicy: failClosed
       slowPathID: none
       filter source: Dynamic Filter Creation
    
  11. Ejecute el comando show dfw host hostID filter filterID rules.

    Por ejemplo:

    # show dfw host host-28 filter nic-79396-eth0-vmware-sfw.2 rules
     
    ruleset domain-c33 {
      # Filter rules
      rule 1012 at 1 inout protocol any from addrset ip-securitygroup-10 to addrset ip-securitygroup-10 drop with log;
      rule 1013 at 2 inout protocol any from addrset src1013 to addrset src1013 drop;
      rule 1011 at 3 inout protocol tcp from any to addrset dst1011 port 443 accept;
      rule 1011 at 4 inout protocol icmp icmptype 8 from any to addrset dst1011 accept;
      rule 1010 at 5 inout protocol tcp from addrset ip-securitygroup-10 to addrset ip-securitygroup-11 port 8443 accept;
      rule 1010 at 6 inout protocol icmp icmptype 8 from addrset ip-securitygroup-10 to addrset ip-securitygroup-11 accept;
      rule 1009 at 7 inout protocol tcp from addrset ip-securitygroup-11 to addrset ip-securitygroup-12 port 3306 accept;
      rule 1009 at 8 inout protocol icmp icmptype 8 from addrset ip-securitygroup-11 to addrset ip-securitygroup-12 accept;
      rule 1003 at 9 inout protocol ipv6-icmp icmptype 136 from any to any accept;
      rule 1003 at 10 inout protocol ipv6-icmp icmptype 135 from any to any accept;
      rule 1002 at 11 inout protocol udp from any to any port 67 accept;
      rule 1002 at 12 inout protocol udp from any to any port 68 accept;
      rule 1001 at 13 inout protocol any from any to any accept;
    }
    
    ruleset domain-c33_L2 {
      # Filter rules
      rule 1004 at 1 inout ethertype any from any to any accept;
    
  12. Ejecute el comando show dfw host hostID filter filterID addrsets.

    Por ejemplo:

    # show dfw host host-28 filter nic-342296-eth2-vmware-sfw.2 addrsets 
    
    addrset dst1011 {
    ip 172.16.10.10,
    ip 172.16.10.11,
    ip 172.16.10.12,
    ip fe80::250:56ff:feae:3e3d,
    ip fe80::250:56ff:feae:f86b,
    }
    addrset ip-securitygroup-10 {
    ip 172.16.10.11,
    ip 172.16.10.12,
    ip fe80::250:56ff:feae:3e3d,
    ip fe80::250:56ff:feae:f86b,
    }
    addrset ip-securitygroup-11 {
    ip 172.16.20.11,
    ip fe80::250:56ff:feae:23b9,
    }
    addrset ip-securitygroup-12 {
    ip 172.16.30.11,
    ip fe80::250:56ff:feae:d42b,
    }
    addrset src1013 {
    ip 172.16.10.12,
    ip 172.17.10.11,
    ip fe80::250:56ff:feae:cf88,
    ip fe80::250:56ff:feae:f86b,
    }
    
  13. Si realizó correctamente cada uno de los pasos anteriores para solucionar los problemas y no puede publicar reglas en el firewall para las máquinas virtuales, ejecute una sincronización forzada a nivel de host a través de la UI de NSX Manager o a través de la llamada a la API de REST siguiente.
    URL : [https:]https://<nsx-mgr-ip>/api/4.0/firewall/forceSync/<host-id>
    HTTP Method : POST 
    Headers , 
    Authorization : base64encoded value of username password
    Accept : application/xml
    Content-Type : application/xml
    

Resultados

Notas:

  • Asegúrese de que VMware Tools se ejecuta en las máquinas virtuales si las reglas del firewall no utiliza direcciones IP. Para obtener más información, consulte https://kb.vmware.com/kb/2084048.

    VMware NSX 6.2.0 incorpora la opción para detectar la dirección IP de las máquinas virtuales con intromisión DHCP o intromisión ARP. Estos mecanismos de detección nuevos permiten que NSX aplique las reglas de seguridad basadas en dirección IP en máquinas virtuales que no tienen VMware Tools instalado. Si desea obtener más información, consulte las notas de la versión NSX 6.2.0.

    DFW se activa en cuanto se complete el proceso de preparación del host. Si una máquina virtual no necesita en absoluto el servicio de DFW, se puede agregar a la lista de exclusión de funcionalidad (por defecto, NSX Manager, los controladores NSX y las puertas de enlace de servicios Edge se excluyen automáticamente de la función del DFW). El acceso a vCenter Server puede bloquearse al crear una regla Negar todo (Deny all) en el DFW. Para obtener más información, consulte https://kb.vmware.com/kb/2079620.

  • Cuando sea necesario solucionar problemas del distributed firewall (DFW) de VMware NSX 6X con VMware Technical Support, son necesarios los siguientes datos:

    • La salida del comando show dfw host hostID summarize-dvfilter de cada host ESXi del clúster.

    • La configuración del distributed firewall que se obtiene en la pestaña Redes y seguridad > Firewall > General (Networking and Security > Firewall > General) y hacer clic en Exportar configuración (Export Configuration). Estos pasos exportan la configuración del distributed firewall a formato XML.

    • Registros de NSX Manager. Para obtener más información, consulte https://kb.vmware.com/kb/2074678.

    • Registros de vCenter Server. Para obtener más información, consulte https://kb.vmware.com/kb/1011641.