GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie lautet der gcloud-Befehl, um HTTP-Datenverkehr auf einer VM-Instanz zuzulassen? (Es wird keine Firewall-Regel erstellt!)

Gelöst. Ich verstehe nicht ganz, was hinter den Kulissen vor sich geht, aber die Lösung dafür erfordert die Verwendung von "Tags", die Firewall-Regeln im Netzwerk mit der VM-Instanz verknüpfen. Soweit ich an dieser Stelle sehen kann, ist dies nur für http und https relevant. Andere offene Ports im Netzwerk und der VM scheinen ohne dieses zusätzliche Teil zu funktionieren.

Wenn Sie Ihre Firewall-Regeln anzeigen, sehen Sie wahrscheinlich, dass die Regeln für Port 80 und 443 die Tags „http-server“ bzw. „https-server“ haben. Wenn dies nicht der Fall ist, müssen Sie diese (oder andere Tags Ihrer Wahl) hinzufügen. Es stellt sich heraus, dass der Instanz diese Tags ebenfalls hinzugefügt werden müssen.

Um die Tags zu einer vorhandenen VM-Instanz hinzuzufügen, verwenden Sie diesen gcloud-Befehl:

gcloud compute instances add-tags [YOUR_INSTANCE_NAME] --tags http-server,https-server

Um die Tags zum Zeitpunkt der Instanzerstellung hinzuzufügen, fügen Sie dieses Flag in Ihre Anweisung ein:

gcloud compute instances create [YOUR_INSTANCE_NAME] --tags http-server,https-server

Wenn Sie in der GCE-GUI nachsehen, sehen Sie, dass die Kontrollkästchen "HTTP-Verkehr zulassen" und "https-Verkehr zulassen" danach aktiviert sind. Anfragen und Antworten fließen dann wie erwartet über die Ports 80 und 443.


Eines der äußerst hilfreichen Dinge, die die Google Cloud Console bietet, ist ein Link am Ende der Erstellung für die meisten Ressourcen für die REST-API und die Befehlszeile, um dieselbe Ressource zu erstellen. Ich fordere mich selbst heraus, alles tun zu können, was ich in der Konsole von der SDK-Befehlszeile aus tun kann, also verwende ich dies oft, wenn ich eine Frage wie Ihre habe.

Bei der gleichen Frage wie oben habe ich in der Konsole eine VM erstellt und "HTTP-Verkehr zulassen" ausgewählt. Wenn Sie sich die Befehlszeile dafür ansehen, sehen Sie zwei Befehle. Der erste ist der create-Befehl mit dem oben erwähnten Tag (http-server):

gcloud beta compute --project=XXXX instances create cgapperi-vm1 \
--zone=XXXXX --machine-type=f1-micro --subnet=default \
--tags=http-server --image=debian-10-buster-v20200413 \
--image-project=debian-cloud --boot-disk-size=10GB \
--boot-disk-type=pd-standard --boot-disk-device-name=cgapperi-vm1 \
--no-shielded-secure-boot --shielded-vtpm --shielded-integrity-monitoring \
--reservation-affinity=any

Die zweite erstellt tatsächlich die Firewall-Regel (default-allow-http ) für Sie und legt das Ziel für Anfragen an das HTTP-Server-Tag fest (--target-tags=http-server ) auf TCP-Port 80 (--rules=tcp:80 ) von eingehenden Anfragen (--direction=INGRESS ) aus allen Quellen (--source-ranges=0.0.0.0/0 ):

gcloud compute --project=XXXX firewall-rules create default-allow-http \
--direction=INGRESS --priority=1000 --network=default --action=ALLOW \
--rules=tcp:80 --source-ranges=0.0.0.0/0 --target-tags=http-server

Ich hoffe, dies ist für andere hilfreich.

HINWEIS: Ich habe die Ausgabe von gcloud compute instance create reduziert auf relevante Bits, um die Unordnung zu reduzieren.


Linux
  1. Erlauben Sie Webdatenverkehr in einer Firewalld-Software-Firewall

  2. Webdatenverkehr in der iptables-Software-Firewall zulassen

  3. Webdatenverkehr in der ufw-Software-Firewall zulassen

  4. Verwalten Sie die Windows Server 2012-Firewall

  5. Was ist der Sinn des Befehls hostnamectl?

Was ist der Linux-Überwachungsbefehl + Beispiele

Useradd vs. Adduser:Was ist der Unterschied?

Was ist der Kill-Befehl in Linux?

HTTP vs. HTTPS:Was ist der Unterschied?

Erstellen Sie eine Regel zum Zulassen eingehender Ports für die Windows-Firewall 2008

useradd vs. adduser:Was sind die Unterschiede?