web-dev-qa-db-ja.com

Debianを実行しているGoogle Compute Engineでポート8080を開けない

マイクロインスタンスを使用してポート8080で「hello world」を表示する単純なPython httpサーバーを実行しようとしています。また、Nginxの背後で実行されているTornadoの4つのインスタンスがあります。ポート80は問題ではありません。

ファイアウォール設定にポート8080を追加し、ポート8080が開いていてサーバーでリッスンしていることを確認しましたが、何をしても、接続は常に拒否されます。ブラウザ、telnet、wgetを使用して接続しようとしましたが、すべての接続が拒否されました。

netstat -an | grep "LISTEN "の出力は次のとおりです

tcp        0      0 0.0.0.0:8000            0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:8001            0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:8002            0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:8003            0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp6       0      0 :::8000                 :::*                    LISTEN
tcp6       0      0 :::8001                 :::*                    LISTEN
tcp6       0      0 :::8002                 :::*                    LISTEN
tcp6       0      0 :::8003                 :::*                    LISTEN
tcp6       0      0 :::22                   :::*                    LISTEN

これが私のiptablesリストです

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http-alt

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Python私が使用しているスクリプト:

#!/usr/bin/python
from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServer

PORT_NUMBER = 8080

#This class will handles any incoming request from
#the browser
class myHandler(BaseHTTPRequestHandler):

   #Handler for the GET requests
   def do_GET(self):
      self.send_response(200)
      self.send_header('Content-type','text/html')
      self.end_headers()
      # Send the html message
      self.wfile.write("Hello World!")
      return

try:
   #Create a web server and define the handler to manage the
   #incoming request
   server = HTTPServer(('', PORT_NUMBER), myHandler)
   print 'Started httpserver on port ' , PORT_NUMBER

   #Wait forever for incoming htto requests
   server.serve_forever()

except KeyboardInterrupt:
   print '^C received, shutting down the web server'
   server.socket.close()
26
ryanovas

ネットワークには、対応するファイアウォールルールがありますか?次の手順に従って作成します。

  1. Developers Console に移動し、対応するプロジェクトをクリックします。

  2. 「計算」をクリックします

  3. 「ネットワーク」をクリックします

  4. 対応するネットワークの名前をクリックします。インスタンスがどのネットワークにあるかは、「Compute Engine」セクションの下の「VMインスタンス」をクリックするか、コマンドで確認できます。

    gcloud compute instances describe <instance> | grep "network:" | awk -F/ '{print $(NF)}'

  5. [ファイアウォールルール]セクションで、[新規作成]をクリックします

  6. ファイアウォールルールの名前を入力し、[プロトコルとポート]フィールドに「tcp:8080」と入力します

  7. ルールを保存する

その後、HTTPサーバーにアクセスできるようになります。

それ以外の場合は、次のコマンドを使用して、マシンがそのポートでSYN TCPパケットを受信するかどうかを確認できます:Sudo tcpdump -i eth0 port 8080

それが役に立てば幸い

33
Adrián

GCE Webコンソール>ネットワーク>ファイアウォールルール>ルールを編集し、ターゲットタグを削除して適用します。

GL

8
apalazzin

正しいポートを追加してください。上記の答えは "tcp:80"ですが、サーバーが別のポートで実行されている場合は機能しません。それがおそらく他の人のために働いていない理由です

0
Guruprasad GV

Kubernetesを展開し、ポッドをサービスとして公開した後、クラウドシェルからポート8080でアプリケーションを表示しようとしました。ただし、次のエラーが表示されました:エラー:ポート8080でCloud Shellに接続できませんでした。サーバーがポート8080でリッスンしていることを確認して、再試行してください。

また、外部IPアドレスを使用してアプリケーションにアクセスしようとしました http:// external-ip:8080 / ですが、ページに接続できませんでした

0
Mahesh

ネットワークルールを作成すると、おそらく問題が発生します。ネットワークルールが記述され、関連するMetaTagが作成されたら、VMインスタンスに同じMetaTagが含まれていることを確認して、必要なトラフィックがマシンにリダイレクトされるようにします。

0
marco strina

何が問題だったのかはまだわかりませんが、インスタンスとネットワークを削除してから新しいものを作成しました。新しいインスタンスとネットワークは正常に機能しているように見えるので、古いものと同じ問題を抱えていないように見えるので、古いネットワークで遊んでいるときに何かがおかしかったと思います。

0
ryanovas