So öffnen Sie einen bestimmten Port wie 9090 in Google Compute Engine


195

Ich habe 2 Google Compute Engine-Instanzen und möchte in beiden Instanzen Port 9090 öffnen. Ich denke, wir müssen einige Firewall-Regeln hinzufügen.

Kannst du mir sagen, wie ich das machen kann?


7
Ich denke, diese Frage wurde beantwortet. Würde es Ihnen etwas ausmachen, eine der folgenden Antworten auszuwählen? Dies würde zukünftigen Lesern helfen, leichter zu erkennen, dass dieses Problem gelöst wurde.
Modulitos

Yo, Subhradip, wähle eine Antwort.
Oligofren

Antworten:


339

Du brauchst:

  1. Gehen Sie zu cloud.google.com

  2. Gehe zu meiner Konsole

  3. Wählen Sie Ihr Projekt

  4. Wählen Sie "Netzwerk"> "VPC-Netzwerk"

  5. Wählen Sie "Firewalls-Regeln"

  6. Wählen Sie "Firewall-Regel erstellen".

  7. Um die Regel zur Auswahl von VM-Instanzen anzuwenden, wählen Sie Ziele> "Angegebene Ziel-Tags" und geben Sie unter "Ziel-Tags" den Namen des Tags ein. Dieses Tag wird verwendet, um die neue Firewall-Regel auf die gewünschte Instanz anzuwenden. Stellen Sie dann sicher, dass auf die Instanzen das Netzwerk-Tag angewendet wurde.

  8. Um eingehende TCP-Verbindungen zu Port 9090 zuzulassen, geben Sie unter "Protokolle und Ports" ein tcp:9090

  9. Klicken Sie auf Erstellen

Ich hoffe das hilft dir.

Update Informationen zum Anpassen Ihrer Regeln finden Sie in den Dokumenten .


4
Die Rechenmaschine hat keine "Netzwerk" -Option (mehr?)
Afr

8
Ja, es gibt jetzt keine Netzwerkoption. Der aktualisierte Pfad lautet Projekt -> Netzwerk -> Firewall-Regeln
Caio Vertematti

1
Auf meinem Beispiel habe ich nur allow httpund allow httpsich habe eine neue Firewall - Regel hinzugefügt , aber ich kann nicht scheinen , um es zu finden. Ich bin auch auf der freien Stufe, wenn es hilft.
A. L

1
Sie müssen zulassen, dass http den 80-Port öffnet und https 443 öffnet. Dies ist eine Verknüpfung.
Carlos Rojas

4
Der Menüpfad der Dokumente ändert sich ständig. Es ist wichtig, auf das Dokument in der Antwort zu verweisen: cloud.google.com/vpc/docs/using-firewalls
Anupam

81

Hier ist der Befehlszeilenansatz zur Beantwortung dieser Frage:

gcloud compute firewall-rules create <rule-name> --allow tcp:9090 --source-tags=<list-of-your-instances-names> --source-ranges=0.0.0.0/0 --description="<your-description-here>"

Dadurch wird der Port 9090für die von Ihnen benannten Instanzen geöffnet . Auslassen --source-tagsund --source-rangeswird die Regel auf alle Instanzen anwenden. Weitere Details finden Sie in der Gcloud-Dokumentation und in der firewall-rule createBefehlsanleitung

Die vorherigen Antworten sind großartig, aber Google empfiehlt , die neueren gcloudBefehle anstelle der gcutilBefehle zu verwenden.

PS: Um sich ein Bild von den Firewall-Regeln von Google zu machen, führen Sie gcloud compute firewall-rules listalle Ihre Firewall-Regeln aus und zeigen Sie sie an


Ich bekomme Beschwerden, wenn ich das --descriptionTeil benutze , aber sonst funktioniert das bei mir.
Shabbychef

