具有虛擬主機的 Apache2 伺服器(位於 Zyxel USG 100 NAT/防火牆後面)不會記錄真實客戶端 IP 位址

具有虛擬主機的 Apache2 伺服器(位於 Zyxel USG 100 NAT/防火牆後面)不會記錄真實客戶端 IP 位址

解決了

為了允許 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 位址正確記錄網路請求?路由器是 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

這是我的虛擬主機日誌配置

CustomLog /var/log/apache2/xyz.com/access.log combined

謝謝

答案1

%{X-ClientSide}i 可能是您想要新增至日誌格式以取得客戶端的遠端位址的內容。

相關內容