質問: ### 前提・実現したいこと 自宅ルータの内側の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にそういう機能があるのは確認しましたが、理解できた範囲では指定していません。確認漏れがある可能性はあります。
回答: 私がわかる範囲でですが、影響する可能性がある設定などは以下だと思います。 * ルータの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に残っているが正常に表示されなかったのであれば、戻りパケットがどこかで拒否されていないか確認してみてはどうでしょうか。