Oefening: netwerktoegang configureren
In deze oefening configureert u de toegang tot de virtuele machine (VM) die u eerder in deze module hebt gemaakt.
Belangrijk
De Microsoft Learn-sandbox moet nog steeds worden uitgevoerd. Als er een time-out optreedt voor de sandbox, moet u de vorige oefening opnieuw uitvoeren (oefening: een virtuele Azure-machine maken).
Gebruik de volgende opdracht om te controleren of de VM die u eerder hebt gemaakt nog steeds wordt uitgevoerd:
az vm list
Als u een leeg antwoord []
ontvangt, moet u de eerste oefening in deze module opnieuw voltooien. Als in het resultaat uw huidige VM en de bijbehorende instellingen worden vermeld, kunt u doorgaan.
Op dit moment is de VIRTUELE machine waarop u Nginx hebt gemaakt en geïnstalleerd, niet toegankelijk vanaf internet. U maakt een netwerkbeveiligingsgroep die dit wijzigt door binnenkomende HTTP-toegang toe te staan op poort 80.
Taak 1: Toegang tot uw webserver
In deze procedure vraagt u het IP-adres voor uw VM op en probeert u toegang te krijgen tot de startpagina van de webserver.
Voer de volgende opdracht
az vm list-ip-addresses
uit om het IP-adres van uw VM op te halen en het resultaat op te slaan als een bash-variabele:IPADDRESS="$(az vm list-ip-addresses \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --name my-vm \ --query "[].virtualMachine.network.publicIpAddresses[*].ipAddress" \ --output tsv)"
Voer de volgende opdracht
curl
uit om de startpagina te downloaden:curl --connect-timeout 5 http://$IPADDRESS
Met het argument
--connect-timeout
geeft u aan dat de verbinding maximaal vijf seconden mag duren. Na vijf seconden ziet u een foutbericht met de mededeling dat er een time-out is opgetreden voor de verbinding:curl: (28) Connection timed out after 5001 milliseconds
Dit bericht betekent dat de VM niet toegankelijk was binnen de time-outperiode.
U kunt desgewenst nog proberen of de webserver toegankelijk is vanuit een browser:
Voer de volgende opdracht uit om het IP-adres van de VM weer te geven in de console:
echo $IPADDRESS
U ziet een IP-adres, bijvoorbeeld 23.102.42.235.
Kopieer het IP-adres dat u ziet naar het klembord.
Open een nieuw tabblad in de browser en ga naar uw webserver. Na enkele ogenblikken ziet u dat de verbinding niet tot stand kan worden gebracht. Als u wacht tot er een time-out optreedt in de browser, ziet u ongeveer het volgende:
Laat dit browsertabblad open voor later gebruik.
Taak 2: De huidige regels voor netwerkbeveiligingsgroepen weergeven
De webserver was niet toegankelijk. U kunt erachter komen wat de reden hiervoor is door de huidige regels voor netwerkbeveiligingsgroepen te bekijken.
Voer de volgende opdracht
az network nsg list
uit om de netwerkbeveiligingsgroepen weer te geven die zijn gekoppeld aan uw VM:az network nsg list \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --query '[].name' \ --output tsv
U ziet deze uitvoer:
my-vmNSG
Elke VM in Azure is gekoppeld aan ten minste één netwerkbeveiligingsgroep. In dit geval heeft Azure een netwerkbeveiligingsgroep voor u gemaakt met de naam my-vmNSG.
Voer de volgende opdracht
az network nsg rule list
uit om de regels weer te geven die zijn gekoppeld aan de netwerkbeveiligingsgroep met de naam my-vmNSG:az network nsg rule list \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --nsg-name my-vmNSG
In de uitvoer ziet u een groot blok tekst met de JSON-indeling. In de volgende stap voert u een vergelijkbare opdracht uit waardoor deze uitvoer eenvoudiger te lezen is.
Voer de opdracht
az network nsg rule list
nogmaals uit. Gebruik deze keer het argument--query
om voor elke regel alleen de naam, prioriteit, betrokken poorten en toegang (Toestaan of Weigeren) op te halen. Met het argument--output
wordt de uitvoer als een tabel opgemaakt zodat deze gemakkelijk te lezen is.az network nsg rule list \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --nsg-name my-vmNSG \ --query '[].{Name:name, Priority:priority, Port:destinationPortRange, Access:access}' \ --output table
U ziet deze uitvoer:
Name Priority Port Access ----------------- ---------- ------ -------- default-allow-ssh 1000 22 Allow
U ziet de standaardregel, default-allow-ssh. Met deze regel worden binnenkomende verbindingen via poort 22 (SSH) toegestaan. SSH (Secure Shell) is een protocol dat wordt gebruikt in Linux om beheerders op afstand toegang te geven tot het systeem. De prioriteit van deze regel is 1000. Regels worden verwerkt in volgorde van prioriteit, waarbij lagere nummers eerder worden verwerkt dan hogere nummers.
Standaard staat de netwerkbeveiligingsgroep van een Linux-VM alleen netwerktoegang op poort 22 toe. Met deze poort hebben beheerders toegang tot het systeem. U moet echter ook binnenkomende verbindingen op poort 80 toestaan, waardoor toegang via HTTP mogelijk is.
Taak 3: De netwerkbeveiligingsregel maken
Hier maakt u een netwerkbeveiligingsregel waarmee inkomende toegang wordt toegestaan op poort 80 (HTTP).
Voer de volgende opdracht
az network nsg rule create
uit om een regel te maken met de naam allow-http waarmee inkomend verkeer op poort 80 wordt toegestaan:az network nsg rule create \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --nsg-name my-vmNSG \ --name allow-http \ --protocol tcp \ --priority 100 \ --destination-port-range 80 \ --access Allow
Als extra oefening stellen we de prioriteit hier in op 100. In dit geval is de prioriteit niet van belang. U moet rekening houden met de prioriteit als er sprake is van overlappende poortbereiken.
U kunt de configuratie controleren door
az network nsg rule list
uit te voeren om de bijgewerkte lijst met regels weer te geven:az network nsg rule list \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --nsg-name my-vmNSG \ --query '[].{Name:name, Priority:priority, Port:destinationPortRange, Access:access}' \ --output table
U ziet zowel de standaard-allow-ssh-regel als uw nieuwe regel, allow-http:
Name Priority Port Access ----------------- ---------- ------ -------- default-allow-ssh 1000 22 Allow allow-http 100 80 Allow
Taak 4: De webserver opnieuw openen
Nu u netwerktoegang tot poort 80 hebt geconfigureerd, gaan we een tweede keer proberen toegang te krijgen tot de webserver.
Notitie
Nadat u de NSG hebt bijgewerkt, kan het even duren voordat de bijgewerkte regels zijn doorgegeven. Voer de volgende stap opnieuw uit, met pauzes tussen pogingen totdat u de gewenste resultaten krijgt.
Voer dezelfde opdracht
curl
uit die u eerder hebt uitgevoerd:curl --connect-timeout 5 http://$IPADDRESS
U ziet dit antwoord:
<html><body><h2>Welcome to Azure! My name is my-vm.</h2></body></html>
Als een optionele stap, vernieuwt u het tabblad van de browser dat naar uw webserver verwijst. U ziet de startpagina:
Goed gedaan. In de praktijk kunt u een zelfstandige netwerkbeveiligingsgroep maken die de inkomende en uitgaande regels voor netwerktoegang bevat die u nodig hebt. Als u meerdere VM's hebt die hetzelfde doel vervullen, kunt u die netwerkbeveiligingsgroep toewijzen aan elke VM op het moment dat u deze maakt. Op deze manier kunt u de netwerktoegang tot meerdere VM's beheren met één centrale set regels.
Opschonen
De sandbox schoont uw resourced automatisch op wanneer u klaar bent met deze module.
Wanneer u in uw eigen abonnement werkt, is het een goed idee om aan het einde van een project te bepalen of u de gemaakte resources nog nodig hebt. Resources die u verlaat, kunnen u geld kosten. U kunt resources afzonderlijk verwijderen, maar u kunt ook de resourcegroep verwijderen als u de volledige resourceset wilt verwijderen.