У меня есть пользователь А с 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