Después de usar `networksetup -setdnsservers Wi-Fi "8.8.8.8" "8.8.4.4"` ¿cómo los borro?

Estoy buscando escribir un cambio de servidor DNS temporal para anular la respuesta de DHCP que recibo de la red. He descubierto que puedo usar networksetup, pero una vez que hayamos terminado las pruebas. Antes de pasar a producción, creo que debería saber cómo deshacer esto.

¿Cómo puedo crear una secuencia de comandos para borrar estos cambios y restaurar la configuración que proporciona la red ahora como si nunca hubiera ejecutado la siguiente secuencia de comandos?

networksetup -setdnsservers Wi-Fi "8.8.8.8" "8.8.4.4"

No es factible guardar la configuración anterior y estoy buscando eliminar la configuración para que los nuevos valores reales puedan recuperarse de la red en lugar de guardar la configuración anterior para no guardar un valor anterior que es ya no es correcto.

Básicamente, estoy buscando ipconfig /renewen macOS.

Vine aquí buscando una manera de restablecer los servidores DNS a los valores predeterminados. Para que conste, lo que estaba buscando está escrito networksetup -setdnsservers Wi-Fi Empty.

Respuestas (3)

Si solo le preocupa limpiar las entradas de DNS, la ayuda del comando le brinda instrucciones sobre qué hacer:

Usage: networksetup -setdnsservers <networkservice> <dns1> [dns2] [...]
       Set the <networkservice> DNS servers to <dns1> [dns2] [...]. Any 
       number of dns servers can be specified. Specify "Empty" for <dns1> 
       to clear all DNS entries.

En mi caso

sudo networksetup -setdnsservers Wi-Fi "Empty"
  • Cree un nuevo servicio de red con la interfaz respectiva (por ejemplo, en1 = AirPort):

    sudo networksetup -createnetworkservice Wi-Fi2 en1

  • Elimine el que tiene la configuración de DNS personalizada:

    sudo networksetup -removenetworkservice Wi-Fi

  • Cambie el nombre del nuevo servicio de red al nombre original:

    sudo networksetup -renamenetworkservice Wi-Fi2 Wi-Fi

En mi entorno, el nuevo servicio obtuvo DHCP y su nueva configuración automáticamente. Es posible que deba configurarlo sudo networksetup -setdhcp Wi-Fiexplícitamente o mirar la respuesta de DHCP para la interfaz y analizar las direcciones IP de DNS proporcionadas ipconfig getpacket en1.

Ahora eso es elegante: no es necesario eliminar una configuración si la interfaz puede ser desechable. Los siguientes pasos son: tendré que probar si esto es confiable cuando lo escribamos de forma remota, pero probablemente no sea más peligroso que mi configuración de "prueba".
Se me ocurrió este pequeño alias de bash basado en esta respuesta: alias bouncewifi="sudo networksetup -createnetworkservice Wi-Fi2 $(networksetup -listallhardwareports|grep -A1 Wi-Fi|fgrep Device|awk '{print $2}') && sudo networksetup -removenetworkservice Wi-Fi && sudo networksetup -renamenetworkservice Wi-Fi2 Wi-Fi" Dado que mi Wi-Fi generalmente es en0 y no en1, usé la configuración de red para averiguar en qué dispositivo estaba el Wi-Fi actual y luego ejecuté el 3 comandos anteriores en orden según las condiciones de salida del comando anterior. Esto debería ser bastante seguro de hacer de forma remota.
En mi humilde opinión, crear un nuevo servicio de red cada vez que haga esto puede tener muchos efectos secundarios. ¿Creo que la nueva interfaz tendrá que volver a negociar DHCP cada vez? También es muy habitual, así que temo otros efectos secundarios previstos. Para cambiar temporalmente la configuración de DNS y luego restaurarla, preparé un pequeño script zsh/bash que hace eso aquí: gist.github.com/varenc/388fa10c68002e0d59c67d1b52492f79 Estableciendo un trabajo de fondo inactivo para restaurar el DNS después de una cierta cantidad de tiempo y verificar en busca de duplicados y los elimina según sea necesario.

Simplemente vaya a Preferencias del sistema y siga los pasos en mis capturas de pantalla.

paso 1: ingrese la descripción de la imagen aquí

paso 2: ingrese la descripción de la imagen aquí

Lo siento por las capturas de pantalla alemanas.

una vez que haya eliminado todos los servidores de nombres configurados manualmente, Mac OS volverá a utilizar los servidores de nombres proporcionados por DHCP.

esta pregunta es sobre secuencias de comandos, por lo que arreglar manualmente a través de la interfaz de usuario realmente no ayuda. Aunque es bueno saberlo. Simplemente usar el mágico networksetup -setdnsservers NetServiceName "Empty"es la solución cli correcta.