1
Ich bin nicht sicher, ob sie die API geändert haben, aber die Quelle und das Ziel scheinen das Gegenteil von @ modulitos 'Antwort zu sein. Gemäß der Firewall-Regeln , um Befehls Dokumentation , sourcebedeutet eingehenden Datenverkehr während targetder Instanzen bezieht sich auf die Regel anzuwenden.
Cindyxiaoxiaoli

1
ERROR: (gcloud.compute.firewall-rules.create) Could not fetch resource: - Insufficient Permission@ Modulitos
Alper

Was ist der Nachfolgetest @modulitos? Ist es telnet :instance_ip :portoder nmap -p :port :instance_ip?
Nam G VU

@alper Sie müssen diesen Befehl vorher ausführen: "gcloud auth login" und login
Anton Tkachov

10

Sie müssen eine Firewall-Regel hinzufügen, um den eingehenden Zugriff tcp:9090auf Ihre Instanzen zu öffnen . Wenn Sie mehr als zwei Instanzen haben und nur 9090 für diese beiden öffnen möchten, sollten Sie sicherstellen, dass diese beiden Instanzen ein gemeinsames Tag haben. Sie können Tags über die Konsole oder die Befehlszeile hinzufügen oder aktualisieren. Ich würde empfehlen, die GUI dafür zu verwenden, wenn dies erforderlich ist, da sie den Lese-, Änderungs- und Schreibzyklus mit abwickelt setinstancetags.

Wenn Sie Port 9090 für alle Instanzen öffnen möchten, können Sie eine Firewall-Regel wie folgt erstellen:

gcutil addfirewall allow-9090 --allowed=tcp:9090

Dies gilt für alle Ihre Instanzen.

Wenn Sie Port 9090 nur für die beiden Instanzen öffnen möchten, die Ihre Anwendung bedienen, stellen Sie sicher, dass sie über ein Tag wie das folgende verfügen my-app, und fügen Sie dann eine Firewall wie folgt hinzu:

gcutil addfirewall my-app-9090 --allowed=tcp:9090 --target_tags=my-app

Weitere Informationen zum Erstellen und Verwalten von Firewalls in GCE finden Sie hier .


10
gcutilist nicht mehr verfügbar; Bitte schreiben Sie Ihre Befehlszeilen mit neu gcloud.
Misha Brukman

10

Diese Frage ist alt und Carlos Rojas 'Antwort ist gut, aber ich denke, ich sollte einige Dinge posten, die beim Versuch, die Häfen zu öffnen, beachtet werden sollten.

Das erste , woran Sie denken sollten, ist, dass der Abschnitt " Netzwerk " in " VPC-Netzwerk" umbenannt wird . Wenn Sie also herausfinden möchten , wo die Option Firewall-Regeln verfügbar ist, lesen Sie VPC-Netzwerk .

Die zweite Sache ist, wenn Sie versuchen, Ports auf einer Linux-VM zu öffnen, stellen Sie unter keinen Umständen sicher, dass Sie versuchen, den Port mit dem ufwBefehl zu öffnen . Ich habe versucht, das zu verwenden, und den SSH-Zugriff auf die VM verloren. Also wiederhole meinen Fehler nicht.

Die dritte Sache ist, wenn Sie offene Ports auf einem Windows - VM sind versuchen, werden Sie Regeln Firewall erstellen müssen innerhalb der VM auch in der Windows - Firewall zusammen mit VPC Netzwerk -> Firewall - Regeln . Der Port muss im Gegensatz zu Linux VM in beiden Firewall-Regeln geöffnet werden. Wenn Sie von außerhalb der VM keinen Zugriff auf den Port erhalten, überprüfen Sie, ob Sie den Port sowohl in der GCP-Konsole als auch in der Windows-Firewall geöffnet haben.

Das Letzte (Offensichtliche) ist, Ports nicht unnötig zu öffnen. Schließen Sie die Ports, sobald Sie sie nicht mehr benötigen.

