{"id":1065,"date":"2021-02-28T10:57:26","date_gmt":"2021-02-28T10:57:26","guid":{"rendered":"https:\/\/www.mainmind.com\/blog\/?p=1065"},"modified":"2021-04-22T08:45:43","modified_gmt":"2021-04-22T08:45:43","slug":"comunicaciones-dcom","status":"publish","type":"post","link":"https:\/\/www.mainmind.com\/blog\/comunicaciones-dcom\/","title":{"rendered":"Comunicaciones DCOM"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">El protocolo DCOM (Modelo de Objetos Componentes Distribuidos) permite comunicaci\u00f3n directa entre programas, anteriormente conocido como \u00abRed OLE\u00bb, un precedente a lo que hoy conocer\u00edamos como servicios web. Con software legacy todav\u00eda encontramos este tipo de comunicaci\u00f3n, especialmente en entornos industriales, puede ser algo complicado buscar el origen de la perdida de conexi\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Podemos utilizar <a rel=\"noreferrer noopener\" href=\"https:\/\/1drv.ms\/u\/s!AsYEUc1fqfVgjKh3iEkoRVa4V0fVwQ?e=cckDnP\" data-type=\"URL\" data-id=\"https:\/\/1drv.ms\/u\/s!AsYEUc1fqfVgjKh3iEkoRVa4V0fVwQ?e=cckDnP\" target=\"_blank\">DCOMTest de Microsoft<\/a> en entornos Windows 2000\/XP\/7\/10\/2003 para comprobar si tenemos configurado el acceso correctamente. Este peque\u00f1o programa de prueba, registrar\u00e1 una clase DCOM ejecutando el archivo de registro en ambos equipos.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p class=\"wp-block-paragraph\">Iniciaremos en equipo 1 \u00abtstSrvr.exe\u00bb que se quedar\u00e1 a la espera y en el equipo 2 ejecutamos \u00abTstClnt.exe NOMBRE_EQUIPO1\u00bb que intentar\u00e1 realizar una conexi\u00f3n b\u00e1sica mediante DCOM:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"361\" height=\"112\" src=\"https:\/\/www.mainmind.com\/blog\/wp-content\/uploads\/2021\/DCOM\/tstclnt.jpg\" alt=\"\" class=\"wp-image-1073\" srcset=\"https:\/\/www.mainmind.com\/blog\/wp-content\/uploads\/2021\/DCOM\/tstclnt.jpg 361w, https:\/\/www.mainmind.com\/blog\/wp-content\/uploads\/2021\/DCOM\/tstclnt-300x93.jpg 300w\" sizes=\"auto, (max-width: 361px) 100vw, 361px\" \/><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">En caso de obtener alg\u00fan error, nos aseguraremos que tenemos acceso mediante el nombre del equipo, IP&#8230; comprobando la resoluci\u00f3n de nombres (DNS, Netbios&#8230;) y revisaremos los permisos de los usuarios a las propiedades de acceso remoto\/local:<\/p>\n\n\n\n<figure class=\"wp-block-gallery columns-3 is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex\"><ul class=\"blocks-gallery-grid\"><li class=\"blocks-gallery-item\"><figure><img loading=\"lazy\" decoding=\"async\" width=\"400\" height=\"517\" src=\"https:\/\/www.mainmind.com\/blog\/wp-content\/uploads\/2021\/DCOM\/PC_protocolos.jpg\" alt=\"\" data-id=\"1068\" data-full-url=\"https:\/\/www.mainmind.com\/blog\/wp-content\/uploads\/2021\/DCOM\/PC_protocolos.jpg\" data-link=\"https:\/\/www.mainmind.com\/blog\/pc_protocolos\/\" class=\"wp-image-1068\" srcset=\"https:\/\/www.mainmind.com\/blog\/wp-content\/uploads\/2021\/DCOM\/PC_protocolos.jpg 400w, https:\/\/www.mainmind.com\/blog\/wp-content\/uploads\/2021\/DCOM\/PC_protocolos-232x300.jpg 232w\" sizes=\"auto, (max-width: 400px) 100vw, 400px\" \/><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><img loading=\"lazy\" decoding=\"async\" width=\"839\" height=\"546\" src=\"https:\/\/www.mainmind.com\/blog\/wp-content\/uploads\/2021\/DCOM\/PC_seguridad.png\" alt=\"\" data-id=\"1069\" data-full-url=\"https:\/\/www.mainmind.com\/blog\/wp-content\/uploads\/2021\/DCOM\/PC_seguridad.png\" data-link=\"https:\/\/www.mainmind.com\/blog\/pc_seguridad\/\" class=\"wp-image-1069\" srcset=\"https:\/\/www.mainmind.com\/blog\/wp-content\/uploads\/2021\/DCOM\/PC_seguridad.png 839w, https:\/\/www.mainmind.com\/blog\/wp-content\/uploads\/2021\/DCOM\/PC_seguridad-300x195.png 300w, https:\/\/www.mainmind.com\/blog\/wp-content\/uploads\/2021\/DCOM\/PC_seguridad-768x500.png 768w\" sizes=\"auto, (max-width: 839px) 100vw, 839px\" \/><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><img loading=\"lazy\" decoding=\"async\" width=\"400\" height=\"517\" src=\"https:\/\/www.mainmind.com\/blog\/wp-content\/uploads\/2021\/DCOM\/PC_propiedades.jpg\" alt=\"\" data-id=\"1070\" data-full-url=\"https:\/\/www.mainmind.com\/blog\/wp-content\/uploads\/2021\/DCOM\/PC_propiedades.jpg\" data-link=\"https:\/\/www.mainmind.com\/blog\/pc_propiedades\/\" class=\"wp-image-1070\" srcset=\"https:\/\/www.mainmind.com\/blog\/wp-content\/uploads\/2021\/DCOM\/PC_propiedades.jpg 400w, https:\/\/www.mainmind.com\/blog\/wp-content\/uploads\/2021\/DCOM\/PC_propiedades-232x300.jpg 232w\" sizes=\"auto, (max-width: 400px) 100vw, 400px\" \/><\/figure><\/li><\/ul><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">NOTA: estos cambios suelen requerir reiniciar los equipos con sistemas operativos m\u00e1s antiguos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si tenemos instalado y activado alg\u00fan tipo de firewall deberemos permitir el tr\u00e1fico TCP 135 para la conexi\u00f3n inicial DCOM, despu\u00e9s de este paso inicial se negocian los puertos de forma din\u00e1mica as\u00ed que deberemos asegurarnos que se permite, por ejemplo en Windows 10 podemos crear una regla de entrada personalizada para los puertos din\u00e1micos mediante RPC o bien fijar en el propio DCOM un rango diferente para trabajar:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.mainmind.com\/blog\/wp-content\/uploads\/2021\/DCOM\/firewall.jpg\" alt=\"\" class=\"wp-image-1074\" width=\"559\" height=\"455\" srcset=\"https:\/\/www.mainmind.com\/blog\/wp-content\/uploads\/2021\/DCOM\/firewall.jpg 714w, https:\/\/www.mainmind.com\/blog\/wp-content\/uploads\/2021\/DCOM\/firewall-300x244.jpg 300w\" sizes=\"auto, (max-width: 559px) 100vw, 559px\" \/><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Una vez solucionado el programa de prueba crear\u00e1 una instancia en el servidor:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"355\" height=\"63\" src=\"https:\/\/www.mainmind.com\/blog\/wp-content\/uploads\/2021\/DCOM\/tstclnt_ok.jpg\" alt=\"\" class=\"wp-image-1072\" srcset=\"https:\/\/www.mainmind.com\/blog\/wp-content\/uploads\/2021\/DCOM\/tstclnt_ok.jpg 355w, https:\/\/www.mainmind.com\/blog\/wp-content\/uploads\/2021\/DCOM\/tstclnt_ok-300x53.jpg 300w\" sizes=\"auto, (max-width: 355px) 100vw, 355px\" \/><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Si nuestra aplicaci\u00f3n continua con alg\u00fan problema m\u00e1s espec\u00edfico podemos habilitar el registro detallado en el visor de eventos, creando las claves DWORD en:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nHKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Ole\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Creamos: <a rel=\"noreferrer noopener\" href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/win32\/com\/activationfailurelogginglevel\" data-type=\"URL\" data-id=\"https:\/\/docs.microsoft.com\/en-us\/windows\/win32\/com\/activationfailurelogginglevel\" target=\"_blank\">ActivationFailureLoggingLevel<\/a> y <a rel=\"noreferrer noopener\" href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/win32\/com\/callfailurelogginglevel\" data-type=\"URL\" data-id=\"https:\/\/docs.microsoft.com\/en-us\/windows\/win32\/com\/callfailurelogginglevel\" target=\"_blank\">CallFailureLoggingLevel<\/a> ambas con valor a \u00ab1\u00bb<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"876\" height=\"363\" src=\"https:\/\/www.mainmind.com\/blog\/wp-content\/uploads\/2021\/DCOM\/arquitectura.jpg\" alt=\"\" class=\"wp-image-1081\" srcset=\"https:\/\/www.mainmind.com\/blog\/wp-content\/uploads\/2021\/DCOM\/arquitectura.jpg 876w, https:\/\/www.mainmind.com\/blog\/wp-content\/uploads\/2021\/DCOM\/arquitectura-300x124.jpg 300w, https:\/\/www.mainmind.com\/blog\/wp-content\/uploads\/2021\/DCOM\/arquitectura-768x318.jpg 768w\" sizes=\"auto, (max-width: 876px) 100vw, 876px\" \/><figcaption>Arquitectura DCOM<\/figcaption><\/figure><\/div>\n","protected":false},"excerpt":{"rendered":"<p>El protocolo DCOM (Modelo de Objetos Componentes Distribuidos) permite comunicaci\u00f3n directa entre programas, anteriormente conocido como \u00abRed OLE\u00bb, un precedente a lo que hoy conocer\u00edamos como servicios web. Con software legacy todav\u00eda encontramos este tipo de comunicaci\u00f3n, especialmente en entornos industriales, puede ser algo complicado buscar el origen de la perdida de conexi\u00f3n. Podemos utilizar [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1081,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[714,717,713,715,716],"class_list":["post-1065","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-networking","tag-dcom","tag-dcomtest","tag-kb259011","tag-red-ole","tag-rpc"],"_links":{"self":[{"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/posts\/1065","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/comments?post=1065"}],"version-history":[{"count":0,"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/posts\/1065\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/media\/1081"}],"wp:attachment":[{"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/media?parent=1065"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/categories?post=1065"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/tags?post=1065"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}