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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Azure

Azureは、マイクロソフトのクラウド プラットフォームで、旧称は Windows Azureです。PaaSとIaaSを組み合わせることで、 コンピューティング・ストレージ・データ・ネットワーキング・アプリケーションなど多くの機能を持ちます。

Q&A

解決済

4回答

6048閲覧

Azure仮想マシンのパブリックIPの8080番ポートでマシンにアクセス出来ない

wangzj

総合スコア53

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Azure

Azureは、マイクロソフトのクラウド プラットフォームで、旧称は Windows Azureです。PaaSとIaaSを組み合わせることで、 コンピューティング・ストレージ・データ・ネットワーキング・アプリケーションなど多くの機能を持ちます。

0グッド

0クリップ

投稿2018/10/12 05:05

編集2018/10/12 08:39

前提・実現したいこと

nodejsを勉強しています。
環境:Azure Linux仮想マシン

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

node index.js
で起動して、他の端末で
curl -s -X GET http://127.0.0.1:8080/でアクセスできますが、
ほかのPCでパブリックIpで
curl -s -X GET http://13.78.**.**:8080/でアクセスできません。
何か設定とか足りないでしょうか?

wang@study-wang:~$ curl -s -X GET http://127.0.0.1:8080/ <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>EJS Sample &lt; Code&lt;</title> </head> <body> <h1>EJS Sample &lt; Code&lt;</h1> <p>This is EJS< Sample... <</p> </body> </html> wang@study-wang:~$

パブリックIpでアクセス

wang@vmBrfAdm01:/root$ curl -v -s -X GET http://13.78.60.213:8080/ * Trying 13.78.60.213... * connect to 13.78.60.213 port 8080 failed: Connection timed out * Failed to connect to 13.78.60.213 port 8080: Connection timed out * Closing connection 0

該当のソースコード

index.js

nodejs

1var express = require('express'); 2var app = express(); 3var ejs = require('ejs'); 4app.engine('ejs', ejs.renderFile); 5app.get('/', function(req, res) { 6 res.render('../test.ejs', { 7 title: "EJS Sample Code", 8 content: "This is EJS Sample..." 9 }); 10}); 11app.listen(8080);

test.ejs

nodejs

1<!DOCTYPE html> 2<html> 3<head> 4<meta charset="utf-8"> 5<title><%=title %></title> 6</head> 7<body> 8<h1><%=title %></h1> 9<p><%-content %></p> 10</body> 11</html>

試したこと

8080ポートを公開してることを確認した
イメージ説明

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

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

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

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

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

otn

2018/10/12 05:17

エラーメッセージは?
wangzj

2018/10/12 05:18

エラーメッセージなし、何も出てこないです。
taka-saan

2018/10/12 05:21

curlに-vを付けるとエラーが出力されます。おそらく「Connection refused」だと思います。その場合、8080ポートの開放ができていないだけの可能性が高いので、「試したこと」に、どうやってポート解放したかをもう少し詳しく書いてみてください。
otn

2018/10/12 05:21 編集

正常終了すると言う事ですか?状況を質問に追記してください。
wangzj

2018/10/12 05:27

受信ポートの規則に8080を追加しました。画像貼付けを追加しました。
wangzj

2018/10/12 05:37

エラー情報が出てきました。Connection timed outとなっています。
guest

回答4

0

ベストアンサー

それは単純にファイアウォールやルーティング絡みで、
パブリックIPの8080番ポートでマシンにアクセス出来ないだけです。

Azureは数年前業務で少し触っただけでうろ覚えですが、
AzureってLAN環境の設定がガッツリあって外に出すだけで結構大変じゃなかったですっけ?
LANとマシンのネットワークカードの2種類で設定して、最後にマシン内のiptablesも確認する必要があったような…

この辺は「Azure ポート開放」などで調べながら試行錯誤するか、
いっそAzureのサポート担当に聞いた方が早いかもしれません。

