みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

難易度高htaccess:IPの許可

.htaccessで、

order allow,deny
allow from all
deny from deny from 118.243.0.0/16

のようにネットマスクを利用して複数のIPアドレスからのアクセスを制限した上で、そのうち(制限したIPアドレスに含まれるうち)の一つのIPアドレス (例:118.243.126.243)にのみアクセスを許可したい場合、.htaccessに具体的にどのように記述すればよいのでしょうか?

どのように記述するか分からないのですが、118.243.126.243をとばした「118.243.0.0から118.243.126.242」と 「118.243.126.244から118.243.255.255」を別々に制限すればよいように思います。ただし、記述の仕方が分からないので具体的な記述の仕方を教えてください。

この.htaccessでは、基本的に「118.243.0.0/16」以外のIPアドレスからのアクセスは全て許可し、かつ、「118.243.0.0/16」に含まれる118.243.126.243からのアクセスも許可したいのです。

質問が分かりにくい場合は、お聞き下さい。

投稿日時 - 2012-12-30 11:44:10

QNo.7868036

すぐに回答ほしいです

質問者が選んだベストアンサー

どちらのorderでも、指定できるのは、それぞれ一重のみです。
allow → deny → allow という指定はできません。

order allow,denyの時は、すべてのdenyに先立って、allowが解釈されるので、order行のあとにallow行とdeny行をどの順序で書いても、

order allow,deny
allow from all
allow from 118.243.126.243
deny from 118.243.0.0/16

となり、結局118.243.126.243はdenyされてしまいます。「(デフォルトが全部denyで)まずallowを解釈してから次にdenyを解釈する」というのが「order allow,deny」の意味です。

order allow,deny
deny from 118.243.0.0/16
allow from 118.243.126.243
allow from all

と書いても意味は上のものと同じ。

逆に、「(デフォルトが全部allowで)まずdenyを解釈してから次にallowを解釈する」というのが、「order deny,allow」の指定なので、
・禁止したいレンジを指定
・その中で特定IPを許可
の場合は、こっちを使います。

>Order Deny,Allow
>を利用している例はあまり見かけませんが、
多くの場合の要件は、「xxxを禁止」と、一重の禁止だけなので、どっちでもいいです。

「デフォルト許可の中の、xxxxを禁止だが、その中のxxだけ許可したい」 ⇒ order deny,allow
「デフォルト禁止の中の、xxxxを許可するが、その中のxxだけ禁止したい」 ⇒ order allow,deny
これ以外のパターンは、変形してどちらかのパターンにします。

投稿日時 - 2012-12-31 17:23:44

お礼

notnotさん
ご回答、ありがとうございました。

了解しました。

投稿日時 - 2012-12-31 21:49:01

ANo.3

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

>なぜだか理解できません。

http://httpd.apache.org/docs/2.0/ja/mod/mod_access.html#order

投稿日時 - 2012-12-31 17:14:56

お礼

localicaさん
ご回答、ありがとうございました。

こちらは、当方も何度も読みましたが、理解できませんでした。

投稿日時 - 2012-12-31 21:52:18

ANo.1

>基本的に「118.243.0.0/16」以外のIPアドレスからのアクセスは全て許可し、かつ、「118.243.0.0/16」に含まれる118.243.126.243からのアクセスも許可したいのです。

deny,allowの基本機能でOKです。

Order Deny,Allow # デフォルトで全IPをallow
deny from 118.243.0.0/16 #特定のレンジをdeny
allow from 118.243.126.243 #そのレンジの中の特定のIPをallow

投稿日時 - 2012-12-30 12:26:23

補足

notnotさん
ご回答、ありがとうございました。
上記のご回答でちゃんと動作しているみたいです。

ただ、今までは、notnotさんに教えてもらった
Order Deny,Allow
の代わりに
order allow,deny
allow from all
としてから
deny from 118.243.0.0/16
allow from 118.243.126.243
などの拒絶条件を記入していました。
これでは、
allow from 118.243.126.243
が、検証した結果動作しませんでした。
しかし、なぜだか理解できません。
なぜ、
order allow,deny
allow from all
ではだめなんでしょうか?

また、
Order Deny,Allow
を利用している例はあまり見かけませんが、
order allow,deny
allow from all
でなくて、大丈夫なんでしょうか?

よろしくお願いします。

投稿日時 - 2012-12-31 14:57:50

あなたにオススメの質問