Dieser Abschnitt enthält Informationen zum Verständnis und zur Fehlerbehebung von VMware NSX 6.x Distributed Firewall (DFW).

Problem

Die Veröffentlichung von Distributed Firewall-Regeln scheitert.

Die Aktualisierung von Distributed Firewall-Regeln scheitert.

NSX Distributed Firewall ist eine im Hypervisor-Kernel eingebettete Firewall, die eine Anzeige und Steuerung für virtualisierte Arbeitslasten und Netzwerke bietet. Sie können Zugriffssteuerungsrichtlinien auf der Grundlage von VMware vCenter-Objekten wie Datencenter und Cluster, Namen und Tags virtueller Maschinen, Netzwerkkonstrukte wie IP/VLAN/VXLAN-Adressen sowie der Benutzergruppenidentität aus Active Directory erstellen. Es wird jetzt eine konsistente Zugriffssteuerungsrichtlinie erzwungen, wenn eine virtuelle Maschine mithilfe von vMotion über physische Hosts hinweg verschoben wird, ohne dass Firewallregeln neu erstellt werden müssen. Da die Distributed Firewall im Hypervisor eingebettet ist, liefert sie einen Durchsatz, der nahezu der Verbindungsgeschwindigkeit entspricht und so eine größere Konsolidierung der Arbeitslast auf physischen Servern ermöglicht. Die verteilte Eigenschaft der Firewall liefert eine Architektur mit horizontaler Skalierung, die automatisch die Firewall-Kapazitäten erweitert, wenn zusätzliche Hosts zu einem Datencenter hinzugefügt werden.

Die NSX Manager-Web-Anwendung und die NSX-Komponenten auf den ESXi-Hosts kommunizieren über den RabbitMQ-Broker-Vorgang miteinander, der auf derselben virtuellen Maschine wie die NSX Manager-Web-Anwendung ausgeführt wird. Hierzu wird das Kommunikationsprotokoll AMQP (Advanced Message Queueing Protocol) verwendet. Der Kanal wird durch SSL geschützt. Auf einem ESXi-Host richtet der VSFWD-Vorgang (vShield Firewall Daemon) die SSL-Verbindung mit dem Broker ein, verwaltet diese SSL-Verbindung und sendet bzw. empfängt Nachrichten im Namen anderer Komponenten, die über IPC mit diesem Vorgang kommunizieren.

Überprüfen Sie, ob die einzelnen unten angegebenen Fehlerbehebungsschritte für Ihre Umgebung gelten. Jeder Schritt enthält Anleitungen oder einen Link zu einem Dokument, mit denen Sie mögliche Ursachen beseitigen und korrigierende Maßnahmen wie erforderlich vornehmen können. Die Schritte werden in der für die Isolierung des Problems und für die Ermittlung der entsprechenden Lösung am geeignetsten erscheinenden Reihenfolge aufgeführt. Versuchen Sie nach jedem Schritt erneut, die Distributed Firewall-Regeln zu aktualisieren bzw. zu veröffentlichen.

