Oefening: netwerktoegang configureren

Voltooid

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.

  1. 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)"    
    
  2. 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.

  3. U kunt desgewenst nog proberen of de webserver toegankelijk is vanuit een browser:

    1. 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.

    2. Kopieer het IP-adres dat u ziet naar het klembord.

    3. 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 totdat de browser een time-out geeft, ziet dit er ongeveer als volgt uit:

      Screenshot of a web browser showing an error message that says the connection timed out.

    4. 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.

  1. 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 het volgende:

    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.

  2. 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.

  3. 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 het volgende:

    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. Hierdoor kunnen beheerders toegang krijgen 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).

  1. 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.

  2. 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 de regel default-allow-ssh en de 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 via poort 80 hebt geconfigureerd, probeert u nogmaals of u toegang kunt 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.

  1. Voer dezelfde opdracht curl uit die u eerder hebt uitgevoerd:

    curl --connect-timeout 5 http://$IPADDRESS
    

    U ziet het volgende:

    <html><body><h2>Welcome to Azure! My name is my-vm.</h2></body></html>
    
  2. Als een optionele stap, vernieuwt u het tabblad van de browser dat naar uw webserver verwijst. U ziet het volgende:

    A screenshot of a web browser showing the home page from the web server. The home page displays a welcome message.

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.