Ich hoffe diese Antwort ist nützlich.


Gute Tipps, außer dass ich einige bestimmte Ports mit dem ufwBefehl geöffnet habe und immer noch SSH-Zugriff habe.
stackErr

7

Ich hatte das gleiche Problem wie Sie und konnte es lösen, indem ich den Anweisungen von @CarlosRojas mit einem kleinen Unterschied folgte. Anstatt eine neue Firewall-Regel zu erstellen, habe ich diese so bearbeitet default-allow-internal, dass Datenverkehr von überall akzeptiert wird, da das Erstellen neuer Regeln keinen Unterschied machte.


Das Erstellen einer neuen Firewall-Regel ist kostenpflichtig. Haben Sie es geschafft, dies durch Bearbeiten dieser Regel zu vermeiden?
Killjoy

@killjoy Ich bin mir nicht sicher. Ich verwende derzeit keine Google Compute Engine. Es tut uns leid.
Nevershowmyface

2
Während dies funktionieren kann, gibt es Sicherheitsbedenken bei dieser Methode. Ich habe festgestellt, dass die Firewall-Tags für meine Instanzen verwendet werden. Wenn Sie eine Firewall-Regel erstellen, können Sie ein "Ziel-Tag" für diese Regel erstellen. Sie können dieses Tag dann auf Ihre VM-Instanz anwenden, wodurch die Regel auf Ihre spezifische Instanz angewendet wird. Weitere Informationen finden
k00k

7

Firewall-Regeln erstellen

Bitte überprüfen Sie die Firewall-Regelkomponenten [1], wenn Sie mit den Firewall-Regeln in GCP nicht vertraut sind. Firewall-Regeln werden auf Netzwerkebene definiert und gelten nur für das Netzwerk, in dem sie erstellt wurden. Der Name, den Sie für jeden von ihnen auswählen, muss jedoch für das Projekt eindeutig sein.

