Ćwiczenie — konfigurowanie dostępu do sieci
W tym ćwiczeniu skonfigurujesz dostęp do maszyny wirtualnej utworzonej wcześniej w tym module.
Ważne
Piaskownica usługi Microsoft Learn powinna być nadal uruchomiona. Jeśli upłynął limit czasu piaskownicy, musisz ponownie wykonać poprzednie ćwiczenie (Ćwiczenie — tworzenie maszyny wirtualnej platformy Azure).
Aby sprawdzić, czy utworzona wcześniej maszyna wirtualna jest nadal uruchomiona, użyj następującego polecenia:
az vm list
Jeśli otrzymasz pustą odpowiedź []
, musisz ponownie wykonać pierwsze ćwiczenie w tym module. Jeśli wynik zawiera listę bieżących ustawień maszyny wirtualnej, możesz kontynuować.
W tej chwili utworzona i zainstalowana maszyna wirtualna Nginx nie jest dostępna z Internetu. Należy utworzyć sieciową grupę zabezpieczeń, która zmienia się, zezwalając na przychodzący dostęp HTTP na porcie 80.
Zadanie 1. Uzyskiwanie dostępu do serwera internetowego
W tej procedurze uzyskasz adres IP maszyny wirtualnej i podejmiesz próbę uzyskania dostępu do strony głównej serwera internetowego.
Uruchom następujące polecenie
az vm list-ip-addresses
, aby uzyskać adres IP maszyny wirtualnej i zapisać wynik jako zmienną Bash:IPADDRESS="$(az vm list-ip-addresses \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --name my-vm \ --query "[].virtualMachine.network.publicIpAddresses[*].ipAddress" \ --output tsv)"
Uruchom następujące polecenie
curl
, aby pobrać stronę główną:curl --connect-timeout 5 http://$IPADDRESS
Argument
--connect-timeout
określa, że nawiązywanie połączenia może potrwać do pięciu sekund. Po upływie pięciu sekund zostanie wyświetlony komunikat o błędzie z informacją, że upłynął limit czasu połączenia:curl: (28) Connection timed out after 5001 milliseconds
Ten komunikat oznacza, że maszyna wirtualna nie była dostępna w okresie przekroczenia limitu czasu.
Opcjonalnie spróbuj uzyskać dostęp do serwera internetowego z przeglądarki:
Uruchom następujące polecenie, aby wydrukować adres IP maszyny wirtualnej w konsoli programu:
echo $IPADDRESS
Zobaczysz adres IP, na przykład 23.102.42.235.
Skopiuj widoczny adres IP do schowka.
Otwórz nową kartę przeglądarki i przejdź do serwera internetowego. Po chwili zobaczysz, że połączenie nie jest nawiązywane. Jeśli poczekasz na przekroczenie limitu czasu przeglądarki, zobaczysz następujący komunikat:
Zostaw tę kartę przeglądarki otwartą do użycia później.
Zadanie 2. Wyświetlanie listy bieżących reguł sieciowej grupy zabezpieczeń
Serwer internetowy nie jest dostępny. Aby dowiedzieć się dlaczego, należy sprawdzić bieżące reguły sieciowej grupy zabezpieczeń.
Uruchom następujące polecenie
az network nsg list
, aby wyświetlić listę sieciowych grup zabezpieczeń skojarzonych z maszyną wirtualną:az network nsg list \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --query '[].name' \ --output tsv
Zobaczysz następujące dane wyjściowe:
my-vmNSG
Każda maszyna wirtualna na platformie Azure jest skojarzona z co najmniej jedną sieciową grupą zabezpieczeń. W tym przypadku platforma Azure utworzyła sieciową grupę zabezpieczeń o nazwie my-vmNSG.
Uruchom następujące polecenie
az network nsg rule list
, aby wyświetlić listę reguł skojarzonych z sieciową grupą zabezpieczeń o nazwie my-vmNSG:az network nsg rule list \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --nsg-name my-vmNSG
W danych wyjściowych zostanie wyświetlony duży blok tekstu w formacie JSON. W następnym kroku zostanie uruchomione podobne polecenie, które ułatwia odczytywanie danych wyjściowych.
Uruchom polecenie
az network nsg rule list
po raz drugi. Tym razem użyj argumentu--query
, aby pobrać tylko nazwę, priorytet, odpowiednie porty i dostęp (Zezwalaj lub Odmawiaj) dla każdej reguły. Argument--output
formatuje dane wyjściowe jako tabelę, aby można było je łatwo odczytać.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
Zobaczysz następujące dane wyjściowe:
Name Priority Port Access ----------------- ---------- ------ -------- default-allow-ssh 1000 22 Allow
Zostanie wyświetlona domyślna reguła default-allow-ssh. Ta reguła umożliwia połączenia przychodzące przez port 22 (SSH). Protokół SSH (Secure Shell) to protokół używany w systemie Linux, który umożliwia administratorom zdalne uzyskiwanie dostępu do systemu. Priorytetem tej reguły jest 1000. Reguły są przetwarzane w kolejności priorytetu — niższe liczby są przetwarzane przed wyższymi liczbami.
Domyślnie sieciowa grupa zabezpieczeń maszyny wirtualnej systemu Linux zezwala na dostęp do sieci tylko na porcie 22. Ten port umożliwia administratorom dostęp do systemu. Należy również zezwolić na połączenia przychodzące na porcie 80, który zezwala na dostęp za pośrednictwem protokołu HTTP.
Zadanie 3. Tworzenie reguły zabezpieczeń sieci
W tym miejscu utworzysz regułę zabezpieczeń sieci, która zezwala na dostęp przychodzący na porcie 80 (HTTP).
Uruchom następujące polecenie
az network nsg rule create
, aby utworzyć regułę o nazwie allow-http, która zezwala na dostęp przychodzący na porcie 80: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
Na potrzeby tego szkolenia ustaw priorytet na 100. W tym przypadku priorytet nie ma znaczenia. Priorytet należy wziąć pod uwagę, jeśli nastąpiło nakładanie się zakresów portów.
Aby sprawdzić konfigurację, uruchom polecenie
az network nsg rule list
, aby wyświetlić zaktualizowaną listę reguł: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
Zobaczysz zarówno regułę default-allow-ssh , jak i nową regułę allow-http:
Name Priority Port Access ----------------- ---------- ------ -------- default-allow-ssh 1000 22 Allow allow-http 100 80 Allow
Zadanie 4. Ponowne uzyskiwanie dostępu do serwera internetowego
Po skonfigurowaniu dostępu sieciowego do portu 80 spróbujmy uzyskać dostęp do serwera internetowego po raz drugi.
Uwaga
Po zaktualizowaniu sieciowej grupy zabezpieczeń może upłynąć kilka chwil przed propagacją zaktualizowanych reguł. Ponów próbę następnego kroku z wstrzymaniem między próbami, dopóki nie uzyskasz żądanych wyników.
Uruchom to samo polecenie
curl
, które zostało uruchomione wcześniej:curl --connect-timeout 5 http://$IPADDRESS
Zostanie wyświetlona następująca odpowiedź:
<html><body><h2>Welcome to Azure! My name is my-vm.</h2></body></html>
Opcjonalny krok to odświeżenie kart przeglądarki na serwerze internetowym. Zostanie wyświetlona strona główna:
Brawo. W praktyce można utworzyć autonomiczną sieciową grupę zabezpieczeń zawierającą wymagane przychodzące i wychodzące reguły dostępu do sieci. Jeśli masz wiele maszyn wirtualnych obsługujących ten sam cel, możesz przypisać te sieciowej grupy zabezpieczeń do każdej maszyny wirtualnej w czasie jej tworzenia. Ta technika umożliwia kontrolowanie dostępu do sieci na wielu maszynach wirtualnych w ramach jednego, centralnego zestawu reguł.
Czyszczenie
Piaskownica automatycznie czyści zasoby po zakończeniu pracy z tym modułem.
Jeśli pracujesz w ramach własnej subskrypcji, dobrym pomysłem po zakończeniu projektu jest sprawdzenie, czy dalej potrzebujesz utworzonych zasobów. Zasoby, które opuszczasz, mogą kosztować Pieniądze. Zasoby możesz usuwać pojedynczo lub jako grupę zasobów, usuwając cały zestaw zasobów.