質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Router

Routerは、異なるネットワーク同士を相互に接続するための通信機器。インターネットでのデータを自動的に振り分け、一つのインターネット回線を複数のコンピュータで使用することが可能です。DHCPによりIPアドレスを自動的に割振りすることもできます。

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

Q&A

解決済

2回答

675閲覧

VMゲストのwebサーバを自宅ルータの外に公開したい

sage

総合スコア1216

Router

Routerは、異なるネットワーク同士を相互に接続するための通信機器。インターネットでのデータを自動的に振り分け、一つのインターネット回線を複数のコンピュータで使用することが可能です。DHCPによりIPアドレスを自動的に割振りすることもできます。

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

0グッド

0クリップ

投稿2019/04/18 08:12

編集2019/04/22 04:57

前提・実現したいこと

自宅ルータの内側のWindows10 PCにVirtualboxをインストールし、CentOSのゲストを
作成し、apacheをインストール、適当にwebページを作成し、ホストからVMゲストにブラウザでアクセスしてwebページが見れることは確認済。

これをルータの外部に公開したい。

VMゲストはNAT、host-only、bridgeの3つのnicを定義している。
ルータのport forwardでbridgeのnicを指定してTCPのport 80をVMゲストに転送するように設定したが外部から接続できない。
(厳密に言うと/var/log/httpd/access-logに外部からのアクセスが記録されている。しかしスマホからアクセスするとaccess-logにもerror-logにも記録がなく、スマホ側にはGateway Timeoutのメッセージが出る)

VMゲストはCentOS6とCentOS7の両方があり、どちらでもいいから公開したい。

発生している問題・エラーメッセージ

外部からルータのglobal ip addrをすると以下のメッセージがでて、接続できない。

[504] Gateway Timeout

該当のソースコード

ソースコード

試したこと

portが開いているかチェックするツールを使って外部からアクセスしたら80は開いていた。

ルータの内側の他PCからもVMのIP-addr指定でブラウズできることを確認した。

bridge以外の2つのnicをifdownでoffにし、bridgeのnicのみでもVMゲストからyum check-updateや、VMゲスト上のブラウザから外部ネットワークにアクセスできることを確認しました。

VMゲストでtcpdumpを使い、外部からのport80へのアクセスが届いていることまで確認できました。

補足情報(FW/ツールのバージョンなど)

VirtualBox: 6.0.6 (最新)
CentOS 6 (yumで最新にしている)
CentOS 7 (yumで最新にしている)
当初(質問時)はホスト上のNorton360がport 80へのアクセスを停止しており、VMゲストに通信が届いてなかったが、修正、届くようになった。
(VMゲスト上のtcpdumpでスマホからのアクセスを確認できた)

apache(hhtpd)やnicの定義中に同一セグメント内からしかアクセスを許可しないような指定があり、間違ってそれを指定してしまっているのではないかと疑っています。
httpd.confにそういう機能があるのは確認しましたが、理解できた範囲では指定していません。確認漏れがある可能性はあります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

over

2019/04/18 08:16

VMのブリッジに指定してあるインターフェースはゲートウェイを設定して、インターネット上のリソースにアクセスできることを確認していますか?
over

2019/04/18 08:41

そうですか。そうなると不明ですね。 以下確認させてください。 1)proxy構成か? 2)ルータ直下にVMホスト/ゲストがある構成か? 3)ルータ型番(ご提示可能な場合) 4)仮想ホストのFW状態(ローカル接続可でも外部からの接続は不可ということも考えられる) なお、ブリッジインターフェースのみ生かした状態でtcpdumpを仕掛け、グローバルから接続した場合、パケットがキャッチされるか確認できますか? パケットがキャッチできているのであればルータの問題のような気がします。
sage

2019/04/18 08:58

ここに回答を書いていいのかな? (1) proxyは使っていません。 (2) bridgeですからVMホスト/ゲスト、他PCのサブネットは同じです。 (3) ルータはPR-500MI(NTT) (4) ゲストのfirewall設定を疑っているのですが、ホスト(Windows10)のfirewallが影響するのでしょうか? 確かにwindows側でport80を開けてはいないはずです。
sage

2019/04/18 09:06

ホストでNorton360を使っており、ここでport80を閉じていたのが影響したようです。 Norton360の設定を変更したらルータ外からアクセスした時のメッセージが変わりました。 「正常に接続できませんでした」 メッセージは変わりましたが、接続できないことに変わりはありません
over

2019/04/18 09:15

