如何保留源IP?

如何保留源IP?

网络图

大家好,

有人能帮我解决这个问题吗?设置如下:

  • 客户端:1.1.1.1
  • 公共服务器:2.2.2.2(Digital Ocean)
  • pfSense:3.3.3.3
  • 网络服务器:4.4.4.4

公共服务器(Linux)通过 IPSEC VPN 和 StrongSwan(Linux)连接到 pfSense。

设置:

公共服务器有一个 IPtables,它将 HTTP(S) 请求端口转发到 Web 服务器

-A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 4.4.4.4:80
-A PREROUTING -i eth0 -p tcp -m tcp --dport 443 -j DNAT --to-destination 4.4.4.4:443

假设客户端 1.1.1.1 正在通过 HTTP 访问公共服务器,并将请求转发到 WEBSERVER 4.4.4.4。根据 apache 日志,我获取的公共服务器 IP 是 2.2.2.2,我的目标是获取客户端 IP 1.1.1.1?

有什么建议吗?我也尝试过使用 Haproxy,但结果相同。有没有办法通过 IPsec VPN 获取客户端 IP?

非常感谢!

答案1

NAT 或 VPN 设置不应影响客户端 IP 地址的记录。

公共服务器(Apache 反向代理或您问题中的 Haproxy)将使用 X-Forwarded-For 标头传递原始客户端的 IP。
请参阅:https://httpd.apache.org/docs/2.4/mod/mod_proxy.html#x-headers以 Apache 为例

如果使用 Apache,您可能还需要安装/启用 mod_remoteip
http://httpd.apache.org/docs/current/mod/mod_remoteip.html

并在日志格式中将远程主机名标头替换%h为请求的客户端 IP 地址%a
请参阅:mod_log_config.html#formats

相关内容