가상 호스트가 있는 Apache2 서버(Zyxel USG 100 NAT/방화벽 뒤)는 실제 클라이언트 IP 주소를 기록하지 않습니다.

가상 호스트가 있는 Apache2 서버(Zyxel USG 100 NAT/방화벽 뒤)는 실제 클라이언트 IP 주소를 기록하지 않습니다.

해결됨

Zyxel USG 100의 NAT가 손대지 않은 패킷을 내 웹 서버로 전달할 수 있도록 Zyxel의 정책 경로를 편집했습니다.

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

"Address Translation" 옵션을 "outgoing-interface"에서 "none"으로 편집했습니다.

이제 아파치는 실제 외부 클라이언트 IP 주소를 기록하고 있습니다.


해결됨

좋은 아침이에요 친구들

오늘 회사 Apache2 웹 서버에 클라이언트 요청을 올바르게 기록하는 데 문제가 있습니다.

네트워크 구성표:

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

누군가(인터넷 또는 개인 LAN에서) 포트 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는 클라이언트의 원격 주소를 얻기 위해 로그 형식에 추가하려는 것일 수 있습니다.

관련 정보