%EB%8A%94%20%EC%8B%A4%EC%A0%9C%20%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8%20IP%20%EC%A3%BC%EC%86%8C%EB%A5%BC%20%EA%B8%B0%EB%A1%9D%ED%95%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
해결됨
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는 클라이언트의 원격 주소를 얻기 위해 로그 형식에 추가하려는 것일 수 있습니다.