{"id":107,"date":"2026-08-28T10:28:00","date_gmt":"2026-08-28T15:28:00","guid":{"rendered":"https:\/\/tecno-experts.com\/fransilvablog\/?p=107"},"modified":"2026-08-27T21:22:25","modified_gmt":"2026-08-28T02:22:25","slug":"habilitar-promiscuous-mode-en-una-vm-desde-esxi-shell","status":"publish","type":"post","link":"https:\/\/tecno-experts.com\/fransilvablog\/nsx\/habilitar-promiscuous-mode-en-una-vm-desde-esxi-shell\/","title":{"rendered":"Habilitar Promiscuous Mode en una VM desde ESXi Shell"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Introducci\u00f3n<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">En este post vamos a revisar un caso pr\u00e1ctico relacionado con <strong>L2VPN sobre una plataforma IaaS con VMware NSX<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El requerimiento era extender una red Layer 2 utilizando una soluci\u00f3n L2VPN de terceros. Para funcionar correctamente, las VMs encargadas del t\u00fanel necesitaban permitir:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Promiscuous Mode<\/li>\n\n\n\n<li>MAC Address Changes<\/li>\n\n\n\n<li>Forged Transmits<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando trabajamos con un portgroup tradicional podemos modificar estas pol\u00edticas desde vSphere. Pero cuando la VM est\u00e1 conectada directamente a un <strong>segmento l\u00f3gico de NSX<\/strong>, tenemos otra alternativa: aplicar estas opciones directamente sobre el <strong>DVPort de la VM desde ESXi Shell<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vamos al procedimiento.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">El escenario<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">La plataforma utiliza <strong>NSX para la segmentaci\u00f3n l\u00f3gica de las redes de organizaci\u00f3n<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La soluci\u00f3n L2VPN de terceros necesitaba procesar tr\u00e1fico con diferentes direcciones MAC, por lo que requer\u00eda habilitar las pol\u00edticas de seguridad Layer 2 mencionadas anteriormente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La soluci\u00f3n permiti\u00f3 levantar el t\u00fanel, pero durante las pruebas apareci\u00f3 un problema de red.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En los logs de ESXi se observ\u00f3:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;vob.net.dvport.uplink.transition.down]\nUplink: vmnic3 is down.\n0 uplinks up.\nFailed criteria: 128<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Despu\u00e9s del an\u00e1lisis se determin\u00f3 que parte del tr\u00e1fico estaba llegando nuevamente hacia la interfaz f\u00edsica del servidor, provocando un comportamiento de loop y afectando la conectividad de la NIC.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La soluci\u00f3n implementada en ese momento fue aislar este tr\u00e1fico mediante un portgroup espec\u00edfico. Adem\u00e1s, las VMs involucradas deb\u00edan mantenerse en el mismo host mediante reglas de afinidad.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En mi blog anterior te hablo m\u00e1s sobre este tema: <a href=\"https:\/\/tecno-experts.com\/fransilvablog\/vmware\/troubleshooting-l2vpn-vmnic-flapping-y-failed-criteria-128-en-una-plataforma-iaas\/\" data-type=\"link\" data-id=\"https:\/\/tecno-experts.com\/fransilvablog\/vmware\/troubleshooting-l2vpn-vmnic-flapping-y-failed-criteria-128-en-una-plataforma-iaas\/\">https:\/\/tecno-experts.com\/fransilvablog\/vmware\/troubleshooting-l2vpn-vmnic-flapping-y-failed-criteria-128-en-una-plataforma-iaas\/<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pero existe otra situaci\u00f3n que vale la pena revisar:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><em>\u00bfQu\u00e9 hacemos si la VM est\u00e1 conectada directamente a un segmento l\u00f3gico de NSX?<\/em><\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">VM conectada a un segmento l\u00f3gico de NSX<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Broadcom documenta la posibilidad de modificar las pol\u00edticas Layer 2 directamente sobre el <strong>DVPort correspondiente a una VM<\/strong> utilizando <code>nsxdp-cli<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El procedimiento se realiza directamente sobre el host ESXi donde est\u00e1 ejecut\u00e1ndose la VM.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. Identificar d\u00f3nde est\u00e1 ejecut\u00e1ndose la VM<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Desde vCenter identificamos el host ESXi donde se encuentra actualmente la VM.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Luego nos conectamos por SSH<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">2. Identificar el puerto de la VM<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Ejecutamos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nsxcli -c get ports<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">La salida mostrar\u00e1 informaci\u00f3n similar a:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>PortNum   Switch        Client          DVSPort\n-------   ------------  --------------  ------------------------------------\n67108885  DvsPortset-0  VM-L2VPN.eth0   xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Debemos localizar nuestra VM.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por ejemplo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>VM-L2VPN.eth0<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Y registrar principalmente:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DVSPort\nDVS<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Otra opci\u00f3n documentada por Broadcom para identificar el puerto es:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>net-stats -l | grep -i &lt;NOMBRE_VM&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ejemplo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>net-stats -l | grep -i VM-L2VPN<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">3. Revisar la configuraci\u00f3n actual<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Antes de cambiar cualquier par\u00e1metro debemos revisar c\u00f3mo est\u00e1 configurado actualmente el puerto.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ejecutamos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nsxdp-cli vswitch l2sec get --dvport &lt;DVPORT_UUID> -dvs &lt;DVS_NAME><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Por ejemplo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nsxdp-cli vswitch l2sec get --dvport xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -dvs NSX-VDS<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">En una configuraci\u00f3n restrictiva podemos encontrar:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>deny promiscuous\ndeny mac change\ndeny forged frames<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Este es nuestro <strong>precheck<\/strong> y tambi\u00e9n la referencia que utilizaremos en caso de necesitar rollback.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">4. Habilitar las pol\u00edticas requeridas<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Para el escenario L2VPN de este caso necesitamos habilitar:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Promiscuous Mode\nMAC Address Changes\nForged Transmits<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ejecutamos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nsxdp-cli vswitch l2sec set --dvport &lt;DVPORT_UUID&gt; -dvs &lt;DVS_NAME&gt; --mac-change --forge-src --promisc<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ejemplo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nsxdp-cli vswitch l2sec set --dvport xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -dvs NSX-VDS --mac-change --forge-src --promisc<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Los par\u00e1metros representan:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>--promisc      Promiscuous Mode\n--mac-change   MAC Address Changes\n--forge-src    Forged Transmits<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Si la aplicaci\u00f3n necesita \u00fanicamente una de estas opciones, no es obligatorio habilitar las tres.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por ejemplo, \u00fanicamente Promiscuous Mode:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nsxdp-cli vswitch l2sec set --dvport &lt;DVPORT_UUID&gt; -dvs &lt;DVS_NAME&gt; --promisc<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">5. Validar el cambio<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Ejecutamos nuevamente:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nsxdp-cli vswitch l2sec get --dvport &lt;DVPORT_UUID&gt; -dvs &lt;DVS_NAME&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Para el escenario completo deber\u00edamos visualizar:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>allow promiscuous\nallow mac change\nallow forged frames<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Con esto podemos comenzar las pruebas de conectividad de la aplicaci\u00f3n L2VPN.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">6. Validar el puerto y el uplink<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Tambi\u00e9n podemos revisar c\u00f3mo est\u00e1 conectado el puerto dentro del datapath de NSX:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nsxdp-cli vswitch instance list<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Buscamos nuestra VM:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Client          PortID      DVPortID           MAC                  Uplink\nVM-L2VPN.eth0   67108885    xxxxxxxx-...       00:50:56:xx:xx:xx   vmnic1<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">Importante: el cambio no es persistente<\/mark><\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Este punto es cr\u00edtico.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Broadcom indica que esta modificaci\u00f3n realizada mediante <code>nsxdp-cli<\/code> sobre el puerto de la VM es <strong>no persistente<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Puede perderse despu\u00e9s de:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>vMotion\nVM Power Cycle\nReinicio del host ESXi<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Por lo tanto, despu\u00e9s de cualquiera de estos eventos debemos volver a validar:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nsxdp-cli vswitch l2sec get --dvport &lt;DVPORT_UUID&gt; -dvs &lt;DVS_NAME&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Si necesitamos una configuraci\u00f3n permanente, debemos evaluar una configuraci\u00f3n soportada desde NSX\/vCenter o revisar el dise\u00f1o de la soluci\u00f3n.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\u00bfQu\u00e9 debemos tener en cuenta?<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Habilitar Promiscuous Mode no deber\u00eda convertirse en la soluci\u00f3n autom\u00e1tica para cualquier problema Layer 2.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Antes de aplicarlo debemos entender qu\u00e9 necesita realmente la aplicaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En este caso concreto la soluci\u00f3n L2VPN de terceros requer\u00eda:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Promiscuous Mode\nMAC Address Changes\nForged Transmits<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Pero cada aplicaci\u00f3n puede tener requerimientos diferentes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tambi\u00e9n debemos recordar que permitir estas pol\u00edticas modifica la forma en que el switch virtual procesa las direcciones MAC y el tr\u00e1fico recibido por la VM.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por eso lo correcto es habilitarlas \u00fanicamente sobre el puerto que realmente las necesita.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Conclusi\u00f3n<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Este caso deja algo bastante claro: cuando trabajamos con <strong>L2VPN, NSX y appliances de terceros<\/strong>, debemos entender exactamente c\u00f3mo est\u00e1 circulando el tr\u00e1fico Layer 2.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si la VM est\u00e1 conectada directamente a un segmento l\u00f3gico de NSX, podemos utilizar <code>nsxdp-cli<\/code> desde ESXi para modificar las pol\u00edticas Layer 2 sobre su DVPort espec\u00edfico.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Eso s\u00ed: debemos considerar este procedimiento como un <strong>override no persistente<\/strong> y documentar cualquier dependencia relacionada con vMotion, reinicios o power cycles.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En networking virtual, muchas veces el problema no es simplemente que un paquete no llegue.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La clave est\u00e1 en entender por d\u00f3nde est\u00e1 pasando.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Referencias<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><a href=\"https:\/\/knowledge.broadcom.com\/external\/article\/418915\/enabling-the-promiscuous-mode-mac-addres.html\">Broadcom KB 418915<\/a><\/strong><br>Enabling Promiscuous Mode, MAC Address Change, Forged Transmits, and MAC Learning on a VM.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><a href=\"https:\/\/knowledge.broadcom.com\/external\/article\/394260\/configuring-l2-port-security-settings-on.html\">Broadcom KB 394260<\/a><\/strong><br>Configuraci\u00f3n de pol\u00edticas de seguridad Layer 2 sobre puertos NSX mediante ESXi CLI.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introducci\u00f3n En este post vamos a revisar un caso pr\u00e1ctico relacionado con L2VPN sobre una plataforma IaaS con VMware NSX. El requerimiento era extender una red Layer 2 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":114,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[13,98,91,99,97,37,96],"class_list":["post-107","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-nsx","tag-esxi","tag-forged-transmits","tag-l2vpn","tag-mac-address-changes","tag-promiscuous-mode","tag-troubleshooting","tag-vmware-nsx"],"_links":{"self":[{"href":"https:\/\/tecno-experts.com\/fransilvablog\/wp-json\/wp\/v2\/posts\/107","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tecno-experts.com\/fransilvablog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tecno-experts.com\/fransilvablog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tecno-experts.com\/fransilvablog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tecno-experts.com\/fransilvablog\/wp-json\/wp\/v2\/comments?post=107"}],"version-history":[{"count":4,"href":"https:\/\/tecno-experts.com\/fransilvablog\/wp-json\/wp\/v2\/posts\/107\/revisions"}],"predecessor-version":[{"id":117,"href":"https:\/\/tecno-experts.com\/fransilvablog\/wp-json\/wp\/v2\/posts\/107\/revisions\/117"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tecno-experts.com\/fransilvablog\/wp-json\/wp\/v2\/media\/114"}],"wp:attachment":[{"href":"https:\/\/tecno-experts.com\/fransilvablog\/wp-json\/wp\/v2\/media?parent=107"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tecno-experts.com\/fransilvablog\/wp-json\/wp\/v2\/categories?post=107"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tecno-experts.com\/fransilvablog\/wp-json\/wp\/v2\/tags?post=107"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}