with una servidor obtener nombre net maquina how equipo direccion cliente asp address c# .net dns wmi

c# - una - Obtenga todas las direcciones IP asignadas a un servidor



obtener ip del servidor c# (2)

Encontré un fragmento de código en esta respuesta: Obtener la dirección IP en una aplicación de consola

using System; using System.Net; namespace ConsoleTest { class Program { static void Main() { String strHostName = string.Empty; // Getting Ip address of local machine... // First get the host name of local machine. strHostName = Dns.GetHostName(); Console.WriteLine("Local Machine''s Host Name: " + strHostName); // Then using host name, get the IP address list.. IPHostEntry ipEntry = Dns.GetHostEntry(strHostName); IPAddress[] addr = ipEntry.AddressList; for (int i = 0; i < addr.Length; i++) { Console.WriteLine("IP Address {0}: {1} ", i, addr[i].ToString()); } Console.ReadLine(); } } }

Este código funciona bien cuando lo ejecuto localmente para obtener las direcciones IP de mi computadora. Lo que intento hacer es usar el código para obtener las direcciones IP en un servidor de mi red. Así que básicamente intenté reemplazar strHostName = Dns.GetHostName (); con strHostName = "myServerName"; pero solo devuelve una IP. Cuando ejecuto el programa en el servidor, obtengo todas las direcciones IP asignadas a ese servidor. El objetivo es ejecutar el programa en mi computadora, leer los nombres de los servidores de una tabla de base de datos para obtener las direcciones IP en más de 100 servidores. Estoy tratando de evitar tener que iniciar sesión en cada servidor y ejecutar el programa en cada uno de los servidores para obtener las direcciones IP.

Es bastante interesante que el código funcione bien para "www.google.com": ¿está relacionado este servidor o es un problema de seguridad?

Antes de que pueda comenzar a obtener datos de la base de datos, necesito que el código funcione para un servidor :) Espero que eso lo explique mejor. ¡Gracias!


¿Confunde la diferencia entre lo que DNS dice sobre el nombre que está tratando de resolver usando esos métodos, en lugar de descubrir qué direcciones IP están realmente vinculadas a la pila del protocolo TCP / IP que se ejecuta en la máquina específica que le interesa? Si desea saber las direcciones IP para las que está configurada la máquina, independientemente de lo que esté o no registrado en DNS, le recomendamos que consulte WMI para enumerar las direcciones configuradas en la máquina.

Ver artículo: WMI Query para obtener la dirección IP, nombre de dominio, versión del sistema operativo

En el código anterior, simplemente le está preguntando a la máquina local en la que se está ejecutando el código, para usar su resolución de DNS configurada y le diga qué entradas existen como registros DNS para el nombre que está utilizando para consultar. Es por eso que puede obtener un valor cuando intenta hacer una consulta para algo como www.google.com. Es porque simplemente busca un nombre en DNS y dado que se trata de un nombre públicamente reconocible, cualquier servidor DNS configurado correctamente podrá informar un valor válido.

Esto es muy diferente de lo que las direcciones IP pueden estar vinculadas al servidor. Por ejemplo, piense en un servidor sentado detrás de un firewall. El servidor podría estar usando Direcciones IP que son locales a la red interna que están asignadas a direcciones IP de acceso público en el firewall. En ese caso, las direcciones IP que conoce el servidor son completamente diferentes de las direcciones IP públicas que se mostrarían en sus correspondientes entradas de DNS.


Podría ser que las otras direcciones IP estén siendo excluidas del DNS a propósito por el servidor. Un buen ejemplo de esta funcionalidad se puede encontrar en este artículo de KB (975808) .

Pruebe GetHostAddress() y verifique que obtenga el mismo resultado. Ver MSDN: gethostaddress ()

De lo contrario, es posible que desee buscar otros métodos para consultar las direcciones IP.