解决了
为了允许 Zyxel USG 100 的 NAT 将未受影响的数据包转发到我的 Web 服务器,我编辑了 Zyxel 的策略路由。
Zyxel -> Configuration -> Network ->Routing -> Policy Route
我刚刚将“地址转换”选项从“传出接口”编辑为“无”
现在 apache 正在记录真正的外部客户端 ip 地址
解决了
早上好,朋友们
今天我遇到了一个问题,无法正确地将客户端请求记录到我的公司 Apache2 Web 服务器上
网络方案:
//////////// _ WAN1 11.11.11.12
| INTERNET / _/ ===> CISCO Router =======> first public ip ==> to corporate LAN
//////////// ||
||
||
|| zyxel eth0 ip: 11.11.11.11
|| label: WAN2
\/
ZYXEL ROUTER ___ eth0 _________________________________________________
| ZYXEL |
| Gateway
| || |
| || |
| |\/| FIREWALL (accept request from eth0/WAN2 on port |
| || 443/80 and forward them to LAN1) |
| || |
| |\/| NAT (forward request on 11.11.11.11:80 to |
| || web server on 192.168.1.10:80) |
|____||__________________________________________________|
*zyxel eth1 ip: 192.168.1.1, label: lan1*
||
\|____________________
| \ mysqlserver 192.168.1.20
________| ++
webserver 192.168.1.10 /
++
当有人(来自互联网或我的私人局域网)通过端口 80 向我的公共 IP 11.11.11.11 请求页面时,我的网络服务器会正确响应。但当我想检查我的网络服务器的 access.log 时,我只能看到记录的 Zyxel 路由器 IP 192.168.1.1。
我认为这是一个 NAT 问题,似乎 Zyxel 将其 IP 地址替换为到达我的网络服务器的 IP 数据包的 SRC。
我必须做什么才能正确记录带有公共客户端 IP 地址的 Web 请求?路由器是 Zyxel USG 100
这是我的 Apache2 日志配置(apache2.log)
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
这是我的 vhost 日志配置
CustomLog /var/log/apache2/xyz.com/access.log combined
谢谢
答案1
%{X-ClientSide}i 可能是您想要添加到日志格式中以获取客户端的远程地址。