仮想ホストを備えた 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ウェブサーバーに正しく記録できないという問題に直面しています。

ネットワークスキーム:

////////////    _                      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 にページを要求すると、私の Web サーバーはそれに正しく応答します。しかし、Web サーバーの access.log を確認すると、ログに記録されているのは Zyxel ルーターの IP 192.168.1.1 だけです。

NAT の問題があると思われます。Zyxel が、Web サーバーに送信される IP パケットの SRC として IP アドレスを置き換えているようです。

パブリッククライアントの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 は、クライアントのリモート アドレスを取得するためにログ形式に追加する必要がある可能性があります。

関連情報