Impossible d'ouvrir le port 8080 sur Google Compute Engine sous Debian
j'essaie d'exécuter un serveur http Python simple qui affiche "hello world" sur le port 8080 en utilisant une micro instance. J'ai aussi 4 cas de tornade derrière Nginx. Se connecter à Nginx / Tornado sur le port 80 n'est pas un problème.
j'ai ajouté le port 8080 à mes paramètres de pare-feu, et je me suis assuré que le port 8080 est ouvert et écoute sur le serveur, mais peu importe ce que je fais, ma connexion est toujours refusée. J'ai essayé de me connecter en utilisant les navigateurs, telnet et wget et chaque la connexion est refusée.
voici le résultat de 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
voici ma liste 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
voici le script Python que j'utilise:
#!/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()
5 réponses
votre réseau a-t-il la règle de pare-feu correspondante? Suivez les étapes suivantes pour créer.
Aller à l' Console Des Développeurs et cliquez sur le projet correspondant.
Cliquez sur 'Calculer'
Cliquez sur 'Réseaux'
Cliquez sur le nom du réseau correspondant. Vous pouvez voir dans quel réseau est votre instance en cliquant sur "instances VM" sous la rubrique "calculer". Moteur de section ou avec la commande:
gcloud compute instances describe <instance> | grep "network:" | awk -F/ '{print $(NF)}'
sous la section Firewall rules, cliquez sur 'Create new'
entrez un nom pour la règle du pare-feu et dans le champ 'protocoles & ports' type: tcp: 8080
Enregistrer la règle
après cela, vous devriez pouvoir accéder à votre serveur HTTP.
sinon vous pouvez essayer de voir si votre machine reçoit la syntaxe TCP paquets dans ce port avec la commande:sudo tcpdump -i eth0 port 8080
j'Espère que ça aide
in GCE Web Console > Networks > Firewall rules > edit your RULE, remove TARGET TAGS and apply.
GL
toujours pas sûr de ce qui a mal tourné, mais j'ai supprimé mon instance et le réseau en a créé de nouvelles. La nouvelle instance et le réseau semblent fonctionner correctement, donc je ne peux que supposer que quelque chose s'est mal passé en jouant avec l'ancien réseau car le nouveau ne semble pas avoir le même problème.
probablement quelque chose tourne mal quand vous avez créé la règle de réseau. Lorsqu'une règle de réseau est décrite et que la Métabalise correspondante est créée, assurez-vous que les instances VMs contiennent la même Métabalise, de sorte que le trafic voulu sera redirigé vers la machine.
assurez-vous d'ajouter le port de droite. la réponse ci-dessus indique "tcp:80" , mais cela ne fonctionnera pas si votre serveur tourne sur un autre port. c'est probablement la raison pour laquelle il ne fonctionne pas pour les autres