投稿2018/10/12 08:35

miyabi-sun

総合スコア21158

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

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

wangzj

2018/10/12 08:40

おっしゃったとおりです。 タイトルも変更しました。
guest

0

linux側のFWが起動されていませんか?
iptables または firewalld

投稿2018/10/12 05:32

taka-saan

総合スコア665

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

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

wangzj

2018/10/12 07:09

sudo ufw status sudo ufw allow 80 sudo ufw enable ぐぐるで検索して、↑のコマンドでやってみましたが、なかなか繋がれません。
taka-saan

2018/10/12 07:29

8080をallowしないとですね。 原因切り分けのために、sudo ufw disable で一旦全部を無効にしてみて試すと手っ取り早いです。
wangzj

2018/10/12 07:37

Azureで作成したubuntu仮想マシンです。 本番環境に、同じな仮想マシンがありまして、 本番:13.78.**.*1 勉強:13.78.**.*3 勉強環境から、本番に繋がってみたら、OK wang@study-wang:/root$ nc -v -w 1 13.78.**.*1 -z 80 Connection to 13.78.**.*1 80 port [tcp/http] succeeded! 本番から、勉強に繋がってみたら、NG $ nc -v -w 1 13.78.**.*3 -z 80 nc: connect to 13.78.**.*3 port 80 (tcp) failed: Connection refused 本番環境で、sudo ufw statusを実行すると Status: inactive 勉強環境も同じです。 sudo ufw allow 80、8080を追加しても、なかなか繋がれません。
guest

0

IPv4 アドレスを指定して、

app.listen(8080, 0.0.0.0 );

にするとどうなりますか?

投稿2018/10/12 05:29

CHERRY

総合スコア25171

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

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

wangzj

2018/10/12 05:35

app.listen(8080, '0.0.0.0' ); で試してみましたが、状況が変わりません。
CHERRY

2018/10/12 05:36 編集

パブリック IP で、ポート 80 の Web とか 22 の ssh は接続できるんですよね?
CHERRY

2018/10/12 05:37 編集

あと、curl は、どこから実行されていますか? お手元のPCでしょうか?
wangzj

2018/10/12 05:47

端末から、パスワード接続とssh接続、両方できています。
wangzj

2018/10/12 05:49

エラー情報を捕捉しました。 パブリックIPでアクセスすると、Connection timed outになっています。
guest

0

・そのパブリックIPは正しいでしょうか
・お使いのルータの設定でポートフォワーディング設定はしてあるでしょうか
・自分自身のLAN内からはパブリックIPにはアクセスできない場合がありますが、それは大丈夫でしょうか

投稿2018/10/12 05:21

y_waiwai

総合スコア87719

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

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

wangzj

2018/10/12 06:07

パブリックIPは正しいです。 AzureでUbuntu 16.04仮想マシンで、パブリック受信ポート(80、443、22)を許可して、立ち上げたので、他の特別設定が必要ないかと思います。 パブリックIpでアクセスすると、Connection timed outになっているので、何か設定しないといけないかも知れません
y_waiwai

2018/10/12 06:13 編集

クラウド上なんですね。ちとピント外れでした 画像では該当のポート番号に黄色の三角(警告?)がついてるようですが、ここらへんがあやしいのでは
wangzj

2018/10/12 06:32

警告なくしても、繋がれませんでした。 本番環境に、同じな仮想マシンがありまして、 本番:13.78.**.*1 勉強:13.78.**.*3 勉強環境から、本番に繋がってみたら、OK wang@study-wang:/root$ nc -v -w 1 13.78.**.*1 -z 80 Connection to 13.78.**.*1 80 port [tcp/http] succeeded! 本番から、勉強に繋がってみたら、NG $ nc -v -w 1 13.78.**.*3 -z 80 nc: connect to 13.78.**.*3 port 80 (tcp) failed: Connection refused
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問