Für die Cloud-Konsole:

  1. Wechseln Sie in der Google Cloud Platform Console zur Seite mit den Firewall-Regeln.
  2. Klicken Sie auf Firewall-Regel erstellen.
  3. Geben Sie einen Namen für die Firewall-Regel ein. Dieser Name muss für das Projekt eindeutig sein.
  4. Geben Sie das Netzwerk an, in dem die Firewall-Regel implementiert werden soll.
  5. Geben Sie die Priorität der Regel an. Je niedriger die Zahl, desto höher die Priorität.
  6. Wählen Sie für die Verkehrsrichtung Eingang oder Ausgang.
  7. Wählen Sie für die Aktion "Übereinstimmung" "Zulassen" oder "Verweigern".
  8. Geben Sie die Ziele der Regel an.

    • Wenn die Regel auf alle Instanzen im Netzwerk angewendet werden soll, wählen Sie Alle Instanzen im Netzwerk.
    • Wenn die Regel auf ausgewählte Instanzen nach Netzwerk- (Ziel-) Tags angewendet werden soll, wählen Sie Angegebene Ziel-Tags aus und geben Sie die Tags, auf die die Regel angewendet werden soll, in das Feld Ziel-Tags ein.
    • Wenn die Regel auf ausgewählte Instanzen nach zugeordnetem Dienstkonto angewendet werden soll, wählen Sie Angegebenes Dienstkonto, geben Sie an, ob sich das Dienstkonto im aktuellen Projekt oder in einem anderen im Bereich Dienstkonto befindet, und wählen Sie den Dienstkontonamen im Zieldienst aus oder geben Sie ihn ein Kontofeld.
  9. Geben Sie für eine Eingangsregel den Quellfilter an:

    • Wählen Sie IP-Bereiche und geben Sie die CIDR-Blöcke in das Feld Quell-IP-Bereiche ein, um die Quelle für eingehenden Datenverkehr nach IP-Adressbereichen zu definieren. Verwenden Sie 0.0.0.0/0 für eine Quelle aus einem beliebigen Netzwerk.
    • Wählen Sie "Subnetze" und markieren Sie die benötigten Subnetze in der Popup-Schaltfläche "Subnetze", um die Quelle für eingehenden Datenverkehr anhand des Subnetznamens zu definieren.
    • Um die Quelle nach Netzwerk-Tags einzuschränken, wählen Sie Quell-Tags und geben Sie die Netzwerk-Tags in das Feld Quell-Tags ein. Informationen zur Begrenzung der Anzahl der Quell-Tags finden Sie unter VPC-Kontingente und -Grenzen. Das Filtern nach Quell-Tag ist nur verfügbar, wenn das Ziel nicht vom Dienstkonto angegeben wird. Weitere Informationen finden Sie unter Filtern nach Dienstkonto vs. Netzwerk-Tag.
    • Um die Quelle nach Dienstkonto einzuschränken, wählen Sie Dienstkonto, geben Sie an, ob sich das Dienstkonto im aktuellen Projekt oder in einem anderen im Bereich Dienstkonto befindet, und wählen Sie den Namen des Dienstkontos aus oder geben Sie ihn in das Feld Quelldienstkonto ein. Das Filtern nach Quelldienstkonto ist nur verfügbar, wenn das Ziel nicht durch ein Netzwerk-Tag angegeben ist. Weitere Informationen finden Sie unter Filtern nach Dienstkonto und Netzwerk-Tag.
    • Geben Sie bei Bedarf einen Filter für die zweite Quelle an. Sekundäre Quellfilter können nicht dieselben Filterkriterien wie die primären verwenden.
  10. Geben Sie für eine Ausgangsregel den Zielfilter an:

    • Wählen Sie IP-Bereiche und geben Sie die CIDR-Blöcke in das Feld Ziel-IP-Bereiche ein, um das Ziel für ausgehenden Verkehr nach IP-Adressbereichen zu definieren. Verwenden Sie 0.0.0.0/0, um überall zu bedeuten.
    • Wählen Sie "Subnetze" und markieren Sie die gewünschten Subnetze in der Popup-Schaltfläche "Subnetze", um das Ziel für ausgehenden Datenverkehr anhand des Subnetznamens zu definieren.
  11. Definieren Sie die Protokolle und Ports, für die die Regel gelten soll:

    • Wählen Sie Alle zulassen oder Alle verweigern, je nach Aktion, damit die Regel auf alle Protokolle und Ports angewendet wird.

    • Definieren Sie bestimmte Protokolle und Ports:

      • Wählen Sie tcp aus, um das TCP-Protokoll und die Ports einzuschließen. Geben Sie alle oder eine durch Kommas getrennte Liste von Ports ein, z. B. 20-22, 80, 8080.
      • Wählen Sie udp aus, um das UDP-Protokoll und die Ports einzuschließen. Geben Sie alle oder eine durch Kommas getrennte Liste von Ports ein, z. B. 67-69, 123.
      • Wählen Sie Andere Protokolle aus, um Protokolle wie icmp oder sctp einzuschließen.
  12. (Optional) Sie können die Firewall-Regel erstellen, aber nicht erzwingen, indem Sie ihren Durchsetzungsstatus auf deaktiviert setzen. Klicken Sie auf Regel deaktivieren und wählen Sie Deaktiviert aus.

  13. (Optional) Sie können die Protokollierung von Firewall-Regeln aktivieren:

    • Klicken Sie auf Protokolle> Ein.
    • Klicken Sie auf Einschalten.
  14. Klicken Sie auf Erstellen.

Link: [1] https://cloud.google.com/vpc/docs/firewalls#firewall_rule_components


0

Ich musste dies beheben, indem ich die Priorität verringerte (sie höher machte). Dies verursachte eine sofortige Reaktion. Nicht das, was ich erwartet hatte, aber es hat funktioniert.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.