GNU/Linux >> Linux Esercitazione >  >> Linux

Qual è il comando gcloud per consentire il traffico http su un'istanza VM? (Non è creare una regola del firewall!)

Risolto. Non capisco del tutto cosa stia succedendo dietro le quinte, ma la soluzione a questo richiede l'uso di "tag" che associano le regole del firewall sulla rete all'istanza VM. Per quanto posso vedere a questo punto, questo è pertinente solo per http e https. Altre porte aperte sulla rete e sulla VM sembrano funzionare senza questo pezzo aggiuntivo.

Se visualizzi le regole del tuo firewall, probabilmente vedrai che le regole della porta 80 e 443 hanno rispettivamente i tag "http-server" e "https-server". In caso contrario, dovrai aggiungere quelli (o altri tag di tua scelta). Si scopre che l'istanza ha bisogno che vengano aggiunti anche quei tag.

Per aggiungere i tag a un'istanza VM esistente, utilizza questo comando gcloud:

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

Per aggiungere i tag al momento della creazione dell'istanza, includi quel flag nella tua istruzione:

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

Se guardi nella gui di GCE, vedrai che le caselle di controllo "Consenti traffico http" e "Consenti traffico https" sono selezionate dopo averlo fatto. Le richieste e le risposte passano quindi attraverso le porte 80 e 443 come previsto.


Una delle cose super utili offerte da Google Cloud Console è un collegamento nella parte inferiore della creazione per la maggior parte delle risorse per l'API REST e la riga di comando per creare la stessa risorsa. Sto sfidando me stesso per essere in grado di fare tutto ciò che posso fare nella console dalla riga di comando dell'SDK, quindi lo uso spesso quando ho una domanda come la tua.

Avendo la stessa domanda di cui sopra, nella console ho creato una VM e selezionato "Consenti traffico HTTP". Guardando la riga di comando per questo, vedrai due comandi. Il primo è il comando create con il tag come indicato sopra (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

Il secondo crea effettivamente la regola del firewall (default-allow-http ) per te e imposta la destinazione per le richieste al tag http-server (--target-tags=http-server ) sulla porta tcp 80 (--rules=tcp:80 ) dalle richieste in arrivo (--direction=INGRESS ) da tutte le fonti (--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

Spero che questo sia utile per chiunque altro.

NOTA: Ho ridotto l'output di gcloud compute instance create ai bit rilevanti per ridurre il disordine.


Linux
  1. Che cos'è un comando cURL e come utilizzarlo?

  2. Qual è la magia di - (un trattino) nei parametri della riga di comando?

  3. Qual è l'equivalente di ~ (tilde) di Linux in Windows?

  4. Qual è lo scopo di cd ` (backtick)?

  5. Qual è lo scopo del comando hostnamectl?

Cos'è il comando Linux Watch + Esempi

Useradd vs Adduser:qual è la differenza?

Qual è il comando kill in Linux?

HTTP e HTTPS:qual è la differenza?

Creare una regola di autorizzazione porta in entrata per Windows Firewall 2008

useradd vs. adduser:quali sono le differenze?