为什么 $_SERVER['REMOTE_ADDR'] 返回网关 IP 而不是带有强化路由器的远程 IP


Why does $_SERVER['REMOTE_ADDR'] return the gateway ip rather than the remote ip with a fortigate router?

我有一台通过Fortigate 40C连接到互联网的服务器。当我的php代码调用$_SERVER['REMOTE_ADDR']时,它返回路由器的IP地址(堡垒)而不是访问php脚本的远程IP。

这是为什么呢?

> Fortigate有一个在策略上"启用NAT"的选项,这并不意味着转换地址(无论如何它都会为你这样做),但确实意味着它会更改一些数据包,用网关IP替换远程IP。

确保禁用"启用 NAT",并且$_SERVER['REMOTE_ADDR']将按预期工作。