ホストOSからゲストOSに接続できない。
ホストOSからゲストOSにhttp通信を行おうとした際に接続できない事象が発生した。
接続できない大きな原因として
①ゲストOSのファイアウォールが80番ポートが開いているか
②ポートフォワーディングにhttp通信を設定しているか
③ゲストOSのIPアドレスが正しいか
上記、3点の原因を理解した上でそれぞれの確認を行っていく。
※ホストOSのブラウザからゲストOSの接続は最後に行う。
まず、大抵の原因であろう1番から確認していく。
①ゲストOSのファイアウォールが80番ポートが開いているかの確認方法
ゲストOSの端末を開く。
最初にファイアフォールのサービスが起動しているかを確認。
下記コマンドを実行し、activeだった場合はサービス起動中であることを確認。
systemctl status firewalld.service
※もし、サービス起動中でない場合は、下記コマンドを実行し、ファイアフォールのサービスを起動させる。
systemctl start firewalld.service
次に本題である。下記コマンドを実行し、80番ポート(http)が開いているかを確認する。
firewall-cmd --list-all
実行すると、下記の内容がでてくる。
public (active)
target: default
icmp-block-inversion: no
interfaces: enp0s3
sources:
services: dhcpv6-client http ssh
ports: 443/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
「services」にhttpがあれば、80番ポートの通信が許可されていることがわかる。
もし、許可されていない場合には、下記コマンドを実行し80番ポートの通信を設定する。
firewall-cmd --add-service=http --zone=public --permanent
これで、もう一度「firewall-cmd --list-all」を実行し、80番ポート(http)が設定されていることを確かめる。
確認できたら、次に進む。
②ポートフォワーディングにhttp通信を設定しているかの確認方法
※ポートフォワーディングとは。。?
→特定のポートからの通信を、特定のポートの通信に自動的に転送すること。
virtualboxのウィンドウから
「設定」-「ネットワーク」-「高度」-「ポートフォワーディング」を開く。
下記の図の、右側の「+」ボタンを押下し、HTTPのように設定する。
ホストポートに関しては、ウェルノウンポートでなければなんでもよい。今回は「5000」を設定。
以上で、ポートフォワーディングの設定は完了。
②ゲストOSのIPアドレスが正しいかの確認方法
ゲストOSのIPアドレスを確認するためには、ゲストOSの端末で、下記コマンドを実行
ip addr
確認できたら、早速ホストOSからゲストOSにhttp接続を行ってみる。
ホストOSのブラウザで下記を実行する。
http://[③で確認したゲストOSのIPアドレス]:[②で設定したホストポート]/
下記画面が表示されたら、ゲストOSにhttp通信できていることを確認。
今回は以上となります。