我有一个在NAT后面的web服务器,可以在互联网上访问。 我正在使用mikrotik路由器进行NAT。
但是,当从互联网或外部局域网访问网站时,并不显示实际的访客IP,而是显示网关IP地址。 我尝试了很多改变日志格式的东西,把自定义头部分配给x-forward,但是还是没有运气。
NAT规则:
chain=srcnat action=masquerade chain=dstnat action=dst-nat to-addresses=private-ip to-ports=80 protocol=tcp dst-address=public-ip dst-port=80
Apache不能logging根本不存在的信息。
问题是你的路由器也伪装成公有IP地址的源地址,通常来自因特网的请求只能应用目标NAT 。
你需要在mikrotik上设置所谓的端口转发
看看这里:
或在这里
从我的端口转发configurationmikrotik的例子
正如你所看到的 – 在你发布的内容和我的configuration之间有差异。 在我的configurationsrc NAT只适用于我的私人networking。 而下面的线 – 是一个dst nat。
在你的configuration中,你正在做两种方式的src。
我只是做了一些testing
我的ether1-gateway接口(通常面向互联网的接口)分配了静态IP 10.0.0.1/16
我的私人networking是192.168.10.0/24在我的私人networking上,我有Linux笔记本电脑连接到ether2-master-local,它的IP地址设置为192.168.10.247
这台笔记本电脑运行Apache
我在mikrotik上有这些防火墙设置
我有Mac连接到ether1-网关接口(模仿位于互联网上的客户端)。 此Mac设置为10.0.0.2。
下面是apache访问日志。 正如你所看到的 – 显示真实的客户端IP。