そうなると仮想ホストまではリクエストが届いていそうです。 tcpdumpでの切り分けが一番手っ取り早いのですが無理そうですか? そうであれば、まず切り分けとして一時的にNorton360、Windows FW(ディフェンダーあれば含む)、CentOS FW、Selinux無効にして、ホスト/ゲストが問題なのか、ルータが問題なのかを確認する必要があります。
sage

2019/04/18 09:28

tcpdump、名前は知っているのですが、使ったことがありません。 httpdを動かしているVMで動かすんですよね? とりあえず起動してみたら(tcpdump -i eth2 -A) なんかたくさんのデータが流れました。
sage

2019/04/18 09:36

tcpdump -i eth2 -A port 80 -vv とやると開始メッセージは出ますが、外部からアクセスしてみましたが何もデータは出力されません。
sage

2019/04/18 09:55

ということでwindows10にWin10PcapとWiresharkをインストールしましたがwindowsにつながっている物理nicを見るのですよね? 外部からアクセスしても何も表示されません。 ということはやはりルータが犯人?
sage

2019/04/18 09:58

いや、スタートを押していないだけだった。port80に絞り込む方法を探します
sage

2019/04/18 10:07 編集

tcp.port==80 を指定した後、外部からアクセスしたがVMゲストのip-addrがついたデータは流れない。 やっぱりルータが犯人? でもnorton360でport 80を開けたら外部からの見え方が変わったんだから windowマシンまできているはずだよね?
over

2019/04/19 00:18

ルータからマシンまでパケットが届いていないということですね。 ルータの転送設定がおかしいようです。
sage

2019/04/19 04:27

VMホスト上のNorton360でport80の開け閉めで外部からの見え方が変わるのなだからルータは通っているのではないですか?
over

2019/04/19 04:42

発生している現象からそのように思いましたが、仮想ホスト/ゲストにパケットが届いていないことを考えると関係ないと判断せざる負えません。 ※もちろんキャプチャツールを正しく使用してキャプチャできるべき設定をしていること前提
sage

2019/04/21 10:51

VMホスト上のNorton360でport80の開け閉めをすることで外部からの見え方が変わるのだからルータは通っている。にもかかわらず、tcpdump/wiresharkで表示されないのはtcpdump/wiresharkの使い方が間違っているのでは? ↓ VMゲストでのtcpdumpにport80のアクセスが表示され始めました。fromのアドレスからもスマホからのアクセスと認識できます。
over

2019/04/22 01:11

そうであればVMゲストまでリクエストは届いているようです。 その状態でWebコンテンツが表示されないのでしょうか?
sage

2019/04/22 01:12

まだtimeoutのメッセージが出ます。
over

2019/04/22 01:29

もし、外部からのリクエスト時にtcpdumpでキャプチャでているにも関わらず、timoutとなるようであれば、帰りの応答パケットが外部端末まで届いていないことが推測されます。 考えらえるのは・・・ ・仮想ゲストがインターネットに疎通できる状態になっていない →前段でyumで外部リソースにアクセスできることを確認しているとのことで問題ないとの認識 ・仮想ゲストから外部への疎通でパケットフィルタされている →nortunで仮想ホストに対する80/tcpを開放したとのことですが、逆に仮想ホストから外部への通信ポリシーで疎外されていないか確認してみては如何でしょうか。切り分けのためnortunを一時無効にするでも良いかも。 ・そもそもルータの設定がおかしいかも?
sage

2019/04/22 02:09

Norton360を完全停止させるのはリスクが大きいので..。 webアクセスを上下両方に変えてみましたが変化なし。 ホストのNorton360が原因の場合、サブネット内の別PCからアクセスできたのは説明できますか? /var/log/httpd/access-logに以下のip-addrからのアクセスのログが残っていました。 しかし自分でスマホからと推測できるアクセスはありませんでした。 要求元をdig -xで探ってみました: 4月18日 18:03~20:33 190.97.188.108 108-188-97-190.reverse.tevisat.net 104.152.52.29 internett.org 168.194.84.24 不明 177.200.30.156 177.200.30.156-user.adwave.spi.br 191.5.161.70 191.5.161.70.1toc.com.br 103.28.220.83 ns.apnic.net 14.102.58.12 不明 191.242.245.191 ns.lacnic.net 181.210.33.86 ns01.hondutel.hn /var/log/httpd/error-logには外部からのアクセスに関するログは見つかりません。 但し、さきほど、ホストからアクセスし、その後、スマホからアクセスしました。 tcpdumpでは両方のアクセスが表示されましたが、access-logにはホストからのアクセスのみが残っていました。 スマホに問題がある???
over

2019/04/22 02:19

