Назад | Перейти на главную страницу

cURL укажите исходящий IP - Windows

Я настроил свой экземпляр Windows AWS для использования двух IP-адресов и хотел бы иметь возможность выбирать, какой из этих двух IP-адресов используется для HTTP-запроса GET с использованием curl (pycurl).

Я хочу, чтобы серверной стороне казалось, что есть два отдельных клиента - почти как одна машина, использующая себя в качестве прокси.

Я настроил свой экземпляр на использование 1.1.1.1 в качестве статического IP-адреса и 2.2.2.2 в качестве дополнительного (прокси) IP-адреса.

> curl --interface 1.1.1.1 example.com

успешно, однако попытка с другим IP-адресом дает тайм-аут.

> curl --interface 2.2.2.2 example.com
curl: (7) Failed to connect to example.com port 80: Timed out

Установка флага подробности

> curl --interface 2.2.2.2 --verbose example.com
*   Trying 93.184.216.34:80...
* TCP_NODELAY set
* Name '2.2.2.2' family 2 resolved to '2.2.2.2' family 2
* Local port: 0
* connect to 93.184.216.34 port 80 failed: Timed out
* Failed to connect to example.com port 80: Timed out
* Closing connection 0
curl: (7) Failed to connect to example.com port 80: Timed out

Может ли кто-нибудь пролить свет на то, почему это соединение может не работать при использовании второго IP-адреса (и как это можно исправить в Windows)?

Заранее спасибо!

Похоже, это проблема с маршрутизацией, не могли бы вы ping или traceroute по адресу? Проверьте route print или Get-NetRoute в PowerShell, чтобы понять, установлен ли правильный шлюз - третий столбец в каждом будет сообщать вам, куда идет запрос для данного адреса (вы, вероятно, захотите найти NextHop соответствующий DestinationPrefix 0.0.0.0/0).

Вам нужно искать проблемы в том, как устройство направляет ваш запрос на разные IP-адреса для разных интерфейсов, чтобы решить эту проблему.