2012-01-09 9 views
0

興味深い問題があります。私の会社はクライアント用の小さなアプリケーションサーバーをホストしており、少数のIPだけにアクセスを制限したいと考えています。クライアントは、多くの部門を持つ大企業であり、各部門には独自のネットワーク構造があります。ApacheがIP正規表現を許可/拒否する

私は細部には触れませんが、私の会社のWebサーバーの内部構造のために、Apacheでは従来のallow、deny構文を使用できません。ロードバランサは、Webサーバーに転送し、アプリケーションサーバー自体に転送します。代わりに、私たちはApacheの設定で、次のようなものを使用します。

RewriteCond %{HTTP:X-Forwarded-For} !^213.212.45.54 

我々は外部のIPアドレスと一致するように、X-転送さ-のためにヘッダを利用します。問題は、私たちのクライアントの部門(A部門と呼ぶ)が内部プロキシを経由するインターネット設定をしていることです。内部プロキシは、各ユーザのワークステーションIPを当社のWebサーバに転送します。これは、それらのユーザーのためのX-転送さ-用ヘッダが、このようなものに見えることを意味します

10.123.16.23, 213.212.45.54, 172.20.162.2 

10のアドレスは、ネットワーク内の各ユーザのワークステーションのIPがあるが、213はその部門のWAN IPであり、 172は私の会社のロードバランサです。

私の会社は、ユーザーのワークステーションIPをApache構成に追加すると、問題なくページにアクセスできることを確認しました。しかし、すべての単一IPを追加するのは面倒です。

正規表現を使用して中間IP(WAN IP)にのみ注意を払うようにApacheに指示する方法はありますか?それとも、Apacheを設定する良い方法がありますか?

+1

多分これは、正しい方向へのポイントあなたを、正規表現 を助ける\は(213 \。\ dは+ \。\ dは+ \。\ dは+)* S \は、* sは 試合と中間IP を返します。 213.212.45.54 これを使用してRewriteRuleをトリガーすることができます。 –

答えて

0

これはテストしていませんが、フィールド内の任意の場所にIP文字列を検索する正規表現を作成することができます。正規表現の最初の^は、文字列の先頭に一致する必要があることを意味しますが、ここではそうではありません。このような単純な

何か仕事ができる:

RewriteCond %{HTTP:X-Forwarded-For} !213\.212\.45\.54 

バックスラッシュが原因でそうでないドットの前に必要です。何も一致しないことを含め、任意の文字の任意の数値にマッチします。ワイルドカード構文のa *に相当します。

このように、213.212.45.54という文字列がX-Forwarded-Forヘッダーのどこにあっても、正規表現は一致します。

関連する問題