「ホストのNorton360が原因の場合、サブネット内の別PCからアクセスできたのは説明できますか?」 WindowsFWを例に挙げると、ローカルネットやドメインネットワークからの80/tcpは許可しています。 従って、nortonの設定に依るとしか言えません。 私は初回のやり取り見てもらえばわかると思いますが、ローカルネットから接続できることからFW等パケットフィルタへの疑いをしておりません。 その中で、nortonへのアプローチを開始したのはご質問者様自身です。 何故私に説明を求めます?
sage

2019/04/22 02:30

Nortonの設定を外して確認してみたら、と言われたので関係ないのではと逆に問い合わせただけです。 私が疑っているのにはhttpd.confとnicの定義です。Nortonではありません。 しかしNortonかも、と指摘されたので、本当にNorton?と疑問に思ったしだいです。 httpd.confはAllow/Denyをキーワードにして検索したのとServerNameをチェックしたのみです。 他にチェックすべきところはありますか?
over

2019/04/22 02:41 編集

そもそもnortonというキーワードは出ていなかった状態で、norton設定変更により状態変化があったとしたら疑うのは当然ではないでしょうか?例にとって理由も述べました。 その上でご自身が疑いをかけているものがあるのであれば、ご自身の感性に従いご解決ください。 こちらとしては、記載内容から状況を判断せざる負えないので、設定がどうのこうのと言われても評価のしようがありません。
sage

2019/04/22 03:01

Nortonの設定の件は解決済とかいたのに、まだNortonにこだわっているのはあなたではありませんか。Nortonの話は止めましょう。本当に関係があるというのならば論理的に説明してください。 疑問をかけているが、解決できていないからここで質問しているのです。 解決に結びつかない、質問に答えられないのならば他の人と同様、出てくる必要はありません。話をかきまぜないでください。
sage

2019/04/22 03:10 編集

/var/log/httpd/access-logを見ると外部からのアクセスが記録されている一方で、 スマホからアクセスしてもログに記録が残らないのは何故でしょうか。 tcpdumpで見る限り、スマホからVMゲストのport 80へアクセスは到達しています。
over

2019/04/22 03:30

・「Nortonの設定の件は解決済とかいたのに、まだNortonにこだわっているのはあなたではありませんか。」 → 文章を追って読んでください。 可能性を複数挙げています。その中でnortonの説明を求められたから、それに対しての回答をしています。こだわっているのではありません。可能性の一つとして挙げています。 ところで、どこに「Nortonの設定の件は解決済」とあるのでしょう? ・「本当に関係があるというのならば論理的に説明してください。」 →「WindowsFWを例に挙げると、ローカルネットやドメインネットワークからの80/tcpは許可しています。従って、nortonの設定に依るとしか言えません。」と言っています。ご記載頂いている内容から出来る限り論理的に述べています。 ・「解決に結びつかない、質問に答えられないのならば他の人と同様、出てくる必要はありません。」 → 後出しの情報もすべてエスパーして回答できなければコメントするなと?本気で言っています? コメントを一度でもしたら回答義務が発生すると思っているのでしょうか。
sage

2019/04/22 04:29

話が発散しかけています。 ホストのfwがどうやって影響するのですか。 今、解決したいのは自スマホからVMゲスト(CentOS)のport 80に通信が到達しているのに何故httpdのaccess-logに出ないかという点です。error-logにも残っていません。 一方で、外部からのアクセスがaccess-logに残っている。 このあたりの矛盾をどう説明するのか、どう解決するのかという点です。
over

2019/04/22 04:42

あなたを助けてくれる親切な方のご登場をお待ちください。
guest

回答2

0

以下の2点の設定上の問題点によりアクセスできなかった。

  1. VirtualBoxと言えどwindowsアプリなので、ホスト上でport 80へのアクセスを制限していたら、ゲストへアクセスは到達しない。
    → ホスト上のNorton360でport 80へのアクセスを制限していた。これを解除したら外部からの見え方が変わった。
  2. VMゲスト上でbridge、host-only、NATとNICを3個も使用しており、想定外のNICから応答が返っていたらしい。
    このため、うまく通信ができなかった。
    → NICをbridgeの1個のみonlineにしたらきちんと応答が返るようになった。

外部からのアクセスログが見つかった時点で、テスト条件設定(動作確認)のやり直しが必要だった。
整理せずにいろいろとやりすぎていた。
ログに残っている以上、どれかの条件で外部からアクセスできたのは間違いないのだから、
やったことを整理し、ひとつひとつ、条件と結果を切り分けていけばよかった。

投稿2019/04/27 08:36

sage

総合スコア1216

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

