このスレッドは未解決です(解決したらこちらで解決済にしてください)
<<戻る

ip_fowardした際の元IPの取得方法 このメッセージに返信する
日時: 2013/01/21(Mon) 23:00
名前: たか
URL: http://centossrv.com/linux-router.shtml
現在以下のような構成でCentOSルーターをかましてローカルネットワーク内の自分WEBサーバーをインターネット経由でアクセスできるようにしています。


外部クライアント-> (インターネット)-> CentOSルーター -> (ローカルネット) -> 自分WEBサーバー


具体的にはこのサイトの「Linuxルーター構築」を参考にほぼそのままの設定で行ったつもりです。

無事 外部クライアントから上記の自分WEBサーバーへのアクセスはできるようになったのですが
自分WEBサーバーのアクセス元IPアドレスが 外部クライアントのIPではなく CentOSルーターのIPが取れてしまいます。
たとえば hosts.allowで自分WEBサーバーのアクセス元IPを限定しようにも 常にCentOSルーターのIPアドレスでアクセス扱いになってしまうため制限ができません。
他にもPHPで<?php print $_SERVER["REMOTE_ADDR"] ?> とすると ルーターのIPアドレスが表示されてしまいます。

確かにCentOSルーター経由でアクセスしているのでそのIPが取れてしまうのは当たり前なのかもしれませんが やりたいこととしては大元の外部クライアントのIPアドレスで制限をかけたいわけで・・・

こういう設定をしたい場合にはどの設定をいじればいいのでしょうか?

よろしくお願いいたします。
記事編集 編集
Re: ip_fowardした際の元IPの取得方法 このメッセージに返信する
日時: 2013/01/22(Tue) 12:26
名前: stranger
URL: http://ja.528p.com/
アクセスした瞬間にグローバルアドレスを取得したいということですか?

webサーバのaccess_logにグローバルアドレスが記録されないということですか?
メールサーバならmaillogとか
iptables自身のログは/var/log/messagesとか
悪そうなアクセスはlogwatchなどで毎日報告されるとおもうけど?

hosts.allowで制御できるのはlibwrapライブラリを組み込んであるソフトだけ
opensshとか
端末で
rpm -e --test tcp_wrappers-libs
で依存しているパッケージを調べる
ldd /usr/sbin/sshd
でopenssh-sereverで入れられるsshdにリンクされているライブラリを調べる

iptablesの制御の方法
ルータへのアクセスはINPUTでDROP
ローカルサーバへのアクセスはFORWARDでDROP
最初にDROPするように設定

iptables -I INPUT 1 -s グローバルアドレス -j DROP
スクリプトへの組み込みはよくわからない
数字の1はいらないかも、デフォルトでIオプションは先頭に追加される
記事編集 編集
Re: ip_fowardした際の元IPの取得方法 このメッセージに返信する
日時: 2013/01/23(Wed) 10:03
名前: たか
URL: http://centossrv.com/linux-router.shtml
ありがとうございます。

> アクセスした瞬間にグローバルアドレスを取得したいということですか?

WEBサーバーで諸々のアクセスに関してクライアントのグローバルアドレスを取得したいということです。
たとえば/var/log/httpd/access_logを見てもすべてルーターのプライベートIPが記録されていてこれではログの意味がほとんどないです。
CentOSルーターのログを見れば全て記録されているはずですが それではフィルタリングしないと見づらいです。(それはそれで使いどころはありますが)
上の例では簡略化のためにWEBサーバー1台と書きましたが実際には数台あり そのおのおののサーバーのログはそのおのおののサーバー上でも見られるようにしたいです。

またWEBサーバーページ上でアクセス解析のPHPを組んでも 全てルーターのプライベートIPが取得されてしまっては実質意味ないですし・・・
市販のルーターで静的NAT使ってWEBサーバーを公開した場合はきちんとクライアントのグローバルIPが取れるのできちんと設定すればクライアントのグローバルIPが取れるはずだと思うのですが・・・

確かにCentOSルーターでログ管理して iptables使ってWEBサーバー等のIP制限もできるとは思いますが
できればCentOSルーターで集中管理ではなく 部分的に各サーバーで制御したい部分もあるということです。
それって無理なのでしょうか?
記事編集 編集
Re: ip_fowardした際の元IPの取得方法 このメッセージに返信する
日時: 2013/01/23(Wed) 10:43
名前: たか
URL: http://centossrv.com/linux-router.shtml
一応 市販のルーター(NTTから貸与のRV-340SE)で試してみましたが静的NATでローカルサーバーにアクセスできるように設定してやると /var/log/httpd/access_logには アクセス元のグローバルIPが表示されていますし 他のログもざっと見た限りグローバルIPで表示されています。

なので何かしら自分のやったCentOSルーターで設定不足、もしくは設定ミスがあるのだと思うのですが。。。
記事編集 編集
Re: ip_fowardした際の元IPの取得方法 このメッセージに返信する
日時: 2013/01/23(Wed) 12:18
名前: stranger
URL: http://ja.528p.com/
私の所もCentOSルータでiptablesで制御していますが
ローカルのwebサーバのログはグローバルアドレスで記録されます
記事編集 編集
Re: ip_fowardした際の元IPの取得方法 このメッセージに返信する
日時: 2013/01/24(Thu) 12:34
名前: たか
URL: http://centossrv.com/linux-router.shtml
自己解決しました

原因はWEBサーバー側のゲートウェイの設定でした。
説明しづらいんですが WEBサーバーは2つのネットワークに属していて
CentOSルーターの設定で片方のネットワークAはそのまま外に出られるけどもう片方のBは出られなくしていて・・・
ただネットワークBはネットワークAへブリッジ?してたので直接は出られないけどCentOSルーター経由でネットワークAに出てそこから外に出られる、ような感じになっていて・・・
(それも問題なので設定見直しますが)

なので外部からのアクセスも クライアント→ルーター→ネットワークA→ネットワークB→WEBサーバーのようになり 結果 ルーターのIPが常にアクセス元になってしまっていたようです。

ずっとCentOS周りの設定ばかり見ていてまさかWEBサーバー側の設定ミスとは。。。
しかもご丁寧に2台とも同じようにミスってたからなぁ。。。

まぁいつもコピペで済ませてるiptables周りとかかなり色々調べていい勉強になりました。
記事編集 編集
Re: ip_fowardした際の元IPの取得方法 このメッセージに返信する
日時: 2013/01/24(Thu) 12:35
名前: たか
URL:
ちなみにこの掲示板パスワード未登録だと解決済みにできないですか?
なんかうまく解決済みにできないので 管理権限とかで解決済みに変えられたら変更お願いします。
記事編集 編集
件名※必須
名前※必須
URL
任意のパスワード (投稿後のコメント修正・削除時に使用)
画像認証※必須 投稿キー(画像で表示されている数字を入力)
コメント※必須

※質問を投稿後に自己解決された場合は、原因と行った対処を具体的に書き込み下さるよう、よろしくお願いします。

- WEB PATIO -