.htaccess
を介して、会社のイントラネットへのWebリソースへのアクセスを制限しようとしています。残念ながら、Allow from …
を介したアプローチは役に立たず、サブネットを十分に理解していないため、問題をトラブルシューティングできません。
私のIPアドレスは(プライバシーのために最初の2ブロックに置き換えられています)1.2.70.59、ネットマスクはifconfig
によって0xffff0000、つまり255.255.0.0として与えられます。 IPアドレス計算機を使用して、これからサブネットを取得しました。
スタックオーバーフローに関する回答 は、次のように動作するはずだと考えさせられました。
Order deny,allow
Deny from all
Allow from 1.2.0.0/255.255.0.0
または、CIDRを使用(最後の行のみを表示):
Allow from 1.2.0.0/16
どちらも動作しません。次の作業も行われません このサイトでの回答が暗示しているように :
Allow from 1.2
実際、次の作品でさえ機能しません。
Allow from 127.0.0.1
しかし、これはdoes動作します:
Allow from localhost
私はこれら2つは同等だと思っていましたが。明らかに、私の理解にはギャップがあります。
完全を期すために、これはifconfig | grep inet[^6]
の出力です。
inet 127.0.0.1 netmask 0xff000000
inet 1.2.70.59 netmask 0xffff0000 broadcast 1.2.255.255
何が間違っていますか?
解決策は、localhost/path/to/site
ではなく1.2.70.59/path/to/site
経由でWebサイトにアクセスしたことです。それを変更すると、うまくいきました。
まず、これらのディレクティブを.htaccessファイルまたはconfigファイルに追加しますか?後者の場合、Apacheを再起動する必要があります。
第二に、mod_authz_Hostが有効になっていますか? httpd.confには、次のような行があるはずです。
LoadModule authz_Host_module modules/mod_authz_Host.so
最後に、それが機能していないと確信していますか?つまり正しいパス/サーバーをテストしていますか?書き換えルールまたはカスタムエラーページでは、別のページが表示されていても、ページにアクセスしたように見えませんか?また、何が機能していないのですか?外部IPへのアクセスを許可していますか、または内部IPへのアクセスを拒否していますか?
アクセスログをクリア(ファイルを削除)し、サーバーを再起動して、もう一度URLをテストします。次に、アクセスログを調べて、記録されたIPアドレスと指定された応答コードを確認します。
他の方法もあります(例:mod_rewriteまたはSetEnvIf
/Allow from env=
)が、あなたがやっていることはうまくいくはずです。
.htaccessファイルに対してこれを試してください:
order allow,deny
#partial ip addresses blocking
deny from 192.168
deny from 219
#full ip addresses blocking
deny from 64.120.232.114
deny from 64.120.141.34
allow from all