Prozedur

  1. Überprüfen Sie, ob die Voraussetzungen zur Ausführung von Distributed Firewall (DFW) erfüllt sind.
    • VMware vCenter Server 5.5

    • VMware ESXi 5.1 oder ESXi 5.5

    • VMware NSX 6.0 und höher

  2. Stellen Sie sicher, dass die DFW-VIBs auf jedem ESXi-Host im Cluster erfolgreich installiert worden sind. Dazu führen Sie auf jedem ESXi-Host im Cluster den nachfolgend aufgeführten Befehl aus.

    Beispiel:

    # esxcli software vib list | grep esx-vsip
    
    esx-vsip                       5.5.0-0.0.2318233  VMware  VMwareCertified   2015-01-24
    
    # esxcli software vib list | grep dvfilter
    
    esx-dvfilter-switch-security   5.5.0-0.0.2318233  VMware  VMwareCertified   2015-01-24
    
  3. Überprüfen Sie, ob auf den ESXi-Hosts der vShield-Stateful-Firewall-Dienst ausgeführt wird.

    Beispiel:

    # /etc/init.d/vShield-Stateful-Firewall status
    
    vShield-Stateful-Firewall is running
  4. Überprüfen Sie, ob der Nachrichtenbus ordnungsgemäß mit dem NSX Manager kommuniziert.

    Dieser Vorgang wird automatisch vom Watchdog-Skript gestartet, das den Vorgang auch neu startet, wenn er aus einem unbekannten Grund beendet wird. Führen Sie diesen Befehl auf jedem ESXi-Host im Cluster aus.

    Beispiel:

    # 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 
    
  5. Überprüfen Sie, ob Port 5671 in der Firewallkonfiguration für die Kommunikation geöffnet ist.

    Dieser Befehl stellt die VSFWD-Konnektivität zum RabbitMQ-Broker dar. Führen Sie diesen Befehl auf den ESXi-Hosts aus, um eine Liste der Verbindungen zwischen dem vsfwd-Vorgang auf dem ESXi-Host und dem NSX Manager anzuzeigen. Stellen Sie sicher, dass der Port 5671 in jeder externen Firewall der Umgebung für die Kommunikation geöffnet ist. Zudem sollten mindestens zwei Verbindungen an Port 5671 vorhanden sein. An Port 5671 können mehr Verbindungen bestehen, da auf dem ESXi-Host virtuelle NSX Edge-Maschinen bereitgestellt sind, die auch Verbindungen mit dem RMQ-Broker herstellen.

    Beispiel:

    # 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
    
  6. Stellen Sie sicher, dass VSFWD konfiguriert ist.

    Dieser Befehl sollte die IP-Adresse des NSX Manager anzeigen.

    # esxcfg-advcfg -g /UserVars/RmqIpAddress
  7. Wenn Sie für diesen ESXi-Host ein Hostprofil verwenden, stellen Sie sicher, dass die RabbitMQ-Konfiguration nicht im Hostprofil festgelegt ist.
  8. Überprüfen Sie, ob die RabbitMQ-Anmeldedaten des ESXi-Hosts nicht mit denen von NSX Manager synchronisiert sind. Laden Sie die Tech-Support-Protokolle für NSX Manager herunter. Nachdem Sie alle Tech-Support-Protokolle für NSX Manager erfasst haben, suchen Sie in den Protokollen nach Einträgen folgender Art:

    Replace host-420 with the host-id of the suspect host (Host-420 durch Host-ID des verdächtigen Hosts ersetzen).

    PLAIN login refused: user 'uw-host-420' - invalid credentials.
  9. Wenn Sie solche Einträge in den Protokollen für den verdächtigen ESXi-Host finden, synchronisieren Sie den Nachrichtenbus erneut.

    Verwenden Sie zum erneuten Synchronisieren des Nachrichtenbus die REST-API. Erfassen Sie die Protokolle unmittelbar nach der erneuten Synchronisierung des Nachrichtenbus, um das Problem besser verstehen zu können.

    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>
  10. Verwenden Sie den Befehl export host-tech-support <host-id> scp <uid@ip:/path> zum Erfassen hostspezifischer Firewallprotokolle.

    Beispiel:

    nsxmgr# export host-tech-support host-28 scp Administrator@192.168.110.10
    Generating logs for Host: host-28...
    
  11. Überprüfen Sie mit dem Befehl show dfw host host-id summarize-dvfilter, ob die Firewallregeln auf einem Host bereitgestellt sind und auf die virtuellen Maschinen angewendet werden.

    In der Ausgabe zeigt der Eintrag module: vsip an, dass das DFW-Modul geladen wurde und ausgeführt wird. Der Eintrag name gibt die Firewall an, die auf jeder vNIC ausgeführt wird.

    Zur Ermittlung der Host-IDs können Sie mit dem Befehl show dfw cluster all die IDs der Cluster-Domäne und anschließend mit dem Befehl show dfw cluster domain-id die Host-IDs abrufen.

    Beispiel:

    # 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
    
  12. Führen Sie den Befehl show dfw host hostID filter filterID rules aus.

    Beispiel:

    # 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;
    
  13. Führen Sie den Befehl show dfw host hostID filter filterID addrsets aus.

    Beispiel:

    # 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,
    }
    
  14. Wenn Sie die obigen Schritte zur Fehlerbehebung durchgeführt haben und dennoch keine Firewallregeln auf den virtuellen Hostmaschinen veröffentlichen können, erzwingen Sie über die Benutzeroberfläche von NSX Manager oder über den nachfolgend aufgeführten REST-API-Aufruf eine Synchronisierung auf Hostebene.
    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
    

Ergebnisse

Anmerkungen:

  • Stellen Sie sicher, dass VMware Tools auf den virtuellen Maschinen ausgeführt wird, wenn in den Firewallregeln keine IP-Adressen verwendet werden. Weitere Informationen finden Sie unter https://kb.vmware.com/kb/2084048.

    In VMware NSX 6.2.0 wurde die Option zur Erkennung der IP-Adresse der VM mithilfe von DHCP-Snooping oder ARP-Snooping eingeführt. Mit diesen neuen Erkennungsmechanismen kann NSX die auf IP-Adressen basierten Sicherheitsregeln auf virtuellen Maschinen erzwingen, auf denen VMware Tools nicht installiert ist. Weitere Informationen finden Sie in den Versionshinweisen zu NSX 6.2.0.

    Die DFW wird aktiviert, sobald der Hostvorbereitungsvorgang abgeschlossen ist. Wenn eine virtuelle Maschine grundsätzlich keinen DFW-Dienst benötigt, kann sie der Ausschlussliste hinzugefügt werden (standardmäßig werden NSX Manager, NSX Controller und Edge Services Gateways automatisch von der DFW-Funktion ausgeschlossen). Es besteht die Möglichkeit, dass der Zugriff auf vCenter Server nach dem Erstellen einer Deny-All-Regel (Alles-Verweigern-Regel) in der DFW blockiert wird. Weitere Informationen finden Sie unter https://kb.vmware.com/kb/2079620.

  • Wenn Sie für die Fehlerbehebung der VMware NSX 6.x Distributed Firewall (DFW) Unterstützung vom technischen Support von VMware benötigen, ist Folgendes erforderlich:

    • Ausgabe des Befehls show dfw host hostID summarize-dvfilter auf jedem ESXi-Host im Cluster.

    • Distributed Firewall-Konfiguration der Registerkarte Networking and Security > Firewall > Allgemein (Networking and Security > Firewall > General) durch Klicken auf Konfiguration exportieren (Export Configuration). Damit wird die Distributed Firewall-Konfiguration in ein XML-Format exportiert.

    • NSX Manager-Protokolle. Weitere Informationen finden Sie unter https://kb.vmware.com/kb/2074678.

    • vCenter Server-Protokolle. Weitere Informationen finden Sie unter https://kb.vmware.com/kb/1011641.