- ベストアンサー
グローバルIP一つ(固定)でのWeb公開
今回、プロバイダーのコース変更をしグローバルIDを一つ固定でもらいました。 そこで試しにWebを公開したいと思いアパッチをインストールしました。 OSはTurboLinux6.0です。 とりあえず、LAN内ではアクセスすることできました。 しかし、他のプロバイダーからアクセスするとできません。ログを見てみると下記のようなメッセージが残っています。 98)Address already in use: make_sock: could not bind to port 80 これって、ポート80が使えません。っていうことですよね。 っていうことはWebを公開するためのポートを80以外にすればいいのでしょうか?
- みんなの回答 (9)
- 専門家の回答
質問者が選んだベストアンサー
IPフィルターの設定も特におかしいとは思えないですね。 ここで、ひとつ提案ですが、eth0も固定のアドレスなのですから、この際インターネットから外してみて、eth0がわにHUBとPC(当然このサーバーにアクセスできるIPアドレスをふる)をつないでみて確認されてはいかがでしょうか? これで、サーバーの問題かどうかは、切り分けできると思うのですが。
その他の回答 (8)
- ken2
- ベストアンサー率36% (86/235)
いろいろやっているようですが、まだ使えてないようですね。 LANからアクセスできるのなら、httpdは、動いているようですね。 2本足ということは、IPフィルターの問題でしょうか? ipchains -Lで、IPフィルターの設定がでてきます。 ipchainsは、どのように設定されたのでしょうか? eth0に対して、80番ポートは、inputで、anyからacceptになっているでしょうか?
補足
ken2様 ありがとうございます。 早速 ipchains -L とやって見ましたところ Chain input (policy ACCEPT): Chain forward (policy DENY): target prot opt source destination ports MASQ all ------ 192.168.1.0/24 anywhere n/a Chain output (policy ACCEPT): と出ます。 ipchainsの設定は、 /etc/rc.d/rc.localに以下のように追加しています。 /sbin/depmod -a /sbin/modprobe ip_masq_ftp /sbin/modprobe ip_masq_raudio /sbin/modprobe ip_masq_irc /sbin/modprobe ip_masq_vdolive /sbin/modprobe ip_masq_cuseeme ipchains -P forward DENY ipchains -A forward -s 192.168.1.0/24 -d 0.0.0.0/0 -j MASQ >eth0に対して、80番ポートは、inputで、anyからacceptになっているでしょうか? 申し訳ありません。上記の調べ方又は設定の仕方がわかりません。。。 お手数ですが、教えていただけますでしょうか?
- onosuke
- ベストアンサー率67% (310/456)
あれれ? グローバルIPを入力して > [WAN側アドレス]80: Unknown host ですか。 "[WAN側アドレス]"とポート番号の"80"の間には,スペース入れるんですけど,これ抜けてないですか? >>$ su -c "netstat -atp" >流れてしまって確認することができません。。 表示が一画面に収まりきらないとき,"|"(パイプ)を利用すると良いです。 コマンドの後に"| less"や"| more"を付け足しましょう。 最後に,"httpd.conf"の"ServerName"行ですが,今の状況ならこれは必要ないでしょう。
補足
onosuke 様 ありがとうございます。 > [WAN側アドレス]80: Unknown host ですか。 "[WAN側アドレス]"とポート番号の"80"の間には,スペース入れるんです>けど,これ抜けてないですか? やってみましたが、同じですね。。。これって80のポートが開いていないということでしょうか? >$ su -c "netstat -atp" こちらの方もやってみました。 ご指摘の通り、|moreをつけることによって全てみることができました。でも、80のポートを使っているという記述が無いんです。。。 apacheの設定方法が根本的に間違っているのでしょうか? 何か80のポートを開放するという設定が必要なのでしょうか? 素朴な疑問なんですが、もし80のポートが開いていなくても、LAN内ではアクセスすることができるのでしょうか? LAN内から、ポートスキャンすると80は開いているのですが、他のプロバイダーからポートスキャンすると開いていません。。。 ん~~~だんだん混乱してきました。 本当に申し訳ありませんが、ご指摘の程お願いします
- onosuke
- ベストアンサー率67% (310/456)
えーっと,こいつなんですが $ echo "GET /index.html HTTP/1.0 > >" | telnet [WAN側アドレス] 80 [WAN側アドレス]の部分,グローバルIPに置き換えてもらえました? [WAN側アドレス]っていうのは,そういう意味です。 TurboLinuxマシンのネットワーク構成はどうなっているのでしょう? eth0-WAN(グローバルIP) eth1-LAN のようなDualHome構成?NATルータなんて使ってないですよね? 詳しいところお願いします。 > httpd.conf の設定で ServerName のところにグローバルIDを > 入れたのですが、設定はこれでいいのでしょうか? 通常,ServerName設定は必要ないです。 が必要かどうかは,ネットワークの環境次第ですね。 >もし、ポートを80以外に設定する場合は、httpd.confのPortの >番号を開いているポートに割り振ればいいのでしょうか? はい,OKです。 あ,そうそう.... $ su -c "netstat -atp" こいつは,TCPポート番号の利用状況とそのプログラムがわかります。(suしないと,全てのプログラム名は表示されない)中でも,State行:LISTENとなっているのは,そのポートでサーバが動いています。 > もし、80以外にした場合はどのようにアクセスすればいいのでしょうか? URLなら http://localhost:[ポート番号]/ と,":"の後にポート番号を付け足す。前回のtelnet使う方法なら, $ echo "GET /index.html HTTP/1.0 > >" | telnet [ホスト名/IP] [ポート番号] です。
補足
onosuke様ありがとうございます。 >[WAN側アドレス]の部分,グローバルIPに置き換えてもらえました? >[WAN側アドレス]っていうのは,そういう意味です。 ハイ大丈夫です。グローバルIPを入れました。 >TurboLinuxマシンのネットワーク構成はどうなっているのでしょう? >eth0-WAN(グローバルIP) >eth1-LAN >のようなDualHome構成?NATルータなんて使ってないですよね? >詳しいところお願いします。 おっしゃるとおりです。 eth0にグローバルIPを振り eth1にLAN側のIP(192.168.1.1)を振っています。 >$ su -c "netstat -atp" >こいつは,TCPポート番号の利用状況とそのプログラムがわかります。(suしないと,全てのプログラム名は表示されない)中でも,State行:LISTENとなっているのは,そのポートでサーバが動いています。 これを実行するとたくさんのメッセージがバーァっと出てきます。80はかなり上の方なのでしょうか?流れてしまって確認することができません。。。 本当に申しわけありません。。。いろんなホームページや本を参考にしているのですが自力ではどうしても無理なようです。 お忙しいとは思いますが、ご教授お願い致します
- onosuke
- ベストアンサー率67% (310/456)
ども,こんばんわ。 前回の質問で,INETデーモン:"inetd",apacheはServerType:standaloneで起動している,以上2点がわかりました。(standaloneなのでINETデーモンはもう用なし) > 98)Address already in use: make_sock: could not bind to port 80 件のエラーメッセージですが,これは今の問題とはとりあえず関係なさそうです。 (このエラーがでるとapacheは起動しない,だがhttpdがプロセスリスト(ps)に並んでいる) もっとも, 「最初からapacheはインストールされていたのではないか?」 「現在は元々のapache or 元々のに上書きしたapache が動いている?」 といった,新たな疑問も出てしまいます。(^^;; ちなみに,あのエラーの問題解決が必要なとき,原因はTurboLinuxマシン内に収まります。 $ echo "GET /index.html HTTP/1.0 > >" | telnet [WAN側アドレス] 80 (echoの後の"(ダブルクォート)閉じずに改行いってください) で"index.html"の内容が画面に出て来るか一度確認してみては? > っていうことはWebを公開するためのポートを80以外にすればいいのでしょうか? httpd.confでポート番号80以外に設定し,それでうまくいくようならCATV会社で内向き宛先TCPの80番ポートを閉じていることになります。試してみる価値は十分ありますが,あのエラーで『っていうことは』にはなりませんね。
補足
onosuke 様 ご回答ありがとうございます。 試しに、apacheの入れ直しをしてみました。すると以前のエラーログは出なくなり何も出なくなりました。 $ echo "GET /index.html HTTP/1.0 > >" | telnet [WAN側アドレス] 80 とやってみたところ、 [WAN側アドレス]80: Unknown host とエラーメッセージが出ました。 httpd.conf の設定で ServerName のところにグローバルIDを入れたのですが、設定はこれでいいのでしょうか? もし、ポートを80以外に設定する場合は、httpd.confのPortの番号を開いているポートに割り振ればいいのでしょうか? もし、80以外にした場合はどのようにアクセスすればいいのでしょうか? 申し訳ありませんが、教えてください
- onosuke
- ベストアンサー率67% (310/456)
$ ps axe | grep httpd $ su -c "netstat -atp" $ su -c "ls /etc/xinetd.d" $ su -c "cat /etc/inetd.conf" とやると,どんなのでます? 98)Address already in use: make_sock: could not bind to port 80 このメッセージはWebサーバソフトのログでよいのかな。 Webサーバソフト名とログの他のメッセージもいただけますか?
補足
onosuke 様ご回答ありがとうございます。早速試してみましたところ > $ ps axe | grep httpd 412 ? S 0:00 httpd 693 ? S 0:00 httpd 694 ? S 0:00 httpd 695 ? S 0:00 httpd 696 ? S 0:00 httpd 697 ? S 0:00 httpd 698 ? S 0:00 httpd 699 ? S 0:00 httpd 700 ? S 0:00 httpd 701 ? S 0:00 httpd 702 ? S 0:00 httpd 2778 ? S 0:00 grep httpd > とメッセージがでます。 $ su -c "netstat -atp" とやると パスワードを求められましたのでrootのパスワードでログインしました。 すると今立ち上がっているデーモンでしょうか?たくさん出てきました。 > $ su -c "ls /etc/xinetd.d" とやると また、パスワードを入力して ls: /etc/xinetd.d: No such file or directry とでます > $ su -c "cat /etc/inetd.conf" こちらは、ものすごい長いメッセージが出てきます。 Webサーバーはアパッチです。ログは、Webサーバーのログです。場所は /etc/local/apache/logsのerror_logの中にあるのですが、この一行以外にはメッセージはありません。 同じ場所のaccess_logも空っぽのままです。
- ken2
- ベストアンサー率36% (86/235)
やはりまずそのアドレスに対してpingがとおるのかを確認し、nslookupで逆引きしてみてそのプロバイダーが持っているIPアドレスなのかを見たほうがいいともいます。 LANからは、当然アクセスできると思いますが、外からアクセスできないのは、アドレスが間違っていて、ルーティングできないのではにかとも思います。 ほんとに割り当てられたのなら、そんな80番ポートがつかえないような割り当てはしないと思います。 IPアドレスとネットマスクもきちんと確認されたほうがいいと思います。
補足
ken2 様 ありがとうございます。 nslookup で確認しましたところ、私の契約しているプロバイダーのものでした。 アドレスの間違いはないと思います。。。。 IPアドレス、サブネットマスクともに確認してみましたが、間違いは無いようです
- ikeuchi
- ベストアンサー率28% (91/314)
外からグローバルアドレスに対してpingは通りますか?また、Internet Test Tools (http://www.vector.co.jp/soft/win95/net/se078518.html)などを使ってポートスキャンをかけてみてはいかがでしょう。 私の場合、CATVでIPはDHCPで可変割り当てですが、外からはプロバイダ側で1024までのポートは止められています。同じようなことがあるのかも。
補足
ikeuchi 様ご回答ありがとうございます。 外からグローバルアドレスに対してのPINGは通ります。 ご指摘の通りポートスキャンをかけてみたところ80は開いていませんでした。1024までで開いていたのは下記のポートです。 7 9 13 15 19 22 23 グローバルIPはDHCPではなく固定になっています。 CATV側で80をふさいでWebサーバーをできなくしているのでしょうか?もし、そうでしたら何らかの方法で作ることはできないのしょうか?
- ikeuchi
- ベストアンサー率28% (91/314)
システム構成が判らないので、何とも言えません。 LAN内からはプライベートアドレスでアクセスしていませんか? 1個のグローバルアドレスは、アパッチのサーバに割り当てられていますか?ルータなどに割り当てられていませんか? 外からアクセスしたときに、該当アドレスの80ポートがオープンできない=サーバが見えていない様に思いますがいかがでしょう。
補足
申し訳ありません説明不足ですね。 LAN内からのアクセスはグローバルアドレスでアクセスしてもプライベートアドレスでアクセスしてもアクセスできます。 グローバルアドレスはTurboLinuxに振られています。ルーターなどは入れていません。 >外からアクセスしたときに、該当アドレスの80ポートがオープンできない=サーバが見えていない様に思いますがいかがでしょう。 外からアクセスしようとしたときは、ブラウザのエラーはかなり時間がたったあげく、 「サーバー」に問題が発生していますみたいなことが書かれています。
お礼
Ken2様 ご回答ありがとうございます。いろいろ試してみましたが、やはりできない様です。 CATVのコース変更をしてサーバーOKのコースに変更中です。 32,000円/月もするけど、、、いたい、、、 とりあえず、ここはいったん締めようと思います。 私の意味の分からない質問にご返事を下さった方、本当にありがとうございました。