私がわかる範囲でですが、影響する可能性がある設定などは以下だと思います。

  • ルータのFW、NAT(ポートフォワーディング設定をしているとのこと。解決済み)
  • ホストのFW(Norton360とのこと。解決済み?)
  • ゲストのFW(iptables, firewalld)
  • httpd.confでのアクセス制限
  • htaccessでのアクセス制限

今、解決したいのは自スマホからVMゲスト(CentOS)のport 80に通信が到達しているのに何故httpdのaccess-logに出ないかという点です。error-logにも残っていません。

一方で、外部からのアクセスがaccess-logに残っている。
このあたりの矛盾をどう説明するのか、どう解決するのかという点です。

apacheのエラーログもアクセスログもないのであればゲストのFWで止められているのではないかと思います。
外部からのアクセスがaccess-logに残っているというのは、正常に通信できたのでしょうか。access-logに残っているが正常に表示されなかったのであれば、戻りパケットがどこかで拒否されていないか確認してみてはどうでしょうか。

投稿2019/04/22 08:35

ozwind918

総合スコア1140

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sage

2019/04/22 10:45

httpdのacess-log、error-logを見ると (1) サブネット内の別PCからアクセスするとaccess-logにも残るし、実際にブラウザに表示される。 (2) 誰かが外(例えば104.152.52.29)からアクセスしたのはaccess-logに残っているが、(第三者なので)webを見れたかどうかは分からない。 (3) 自分で(スマホで)ルータの外からアクセスしようとすると、httpdが動作しているVM上のtcpdumpでport 80まではアクセスしてきているのは確認できるが、access-log、error-logには何も残らない(スマホ側はtimeout表示となる)。 スマホでのアクセスのみを考えるとVM上のfirewallも疑わしいが、それなら何故104.152.52.29からだったらアクセスログが残るのかが説明できない。途中で設定を変えた時があり、その中のどれかだと外部からアクセスできた? (但し設定を変えた時には毎回スマホでアクセスを試みたはず) ということで、access-logにはログが残っていません(残っているのは他人のアクセス)。 従って調査すべきは戻りパケットではなく、httpdへのパケットではないでしょうか。 この場合、何をどうやって確認すれいばいいのでしょうか? iptablesでrejectした結果はどこかにログが残るのでしょうか? ちょっとやってみた(iptables -A INPUT -p tcp --dport 80 -j LOG)のですが、スマホからアクセスしても/var/log/messagesにはこれに関するログは何もありませんでした。
ozwind918

2019/04/22 11:09

他の人のアクセスはログに残るのに、質問者さんがスマホからアクセスしたときはログが残らないのですね。 そのような設定は普通しないので、iptablesが原因であることは考えにくいですが参考までにiptablesのログ出力先は/etc/syslog.confに記載されていると思います。 軽く調べた感じなので明確にこうだとは言えませんが、apacheのアクセスログはレスポンスを返す際に書き込まれるようです。戻りパケットがきちんと行かないのでアクセスログが書き込まれていないのではないでしょうか。 スマホはWifiに接続していたりしませんか?ゲストのブリッジ以外のインタフェースからパケットを戻そうとしてしまっていたりしませんかね?
sage

2019/04/22 12:27

apacheがアクセスログを返すのがレスポンスを返す際ならば、レスポンスが返っていないので、ログに残っていない 理由は理解できます。 スマホはwi-fi接続にするとルータの内側からの接続になってしまうので、そこはきちんと意識してアクセスしています。 nicは、また3つある状態でテストしているので、どこから返っているのか分かりません。 eth2(bridgeひとつ)だけにしてテストをやり直します。 今、一番気にしているのはhttpd.confのServerNameの記述です。何度か書き換えており、 現在は「ServerName :80」のみになっています。ここにdynamicdnsに登録しているホスト名を書いていた時があり そのときだけ(第三者が)外部からアクセスできたのでは? というものです。外部ip-addrを書いていた時もあります。 ★★↓ スマホからアクセスできました。 やったことは2つ (1) nicをeth2(bridge)のみにし、natとhost-onlyはifdownで停止させた。 (2) /etc/httpd/conf/httpd.confの2項目を変更 変更前 ServerName :80 UseCVanonicalName Off 変更後 ServerName 192.168.120.24 :80 UseCVanonicalName On この後、httpd restartをしてスマホからwi-fiはoffにして(ルータのグローバルip-addr指定で) アクセスしたらwebページが表示されました。 もちろん、tcpdumpにも/var/log/httpd/access-logにもログが残っています。 ★★↓ この後、絞り込むためにeth0とeth1をifup してテストするとスマホへの応答がなくなりました。 nicの問題だったようです。 ありがとうございました。 もう少し調べることがありそうですが、とりあえずの目的は達成できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問