Maszyna z wieloma adresami lokalnymi może potrzebować jednego z nich do połączenia z proxy pośredniczącym. cURL potrafi jawnie dokonać obu wyborów:

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

To przykładowa konfiguracja dla istniejącego uchwytu cURL. Zastąp 192.0.2.20 adresem źródłowym, który rzeczywiście jest dostępny na maszynie uruchamiającej PHP. W przypadku dozwolonego publicznego żądania bez konta proxy, lista proxy HTTP może dostarczyć zdalny odbiornik dla wartości proxy.

CURLOPT_INTERFACE wybiera lokalną stronę połączenia wychodzącego. CURLOPT_PROXY wybiera pośrednika, który przenosi żądanie dalej. Wybór lokalnego źródła nie czyni tej maszyny zdalnym proxy ani nie daje jej dowolnego publicznego IP.

Na tej ścieżce wybór lokalny wpływa na połączenie w kierunku proxy. Witryna zazwyczaj widzi dalszy adres źródłowy proxy. NAT między dowolną parą może dodatkowo przetłumaczyć adres widziany przez każdego odbiorcę.

Jeśli wybór interfejsu zostanie pominięty, libcurl pozwala stosowi TCP wybrać odpowiednie źródło. Wybór ten podąża za konfiguracją sieci maszyny; nie jest uniwersalną zasadą, że wygrywa pierwszy adres w pliku konfiguracyjnym.

libcurl akceptuje nazwy interfejsów na obsługiwanych platformach, ale jego dokumentacja wyklucza wybór nazwy interfejsu Windows dla tej opcji. Użycie nazwy hosta może również wywołać blokujące wyszukiwanie. Znany adres lokalny jest jaśniejszym wejściem, gdy taki jest wybór zamierzony przez aplikację.

Powiązane artykuły