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

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

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

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

VirtualBox

VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

Q&A

解決済

2回答

520閲覧

ゲスト(virtualbox)サービスをホストブラウザから見れるようにするためにポートをLISTEN状態にしたいです

korosuke0415

総合スコア16

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

VirtualBox

VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

0グッド

1クリップ

投稿2017/12/22 10:39

編集2017/12/24 12:53

###前提・実現したいこと
ゲスト(virtualbox)でのサービス(ポート番号3001)をホスト(Windows)のブラウザ(chrom)から見れるようにしたいです。
その為にポート番号3001をlistenの状態にしたいのですが、困っています。

netstat -an | grep LISTEN
とコマンドを打ったところ
3001はでてきません。
ご教授いただければ幸いです。

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

エラーメッセージ

###該当のソースコード

ここにご自身が実行したソースコードを書いてください

###試したこと
・sudo ufw allow 3001
sudo ufw allow 3001/udp
sudo ufw allow 3001/tcp

3つともALLOW状態になっていますがLISTEN状態にはなりません。ホストのブラウザから見れません。

・netcatを使いましたが調べてた限り、一時的にしかLISTENにできないようです。
###補足情報(言語/FW/ツール等のバージョンなど)
windows10 64bit
ubuntu 16.04
vagrant 2.0.1
virtualbox 5.2.2

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2017/12/23 12:21

ゲスト、とはコンテナや仮想マシンのことですか??
korosuke0415

2017/12/23 13:19

すみません、修正しました。virtualboxのことです。
guest

回答2

0

ベストアンサー

3001ポートをLISTENしたいといのは、RubyのWebアプリをWebサーバーを通してブラウザで閲覧したいといことでしょうか?

たぶん、VirtualBoxにLinuxなどをインストールして、Rubyを構築されているのだと思います。ブラウザでRubyアプリにアクセスするには、Webサーバーにアクセスしたい3001ポートをLISTENするように設定しなければなりません。つまり、TCP3001番ポートで待ち受けということです。

WebサーバーがApacheであれば、httpd.confLISTEN 3001と書いて再起動します。

上記のようにすることで、他の回答者の方が書いているようにVirtualBox内で下記のようなコマンドで確認ができます。

bash

1sudo netstat -tnap | grep 3001

あとは、Windows側のファイヤーウォールでアクセス許可を忘れずに行っておきます。

余談ですが、ブラウザでアクセスしてしばらくすると、ESTABLISHED(TCP通信されている状態)がなくなってしまうのですが、これは普通のWebサーバーにはKeepAliveという機能があって、通信状態をどれくらい保っておくかという設定です。OFFになっている場合は必要がなくなったらコネクションを閉じます。

grep LISTENとした場合は、待機中のみの検索なので、Webアクセスして速攻でコマンドを打っても結果は何も出ないので、grep ESTABLISHEDとします。両方見たい場合は下記のようにします。

bash

1sudo netstat -tnap | egrep 'LISTEN|ESTABLISHED'

投稿2017/12/24 15:52

Tomak

総合スコア1652

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

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

korosuke0415

2017/12/26 13:37

返信遅くなり申し訳ありません。 分かりやすく詳しい回答ありがとうございます。 仰る通りでVirtualBoxにLinuxをインストールして、Ruby(rubyonrails)を構築してapache2のサーバーを使っています。いただいた助言通りに致しましたが、ruby ./bin/rails s -b 0.0.0.0 -p 3001とすると重複するというエラーがでます。apacheとrailsのポート3001が重複してるという事だと思うんですが、どうしたらいいんでしょうか?apacheの中にrailsをデプロイするとかでしょうか?今そのように模索しています。
Tomak

2017/12/26 15:27

下記はRubyでサーバーを起動しようとするコマンドだと思います。Apache経由ではなく、Rubyでサーバーを起動したいのでしょうか? ということは回答に書いた「Apache」の話は全く関係ありません。 ---- ruby ./bin/rails s -b 0.0.0.0 -p 3001 とりあえず、VirtualBoxのネットワークをどのように設定しているかによるのですが、ホストオンリーNATで設定している場合は、Linuxホストローカルのループバックにサーバーを立てても外からは見えません。ですので、外から見えるIPアドレスにサーバーを起動しなくてはなりません。 例えば、外から見えるアドレスが「192.168.0.100」だとすると下記のようにやってみてはいかがでしょうか。外から見えるアドレスはVirtualBoxのLinuxで「/sbin/ifconfig」とすると見つけられると思います。 ---- ruby ./bin/rails s -b 192.168.0.100 -p 3001
korosuke0415

2018/01/14 14:53

年末年始を挟み、返事が遅くなり申し訳ありません。 無事解決しました。丁寧に回答いただきありがとうございました。
guest

0

ポートがLISTEN状態になるには、そのポートでサービスを提供するサーバーが起動している必要があります。ファイアーウォールの設定とは無関係です。
ncコマンドを以下のように使用するとTCPの3001ポートが待ち受け状態になります。

bash

1$ nc -l 3001

別のTerminalで以下のコマンドを実行すると3001ポート待ち受けを確認できます。

bash

1$ netstat -atn|grep LISTEN 2tcp 0 0 0.0.0.0:3001 0.0.0.0:* LISTEN 3tcp 0 0 127.0.1.1:53 0.0.0.0:* LISTEN 4tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 5tcp6 0 0 ::1:631

尚、実際にポートにアクセスするとncコマンドは終了してしまうため、待ち受けはなくなります。

投稿2017/12/23 13:33

hichon

総合スコア5737

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

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

korosuke0415

2017/12/23 14:40

3001が待ち受けになり、アクセスすると終了してしまうということですが、ホストブラウザーから3001を見ると終了するという事でしょうか? また、その場合はブラウザーはエラー表示になるのでしょうか? つたない質問でしたら、すみません(_ _)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問