前提・実現したいこと
環境
ホスト:mac OS X 10.14.6
仮想マシン: ホストマシンのVirtual Boxで実行中
- OS: ubuntu 18.04.3 LTS (CLI)
- ネットワーク: ブリッジ(独立したIPアドレスを付与)
Dockerコンテナ: 仮想マシン上で実行中
- OS: ubuntu
- イメージ: zabbix/zabbix-appliance:ubuntu-4.0.18
- ポートフォワーディング: 80->80
やりたいこと
ホストから、google chromeを使って、zabbixのログイン画面にアクセスしたいです。
発生している問題・エラーメッセージ
ホストのGoogle Chromeから
http://(仮想マシンのアドレス)
へアクセスすると、
このサイトにアクセスできません172.17.200.101 で接続が拒否されました。 次をお試しください 接続を確認する プロキシとファイアウォールを確認する ERR_CONNECTION_REFUSED
と表示されます。
試したこと
ホストマシン上で試したこと
ping (仮想マシンのIPアドレス) -> 64 bytes from (仮想マシンのIPアドレス): icmp_seq=0 ttl=64 time=0.436 ms ※ 仮想マシンはネットワーク上に見えている
nmap -sT -p80 (仮想マシンのIPアドレス) -> PORT STATE SERVICE 80/tcp open http ※ 仮想マシンの80番ポートは開いている
curl (仮想マシンのIPアドレス)/healthcheck -> htmlの文字列 この時、Dockerで実行中のZabbixの画面表示は -> (ホストマシンのIPアドレス) - - [11/Mar/2020:08:55:22 +0000] "GET /healthcheck HTTP/1.1" 200 3424 "-" "curl/7.54.0" "-" ※ curlでhttpの疎通はできている
docker container run --name=zabbix -p 80:80 -p 10051:10051 -e PHP_TZ=Asia/Tokyo -d \ zabbix/zabbix-appliance:ubuntu-4.0.18 -> メッセージなし その後、Google Chromeからhttp://localhostへアクセス -> zabbixのログイン画面が表示される ※ホストマシン上のDockerコンテナなら、接続に問題ない
仮想マシン上で試したこと
sudo ufw status -> 状態: 非アクティブ ※ ファイアウォールは設定していない
curl 127.0.0.1/healthcheck -> htmlの文字列 この時、Dockerで実行中のZabbixの画面表示は -> 10.0.2.15 - - [11/Mar/2020:07:53:38 +0000] "GET /healthcheck HTTP/1.1" 200 3424 "-" "curl/7.58.0" "-" ※ 自分自身へのcurlは成功する
これを見る限り、次の状態のように思えます。
- Dockerのポートフォワードはうまく行っている(仮想マシンにホストマシンからもcurlできるので)
- ホストマシンから仮想マシンへ接続できる(Pingが通り、ポートスキャンも成功するので)
- Docker上のzabbixは走っている(curlされると画面に表示が出るので)
- しかし、Google Chromeからのアクセスは、Dockerのzabbixが拒否している?
次に試すべき一手は何でしょうか。
よろしくお願いいたします。
実行結果で表示されているIPアドレス(10.0.2.15、172.17.200.101)はそれぞれどれに該当するのでしょうか?
curlで/healthcheck ではなく、/ にアクセスするとどうなるのですか?
10.0.2.15は仮想マシンから観た仮想マシン自身(VirtualBox内の仮想ネットワーク)
172.17.200.101は、ホストから観た仮想マシン(物理ネットワーク内の独立アドレス)です。
curlで仮想マシンの/にアクセスした場合、仮想マシン自身からはhtmlの文字列が返りました。
ホストからは/にアクセスは試しませんでした。
その後、パソコンを別のネットワークに接続し、再度ブラウザから接続したところ、ホストから仮想マシンのzabbixのログイン画面が表示できました。
明日、元のネットワーク環境で再度挑戦してみます。。。
あなたの回答
tips
プレビュー