mac google configurar osx dns carbon

osx - google - configurar dns en mac



Encontrar la configuración del servidor DNS programáticamente en Mac OS X (5)

Tengo un código de cliente DNS multiplataforma que uso para hacer SMTP extremo a extremo y en Windows puedo encontrar las direcciones IP actuales del servidor DNS mirando en el registro. En la Mac, probablemente pueda utilizar el marco SystemConfiguration como se menciona en la primera respuesta, sin embargo, el método exacto de hacerlo no es inmediatamente obvio.

Por ejemplo, SCDynamicStoreCopyDHCPInfo devuelve algunos de los datos dinámicos relacionados con DHCP, pero no las direcciones del servidor DNS.


Puede leer en /etc/resolv.conf.


También están disponibles en /etc/resolv.conf


Puede usar el marco de configuración del sistema . Está en C.

Actualización: aparentemente el resto de la web es más difícil de usar de lo que pensaba. Busque la clave "State: / Network / Service / ServiceID / DNS" donde ServiceID es la ID del servicio.


Sé que ha pasado mucho tiempo desde que lo necesitabas, pero no hay nada peor que una vieja respuesta sin resolver. No puede acceder a ellos desde "/etc/resolv.conf" debido a problemas de permisos. Después de mucha búsqueda y un poco de suerte, descubrí que puedes obtenerlo a través de la función res_ninit ().

// Get native iOS System Resolvers res_ninit(&_res); res_state res = &_res; for (int i = 0; i < res->nscount; i++) { sa_family_t family = res->nsaddr_list[i].sin_family; int port = ntohs(res->nsaddr_list[i].sin_port); if (family == AF_INET) { // IPV4 address char str[INET_ADDRSTRLEN]; // String representation of address inet_ntop(AF_INET, & (res->nsaddr_list[i].sin_addr.s_addr), str, INET_ADDRSTRLEN); } else if (family == AF_INET6) { // IPV6 address char str[INET6_ADDRSTRLEN]; // String representation of address inet_ntop(AF_INET6, &(res->nsaddr_list [i].sin_addr.s_addr), str, INET6_ADDRSTRLEN); } } res_ndestroy(res);


Sé que es muy tarde para responder a esta pregunta, pero puede ser útil para los demás.

Este código ayudará a esta tarea ...

SCPreferencesRef _prefsDNS = SCPreferencesCreate(NULL, CFSTR("DNSSETTING"), NULL); CFArrayRef services = SCNetworkServiceCopyAll(_prefsDNS); if (services) { long count = CFArrayGetCount(services); for (int i = 0; i < count; i++) { service = CFArrayGetValueAtIndex(services, i); interface = SCNetworkServiceGetInterface(service); NSString *interfaceServiceID = (__bridge NSString*)SCNetworkServiceGetServiceID(service); CFStringRef primaryservicepath = CFStringCreateWithFormat(NULL,NULL,CFSTR("State:/Network/Service/%@/DNS"),interfaceServiceID); // NSLog(@"%@",primaryservicepath); SCDynamicStoreRef dynRef=SCDynamicStoreCreate(kCFAllocatorSystemDefault, CFSTR("DNSSETTING"), NULL, NULL); // NSLog(@"%@",dynRef); CFDictionaryRef dnskey = SCDynamicStoreCopyValue(dynRef,primaryservicepath); // NSLog(@"%@",dnskey); //dnskey will give you the DNS server address.