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

Неверный IP-адрес при запросе curl с того же сервера

У меня есть пользователь А с IP AAA.AAA.AAA.AAA, этому пользователю необходимо получить доступ к каталогу другого пользователя B (с IP BBB.BBB.BBB.BBB) с CURL на том же сервере (Directadmin / CentOS / IP CCC). Этот каталог этого пользователя заблокирован HTAccess. Обычно для внешних пользователей я открывал каталог в HTAccess, добавляя его / ее IP-адрес в файл HTAccess:

<Limit GET POST PUT PATCH DELETE>
order deny,allow
deny from all
allow from AAA.AAA.AAA.AAA
</Limit>

Запрос от пользователя A не проходит (403). Я сделал test.php для пользователя B:

<?
echo json_encode($_SERVER, JSON_PRETTY_PRINT);

При обращении к этому файлу от пользователя A:

curl -XPOST https://example.com/test.php --dns-ipv4-addr AAA.AAA.AAA.AAA

я получаю следующий результат:

"SERVER_ADDR": “BBB.BBB.BBB.BBB”,
"REMOTE_ADDR": “BBB.BBB.BBB.BBB”,

Итак, проблема: при cURLing с одного и того же сервера пользователь B сообщает свой собственный IP-адрес как внешнюю сторону (SERVER_ADDR и REMOTE_ADDR одинаковы). Я бы явно хотел, чтобы результат был:

"SERVER_ADDR": “BBB.BBB.BBB.BBB”,
"REMOTE_ADDR": “AAA.AAA.AAA.AAA”,

Таким образом, мое ограничение IP будет работать должным образом. Я также хотел бы добавить, что если я добавлю BBB.BBB.BBB.BBB в htaccess запрос действительно приходит. Кроме того, при запросе с моего компьютера IP-адрес также сообщается правильно.

-dns-ipv4-addr это только адрес, который будет использоваться для DNS-запросов. Он не используется для фактического запроса. Пытаться --interface вместо:

curl -XPOST https://example.com/test.php --interface aa.aa.aa.aa