- ベストアンサー
FreeBSD8でWWWサーバー構築中の外部アクセス制限について
- LAN内からはIPアドレスでアクセスできるが、外部からのアクセスは制限されている。
- 新しいサーバーを構築し、Apacheも起動済み。LAN内の別のパソコンからはアクセス可能。
- しかし、イーモバイルなどからはアクセスできず、Forbiddenのエラーが表示される。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
■DNS に対する疑い DNS 関係の疑いは微妙に晴れていませんので、 nslookup で 202.248.37.74 (@nifty の DNS サーバ) などに対してドメイン名に対して返されるIPアドレスを確認することをお勧めします。 C:\>nslookup www.yahoo.co.jp 202.248.37.74 サーバー: dns.nifty.com Address: 202.248.37.74 権限のない回答: 名前: www.ya.gl.yahoo.co.jp Address: 203.216.243.240 Aliases: www.yahoo.co.jp >また、その証拠に、イーモバイルなどでLANの外から接続しても >http://www.******.co.jp/~++++ >とすると++++のユーザーフォルダにあるindex.htmlは表示されますし、 >http://www.******.co.jp/cgi-bin/++++.cgi >というテスト用cgiを直接起動すると、きちんと動作します。 サーバのアクセスログ、エラーログを確認することもお勧めします。 基本的に、クライアント、サーバの相互確認をしないかぎりアクセスできたと確証を得るのは早いと思います。 ログを確認しないと、本当に目的のサーバにアクセスできたのか、LAN内の別のサーバにアクセスしたのかを取り違えることがあります。 ■パーミッションの確認 強くあやしいのは、ファイルとディレクトリのパーミッション(アクセス権限)ですね。(私もよくつまずきます) /usr/local/www/apache22/data/index.html のパーミッションを確認してみてください。すくなくとも、ファイルに対する読取り権限が必要です。 $ ls -a /usr/local/www/apache22/data/ $ chmod -R 644 /usr/local/www/apache22/data/ http://freebsd.server-manual.com/freebsd8_apache2.html から >ドキュメントルートの所有権を変更 >[root@freebsd ~]# chown -R user_name /usr/local/www/apache22/data マニュアルのこの箇所ですが、具体的にどのように入力したのか覚えていますか? チェックポイント1 root ユーザで行ったか? チェックポイント2 user_name は具体的には何を指定したのか? ■httpd.conf について ■User ディレクティブとGroup ディレクティブ 指定したユーザ・グループによってファイルアクセスは行われます。ファイルアクセス時に権限不足で失敗した場合、 403 Forbidden となります。 基本的には、 apache ユーザと apache グループを作成して、それを指定します。また、公開するドキュメントのアクセス権限も apache グループに与えます。 User apache Group apache_group <-- apache とすると分かりにくくなるのが嫌いなので、 _group と明示するのが個人的な好みです グループの作成 # pw groupadd apache_group ユーザの作成 # adduser Username: apache Login group [...]: apache_group Shell (sh csh tcsh zsh nologin) [sh]: nologin コマンドの詳細はこちらで確認してください <<http://www.freebsd.org/doc/handbook/users.html>> ここら辺は、 FreeBSD のパッケージマネージャーが自動的にやっていると思いますが、確認してみてください。(私は、開発環境用にてきとーな環境構築しかやったことがないので間違いがあると思います。) なお、下のようにしても良いですが、テスト環境でのみ行ってください。(運用環境ではセキュリティ上の欠陥になります) User root Group root ■DocumentRoot ディレクティブ 公開するドキュメントのルートの指定が間違っていることはないですか? 多分、下のようになっていない可能性が考えられます。 DocumentRoot "/usr/local/www/apache22/data"
お礼
ありがとうございました。 アドバイスの内容を順番にチェックしていき、エラーログをよくよく見たところhttp.confのバーチャルドメインの設定に誤りがありました。 それを修正したところ、正常に表示されるようになりました。 分かりやすく説明いただいて本当に助かりました。 ありがとうございます。