- ベストアンサー
Webサーバーを二台使用する場合の最善の方法
- 中小企業がWebサーバーを二台使用する場合、効率的な方法は何でしょうか?
- CentOSでデータベース用のWebサーバーを構築し、Windows Serverと統合するための方法を検討しています。
- リバースプロキシを使用して、https://*******.homeserver.com/と192.168.1.(CentOS)のアクセスを切り替えることができるのでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
要するに ・外部から社内の2つのWebサーバーに対してそれぞれアクセスできるようにしたい ・グローバルIPアドレスは1つしかないから、ポートを80と8080で使い分けるようにした つまりルーターで以下のポート転送(ポートマッピング)設定を行っている 80ポートは WindowsServerのローカルIPアドレスに ポート転送 8080ポートは、CentOSのローカルIPアドレスに、ポート転送 ・このため、CentOSのWebサーバーの待ち受けポートは8080としてみた。 ・これでCentOSのSELINUXを無効にするとうまくいったが SELINUXは無効にしたくない なので、 ・SELINUXを有効にしたまま、Webサーバーの待ち受けポートを8080にしたい または ・CentOS側のWebサーバーの待ち受けポートを80のままにする方法を取りたい ってことですね。 案1) SELINIXの、httpに許可されているポート番号を使う semanage port -l | grep -w http_port_t で確認すると、80、443、488、8008、8009、8443 あたりが許可されているだろうから ポート番号を8080でなく 8008とか8009とかを使う (アクセス側のURLやルータでのポート転送やWebサーバーの待ち受けやFireWall設定などを8008に変更) http://xxxx.com/ または http://グローバルIPアドレス/ →WindowsServer http://xxx.com:8008/ または http://グローバルIPアドレス:8008/ →CentOSの8008 案2) SELINUXに httpの許可ポートを追加する semanage port -a -t http_port_t -p tcp 8080 http://xxxx.com/ または http://グローバルIPアドレス/ →WindowsServerの80 http://xxx.com:8080/ または http://グローバルIPアドレス:8080/ →CentOSの8080 案3) ルータのポート転送機能ですが、NECのAtermとかのポート転送だとできないのですが、 例えばYAMAHAのだと、ポート転送(静的IPマスカレード)で、転送するポート番号も付け替できるので 外部からの8080ポートを、内部には80ポートで転送ってことができます。 http://xxxx.com/ または http://グローバルIPアドレス/ →WindowsServerの80ポート http://xxxx.com:8080/ または http://グローバルIPアドレス:8080/ →CentOSの80ポート (ルータで8080ポートを80ポートに変換) 案4) リバースプロキシを通して、アクセスしてきたURL中のホスト名で代理アクセス先を振り分けでもできますね。 この場合、ルータでは、外部からの80番ポートアクセスを リバースプロキシサーバーのIPアドレスの80番に転送するだけで あとは リバースプロキシ側で、リクエストURIで転送先を設定して http://aaaa.xxxx.com/ →WindowsServerの80ポート http://zzzz.xxxx.com/ →CentOSの80ポート http://グローバルIPアドレス/ →CentOSの80ポート (リバースプロキシでの設定次第) って感じにできるかと。
その他の回答 (3)
- doradorabu
- ベストアンサー率16% (3/18)
見る限り、セグメント一つで直接繋いでるように見えます。 そして、ファイアウォールもないように見えます。 そして、WWWでDBの編集? とナナメ読みしてますが、認識はあっていますか? リバプロなどで技術的なアクセスルートはできたとしてもセキュリティのないアクセスなんてリスクしかない。 中小企業だから、セキュリティ低いんです、とか言い訳になりませんよ。 技術要求に応えるだけがエンジニアではありません。
- anmochi
- ベストアンサー率65% (1332/2045)
SELinuxについては私の勉強不足でした。深くお詫び申し上げます。 さて、リバースの関係から3台(Poundサーバー、CentOSのWeb、WindowsのWeb)にしたい(してみようと構想を練っている)という事ですかな。 リバースプロクシを使うのであれば、お勧めはドメイン名によって別のコンテンツにアクセスさせる方法です。「名前ベースのバーチャルホスト」と言います。これとリバースプロクシを組み合わせます。以下、ざっくりと構成を考えてみました。 今使っているドメインとは完全に別のドメイン、例えばexample.comというドメインを取得し、zaiko.example.comを********.homeserver.comへのCNAMEにします。hogehoge.homeserver.comが取得できれば良いのですが恐らく1台のWindows Home Serverで2つのドメインは取れないんじゃないかと(未検証)。要するに2つのドメイン名が1つのIPアドレスを指すようにするのです。この時、逆引きはどちらか片方を指すので問題ありません。 ・光ルーターでインターネットから443へのアクセスはWindowsサーバーへ振り分ける(Pound2.6以降はSSLのSNIに対応しているので外部からのアクセスをPoundで一元管理したければPoundへ振り分けても良い) ・光ルーターでインターネットから80へのアクセスはPoundサーバーへ振り分ける ・Poundサーバーで80番にアクセスしてきた時のドメイン名でWindowsサーバーとCentOSサーバーに振り分ける これで、グローバルIPアドレスは1つで複数のサーバーにHTTPアクセスする事ができるようになります。 もしサーバー台数を減らしたい(できればCentとWinの2台で済ませたい)という場合はapacheも名前ベースのバーチャルホスト&リバースプロクシができるので ・光ルーターでインターネットから443へのアクセスはWindowsサーバーへ振り分ける(Apache2.2.12以降はSSLのSNIに対応しているので外部からのアクセスをCentOSで一元管理したければCentOSへ振り分けても良い) ・光ルーターでインターネットから80へのアクセスはCentOSサーバーへ振り分ける ・CentOSサーバーで80番にアクセスしてきた時のドメイン名でWindowsサーバーへリバースするか自分で処理するかを分ける。 こちらの方が(ハードウェアの)管理が楽かも知れません。 別のドメイン名を取れなかった場合はしょうがないのでポート番号ベースでサーバーを分けましょう。この時も、光ルーターの性能によりますがインターネットから81へのアクセスをCentOSサーバーの80へ振り分ける事ができるはずです。少なくともNTT東西のフレッツ光ネクストでレンタルされるルーターであればできます。フレッツ光プレミアムの場合は・・・・知らない。 ・光ルーターでインターネットから443へのアクセスはWindowsサーバーの443へ振り分ける ・光ルーターでインターネットから80へのアクセスはWindowsサーバーの80へ振り分ける ・光ルーターでインターネットから81へのアクセスはCentOSサーバーの80へ振り分ける この場合、インターネット側から在庫管理PHPにアクセスする時は http://********.homeserver.com:81/ というのになりますがそれが気にならなければこれが一番構成的には楽かも知れません。 「いやインターネットからアクセスするんだからHTTPSでしょ普通」というのであればSNIを利用したリバースプロクシ構成かHTTPSでポート番号を分けるかになるでしょうか。 今までの話を総合して一番お勧めできる構成は「社内にOpenVPNサーバーを立ててアクセスしたい外出時の端末にOpenVPNクライアントを入れて社外からは社内へVPNしてCentOSやWindowsはVPN経由のLAN内(社内)で使う」というものです。VPNを使うとドメインじゃセキュリティじゃなどそこらへんを丸々VPNに任せて社外から社内に居るのと同じ感じで社内のサーバーにアクセスする事ができるようになります。
- anmochi
- ベストアンサー率65% (1332/2045)
仮にこれが社内LANの中で閉じた話で社外から社内にアクセスする事はないという場合、何も困る事はないですだ。社内DNSを管理している人に「CentOS用にzaiko.homeserver.comっていうドメインを割り当ててくれ」と言えばそれで済む話。それで https://*******.homeserver.com→Windows Serverへ https://zaiko.homeserver.com→CentOSへ アクセスできる。 落ち着いて今何が問題なのかをもう一度考えて欲しい。 多分今のままだと少なくともこのQAであなたが満足する回答は得られないので、以下の内容を整理して欲しい。 ・LAN内のネットワーク構造 Lとかそういう記号ではなく線を引いた方が分かりやすいだろう。また、IPネットワークの時にはハブを書く必要は無い。IPネットワークでは全てのノード(コンピューター、ルーターなどの総称)は対等なので何が上で何が下というのはないが、下図では光ルーターの下に一つの物理ネットワークセグメントがあり、そこにパソコン、サーバー、複合機がぶら下がっているというイメージで作図している。 (インターネット) | フレッツ光ルーター | +---社内端末1~4 | +---複合機 | +---Windows Server | +---CentOS ・社内端末1から********.homeserver.comへpingを打つとIPアドレスは何になるか。これが192.168.1.XXXとかなら社内にDNSサーバーがある。多分光ルーター。これがローカルIPなら社内DNSサーバーに一つ設定を追加するだけでそれぞれの80番にアクセスすれば良いので解決。要するにWindows ServerやCentOSにアクセスするのは社内端末だけなのか、インターネット(社外)から光ルーターに入ってきてアクセスするのかという点で、これが一番重要な情報だ。 ・HTTPなのかHTTPSなのか。これは意外と重要な情報。HTTPSなのに80番というのは割とおかしい。そういう設定が出来ないとは言わないが普通はやらない。 後、apacheで80番を8080番に変えただけでSELinuxがブロックをするとはちょっと考えにくいのだがそこは大丈夫だろうか。CentOS6ならiptables、CentOS7ならfirewalldがブロックするというのなら話は分かる。この場合は堂々と穴を開けるべきだ。ファイアーウォールというのはそういうものなのだから。
補足
色々と情報不足で申し訳ございません。 両方とも、外部からアクセスして使用することが前提です。(現場での作業報告なども、CentOS側で整理できれば、と思いましたので...) ・グローバルIPアドレスは一つで固定なので、外部からアクセスした場合、ポート指定なしだとWindows Server側につながってしまいます。当然、ルータ側の設定の宛先ポートがWSになってるからなのですが... そこで8080番ポートを開放し、そちらの宛先をCentOS7側へ流し、CentOSのほうも、httpdの設定も8080に、firewalldの設定も8080番は空けました。が、外部(わかりやすいようにスマホのテザリングを使用したノートパソコン)からアクセスしようとすると、CentOS端末のGUIにSELinuxがブロックしました系のダイアログが出まして....。ログを見る限りやはりSELinuxが関係している様なので、一度無効にしてみたところ、すんなりアクセスできてしまったというわけです。(アドレスはhttp://***.***.***.**(グローバルIPアドレス):8080/index.html です。 いまいち原因がわからないうえ、CentOS側にも色々ソフトを入れすぎていたので、一度整理しようと一度OSをインストールしなおしました。また、セキュリティなどの意味合いを含めて、そこらへんに転がってた古いPCにCentOSを入れ、poundというソフトウェアでアクセス先を管理したいと思ってます。(それなら80番ポートだけで済むので、アドレスに:8080なんてつけなくて済むようなので。) が、ネット上だとほとんどがランダムでの割り当てなので、他に条件を与えられないか、と思ったのが、質問内容です。紛らわしい書き方でごめんなさい....。 情報追加しておきます。 フレッツ光ルーター | +---社内端末1~4 | +---複合機 | +---Windows Server(使用ポート:80,443)リモートWebアクセスのみ | +---CentOS7(使用ポート:80,22)※22番は外部からCUIで弄るとき用、セキュリティ的にアレなので実際運用するときは別にします。 尚、Windows serverは私が入る前からおいてあり、今回、新規にCentOSのサーバーを追加する形になります。
補足
回答感謝します。現在、案4を試みるために、そこらへんにあったVista機を拾ってきて、CentOSをインストールし、Poundの設定に四苦八苦しております。土日は休みなので、その間でなんとかならなかったら別スレッドで設定に関して聞いてみたいと思っております。