Una máquina con varias direcciones locales puede necesitar una de ellas para su conexión a un proxy de reenvío. cURL puede hacer ambas elecciones de forma explícita:

curl_setopt_array($handle, [
    CURLOPT_URL => 'https://example.com/',
    CURLOPT_INTERFACE => '192.0.2.20',
    CURLOPT_PROXY => 'http://proxy.example:8080',
]);

Esta es una configuración ilustrativa para un identificador cURL existente. Sustituya 192.0.2.20 por una dirección de origen realmente disponible en la máquina que ejecuta PHP. Para una solicitud pública permitida sin cuenta de proxy, la lista de proxies HTTP puede proporcionar el receptor remoto para el valor del proxy.

CURLOPT_INTERFACE selecciona el lado local de la conexión saliente. CURLOPT_PROXY selecciona el intermediario que transporta la solicitud hacia adelante. Elegir un origen local no convierte la máquina en un proxy remoto ni le otorga una IP pública arbitraria.

En esta ruta, la selección local afecta a la conexión hacia el proxy. El sitio web suele ver la dirección de origen posterior del proxy. El NAT entre cualquiera de los dos pares puede traducir aún más la dirección que ve cada receptor.

Si se omite la selección de interfaz, libcurl deja que la pila TCP elija un origen adecuado. Esa elección sigue la configuración de red de la máquina; no es una regla universal que gane la primera dirección de un archivo de configuración.

libcurl acepta nombres de interfaz en las plataformas compatibles, pero su documentación excluye la selección de nombres de interfaz de Windows para esta opción. Usar un nombre de host también puede desencadenar una búsqueda bloqueante. Una dirección local conocida es una entrada más clara cuando esa es la elección que pretende la aplicación.

Artículos relacionados