我有一个用户 A,其 IP 为AAA。AAA。AAA。AAA,该用户需要访问另一个用户 B 的目录(具有 IPBBB。BBB。BBB。BBB) 使用 CURL 在同一台服务器 (Directadmin/CentOS/IP CCC) 上执行此操作。此用户的目录已使用 HTAccess 锁定。通常对于外部用户,我会通过将他的/她的 IP 地址添加到 HTAccess 文件来打开 HTAccess 中的目录:
<Limit GET POST PUT PATCH DELETE>
order deny,allow
deny from all
allow from AAA.AAA.AAA.AAA
</Limit>
来自用户 A 的请求没有通过 (403)。我在用户 B 上创建了一个 test.php:
<?
echo json_encode($_SERVER, JSON_PRETTY_PRINT);
当用户 A 通过 cURL 访问此文件时:
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 地址也正确报告了。
答案1
-dns-ipv4-addr
仅用于 DNS 请求的地址。它不用于实际请求。请尝试--interface
以下方法:
curl -XPOST https://example.com/test.php --interface aa.aa.aa.aa