La configuración de proxy a nivel de sistema en macOS dirige todo el tráfico de red de las aplicaciones que respetan la configuración de proxy del sistema a través de un servidor proxy especificado, generalmente administrado a través de Ajustes del Sistema o la utilidad de línea de comandos networksetup.
macOS proporciona un mecanismo centralizado para configurar los ajustes de proxy que la mayoría de las aplicaciones, incluidos los navegadores web (Safari, Chrome, Firefox por defecto), las herramientas de línea de comandos (curl, wget) y otro software con capacidad de red, adoptarán automáticamente. Esto garantiza un comportamiento de red consistente en todo el sistema operativo sin necesidad de configuración por aplicación.
Métodos de Configuración
Hay dos métodos principales para configurar proxies a nivel de sistema en macOS:
- Interfaz Gráfica de Usuario (GUI): Utilizando la aplicación Ajustes del Sistema. Esto es adecuado para configuraciones interactivas y únicas.
- Interfaz de Línea de Comandos (CLI): Empleando la utilidad
networksetup. Este método es preferido para scripting, automatización o administración remota.
Configuración GUI: Ajustes del Sistema
Para configurar los ajustes de proxy a través de los Ajustes del Sistema de macOS:
- Abre Ajustes del Sistema.
- Navega a Red en la barra lateral.
- Selecciona la interfaz de red activa (p. ej., Wi-Fi, Ethernet) de la lista.
- Haz clic en el botón Detalles... para la interfaz seleccionada.
- En la nueva ventana, selecciona Proxies en la barra lateral.
Dentro del panel Proxies, hay varias opciones disponibles:
-
Configuración Automática de Proxy:
- Detección Automática de Proxy: Habilita la detección de ajustes de proxy a través del Protocolo de Detección Automática de Proxy Web (WPAD).
- Configuración Automática de Proxy: Especifica una URL a un archivo de Configuración Automática de Proxy (PAC).
-
Configuración Manual de Proxy:
- Proxy Web (HTTP): Configura un proxy HTTP para el tráfico web no cifrado.
- Proxy Web Seguro (HTTPS): Configura un proxy HTTPS (SSL/TLS) para el tráfico web cifrado.
- Proxy FTP: Configura un proxy para el Protocolo de Transferencia de Archivos.
- Proxy SOCKS: Configura un proxy SOCKS, que puede manejar varios tipos de tráfico de red.
- Proxy Gopher: (Heredado) Configura un proxy para el protocolo Gopher.
- Proxy de Streaming (RTSP/RTSP): Configura proxies para el Protocolo de Streaming en Tiempo Real.
Para cada tipo de proxy manual:
- Servidor: Introduce la dirección IP o el nombre de host del servidor proxy.
- Puerto: Introduce el número de puerto en el que escucha el servidor proxy.
- El servidor proxy requiere contraseña: Marca esta casilla si se requiere autenticación. Introduce el Nombre de usuario y la Contraseña.
Ajustes de Omisión de Proxy
El campo "Omitir la configuración de proxy para estos Hosts y Dominios" permite especificar destinos que no deben usar el proxy configurado. Introduce nombres de host, nombres de dominio o direcciones IP, separados por comas. Se admiten comodines (*) para la coincidencia de dominios.
Ejemplo:
*.local, 192.168.1.0/24, localhost, 127.0.0.1
Configuración CLI: networksetup
La utilidad de línea de comandos networksetup proporciona un control exhaustivo sobre los ajustes de red, incluidos los proxies. Opera sobre "servicios de red" que corresponden a las interfaces listadas en Ajustes del Sistema (p. ej., "Wi-Fi", "Ethernet").
Listar Servicios de Red
Antes de configurar, identifica el nombre exacto de tu servicio de red:
networksetup -listallnetworkservices
Ejemplo de salida:
An asterisk (*) denotes that a network service is disabled.
Wi-Fi
Ethernet
Bluetooth PAN
Thunderbolt Bridge
Usa el nombre exactamente como aparece (p. ej., "Wi-Fi").
Configurar Proxy HTTP/HTTPS
Para configurar un Proxy Web (HTTP) y un Proxy Web Seguro (HTTPS) para un servicio:
# Configurar proxy HTTP (dirección IP:puerto)
networksetup -setwebproxy "Wi-Fi" 192.168.1.100 8080
# Configurar proxy HTTPS (dirección IP:puerto)
networksetup -setsecurewebproxy "Wi-Fi" 192.168.1.100 8080
Para incluir autenticación:
# Configurar proxy HTTP con autenticación
networksetup -setwebproxy "Wi-Fi" 192.168.1.100 8080 username password
# Configurar proxy HTTPS con autenticación
networksetup -setsecurewebproxy "Wi-Fi" 192.168.1.100 8080 username password
Nota: Proporcionar credenciales directamente en la línea de comandos es generalmente inseguro, ya que pueden almacenarse en el historial del shell. Considera métodos alternativos como variables de entorno o Keychain para credenciales sensibles en scripts.
Configurar Proxy SOCKS
Para configurar un proxy SOCKS:
networksetup -setsocksfirewallproxy "Wi-Fi" 192.168.1.100 1080
Con autenticación (nota de seguridad similar a la anterior):
networksetup -setsocksfirewallproxy "Wi-Fi" 192.168.1.100 1080 username password
Deshabilitar Proxies
Para deshabilitar proxies específicos:
networksetup -setwebproxystate "Wi-Fi" off
networksetup -setsecurewebproxystate "Wi-Fi" off
networksetup -setsocksfirewallproxystate "Wi-Fi" off
Para deshabilitar todos los proxies manuales para un servicio:
networksetup -setwebproxystate "Wi-Fi" off
networksetup -setsecurewebproxystate "Wi-Fi" off
networksetup -setftpproxystate "Wi-Fi" off
networksetup -setsocksfirewallproxystate "Wi-Fi" off
# ... y así sucesivamente para otros tipos de proxy
Configurar Configuración Automática de Proxy (Archivo PAC)
Para especificar una URL de archivo PAC:
networksetup -setautoproxyurl "Wi-Fi" http://proxy.example.com/proxy.pac
Para habilitar la Detección Automática de Proxy (WPAD):
networksetup -setautoproxydiscovery "Wi-Fi" on
Configurar Dominios de Omisión de Proxy
Para configurar dominios que omiten el proxy:
networksetup -setproxybypassdomains "Wi-Fi" "*.local" "192.168.1.0/24" "localhost"
Los argumentos después del nombre del servicio son las entradas de omisión. Para borrar las entradas de omisión existentes:
networksetup -setproxybypassdomains "Wi-Fi" ""
Tipos de Proxy Explicados
| Tipo de Proxy | Protocolo Manejado | Descripción |
|---|---|---|
| Proxy Web (HTTP) | HTTP | Para tráfico web no cifrado. |
| Proxy Web Seguro (HTTPS) | HTTPS (SSL/TLS) | Para tráfico web cifrado. |
| Proxy FTP | FTP | Para el Protocolo de Transferencia de Archivos. |
| Proxy SOCKS | Varios (TCP/UDP) | Un proxy de propósito general que puede manejar varios tipos de tráfico de red, a menudo utilizado para protocolos que no son HTTP/HTTPS. |
| Proxy Gopher | Gopher | (Heredado) Para el protocolo Gopher. |
| Proxy de Streaming (RTSP/RTSP) | RTSP | Para el Protocolo de Streaming en Tiempo Real. |
Archivos de Configuración Automática de Proxy (PAC)
Un archivo PAC es un archivo JavaScript que define cómo los navegadores web y otros agentes de usuario pueden elegir el servidor proxy apropiado para una URL dada. Esto ofrece flexibilidad, permitiendo diferentes configuraciones de proxy basadas en el host de destino, el dominio o incluso la hora del día.
Especificar un Archivo PAC
Como se mencionó en las secciones de GUI y CLI, puedes especificar una URL de archivo PAC. macOS descargará y usará este script para determinar el uso del proxy.
Estructura Básica de un Archivo PAC
Un archivo PAC debe contener una función llamada FindProxyForURL(url, host). Esta función devuelve una cadena que indica el proxy a usar.
function FindProxyForURL(url, host) {
// Conexión directa para hosts internos
if (isPlainHostName(host) ||
shExpMatch(host, "*.local") ||
isInNet(host, "192.168.1.0", "255.255.255.0")) {
return "DIRECT";
}
// Usar un proxy específico para ciertos dominios
if (shExpMatch(host, "*.example.com")) {
return "PROXY proxy.example.com:8080";
}
// Por defecto, usar un proxy principal para todo el demás tráfico
return "PROXY mainproxy.yourcompany.com:8080; DIRECT";
// El respaldo "DIRECT" se usa si el proxy no está disponible.
}
Funciones PAC comunes:
* isPlainHostName(host): Devuelve verdadero si el host no contiene puntos.
* dnsDomainIs(host, domain): Devuelve verdadero si el host está dentro del dominio especificado.
* shExpMatch(host, pattern): Devuelve verdadero si el host coincide con el patrón de expresión de shell.
* isInNet(host, pattern, mask): Devuelve verdadero si la dirección IP del host está dentro de la subred especificada.
* myIpAddress(): Devuelve la dirección IP de la máquina.
* dnsResolve(host): Resuelve un nombre de host DNS a una dirección IP.
Ajustes de Omisión de Proxy
La configuración "Omitir la configuración de proxy para estos Hosts y Dominios" permite especificar destinos que no deben enrutar el tráfico a través del proxy configurado. Esto es crucial para acceder directamente a recursos internos, evitar una sobrecarga innecesaria del proxy o resolver problemas de incompatibilidad del proxy para servicios específicos.
Sintaxis para las entradas:
* Nombres de Host: localhost, myinternalserver
* Nombres de Dominio: *.local, example.com, sub.example.net
* * actúa como comodín. *.domain.com coincide con host.domain.com y sub.host.domain.com.
* Direcciones IP: 192.168.1.10
* Subredes IP: 192.168.1.0/24, 10.0.0.0/8
* Se admite la notación CIDR.
Las entradas suelen estar separadas por comas en la GUI o se proporcionan como argumentos separados a networksetup -setproxybypassdomains.
Verificación y Solución de Problemas
Comprobar la Configuración Actual del Proxy
Para verificar la configuración de proxy actualmente activa para un servicio de red usando la CLI:
# Obtener toda la información del proxy para un servicio
networksetup -getwebproxy "Wi-Fi"
networksetup -getsecurewebproxy "Wi-Fi"
networksetup -getsocksfirewallproxy "Wi-Fi"
networksetup -getautoproxyurl "Wi-Fi"
networksetup -getautoproxydiscovery "Wi-Fi"
networksetup -getproxybypassdomains "Wi-Fi"
Problemas Comunes
- IP/Puerto Incorrecto: Verifica que la dirección y el puerto del servidor proxy sean precisos.
- Fallo de Autenticación: Asegúrate de que el nombre de usuario y la contraseña sean correctos. Revisa los registros del servidor proxy para intentos de autenticación.
- Bloqueos de Firewall: Un firewall local en el cliente macOS o un firewall de red entre el cliente y el servidor proxy puede estar bloqueando el tráfico en el puerto del proxy.
- Servidor Proxy Inaccesible: El propio servidor proxy podría estar caído o inaccesible desde el segmento de red del cliente.
- Errores en el Archivo PAC: Si usas un archivo PAC, los errores de sintaxis dentro del JavaScript pueden impedir que funcione. Prueba el archivo PAC con un validador o simplifícalo para aislar problemas. Asegúrate de que la URL del archivo PAC sea accesible.
- Resolución DNS: Asegúrate de que el cliente macOS pueda resolver el nombre de host del servidor proxy (si se usa) y los nombres de host externos.
- Anulaciones Específicas de la Aplicación: Algunas aplicaciones pueden tener sus propios ajustes de proxy que anulan las configuraciones a nivel de sistema. Verifica los ajustes específicos de la aplicación si el tráfico no se enruta como se espera.