如何保留源IP?

networking图

嗨,大家好,

任何人都可以帮我解决这个问题吗? 这里的设置:

  • 客户:1.1.1.1
  • 公共服务器:2.2.2.2(数字海洋)
  • pfSense:3.3.3.3
  • WEBSERVER:4.4.4.4

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

build立:

公共服务器有一个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而不是?

有什么build议么? 我也尝试使用Haproxy,但获得相同的结果。 有无论如何,我可以通过IPsec VPN获得客户IP?

非常感谢!

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

公共服务器(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

并以您的日志格式将远程主机名标头%hreplace为请求%a客户端IP地址。
请参阅:mod_log_config.html#格式