Apache2-Server (hinter Zyxel USG 100 NAT/Firewall) mit vhost protokolliert keine echten Client-IP-Adressen

Apache2-Server (hinter Zyxel USG 100 NAT/Firewall) mit vhost protokolliert keine echten Client-IP-Adressen

GELÖST

Damit das NAT des Zyxel USG 100 unveränderte Pakete an meinen Webserver weiterleiten kann, habe ich die Richtlinienroute des Zyxel bearbeitet.

Zyxel -> Configuration -> Network ->Routing -> Policy Route

Ich bearbeite einfach die Option „Adressübersetzung“ von „Ausgehende Schnittstelle“ auf „Keine“.

Jetzt protokolliert Apache echte IP-Adressen externer Clients


GELÖST

Guten Morgen Freunde

heute habe ich ein Problem damit, Client-Anfragen korrekt auf meinem Apache2-Webserver zu protokollieren

Netzwerkschema:

////////////    _                      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  / 
                         ++

Wenn jemand (aus dem Internet oder meinem privaten LAN) eine Seite an meine öffentliche IP 11.11.11.11 auf Port 80 anfordert, antwortet mein Webserver korrekt. Aber wenn ich das Zugriffsprotokoll meines Webservers überprüfen möchte, sehe ich nur die protokollierte IP meines Zyxel-Routers 192.168.1.1.

Ich nehme an, es liegt ein NAT-Problem vor. Es scheint, dass Zyxel seine IP-Adresse als SRC der IP-Pakete ersetzt, die an meinen Webserver gehen.

Was muss ich tun, um ordnungsgemäß protokollierte Webanforderungen mit öffentlichen Client-IP-Adressen zu erhalten? Router ist der Zyxel USG 100

dies sind meine Apache2-Protokollkonfigurationen (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

dies ist meine Vhost-Log-Konfiguration

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

Danke

Antwort1

%{X-ClientSide}i ist möglicherweise das, was Sie zu Ihrem Protokollformat hinzufügen möchten, um die Remote-Adresse des Clients zu erhalten.

verwandte Informationen