Samouczek: tworzenie sieci wirtualnych platformy Azure i zarządzanie nimi za pomocą interfejsu wiersza polecenia platformy Azure na maszynach wirtualnych z systemem Linux

Dotyczy: ✔️ Maszyny wirtualne z systemem Linux — elastyczne zestawy skalowania ✔️

Maszyny wirtualne platformy Azure korzystają z sieci platformy Azure do wewnętrznej i zewnętrznej komunikacji sieciowej. Ten samouczek przedstawia proces wdrażania dwóch maszyn wirtualnych i konfigurowania dla nich sieci platformy Azure. W przykładach w tym samouczku założono, że maszyny wirtualne hostują aplikację internetową z zapleczem bazy danych, jednak wdrożenie aplikacji nie jest omówione w samouczku. Ten samouczek zawiera informacje na temat wykonywania następujących czynności:

  • Tworzenie sieci wirtualnej i podsieci
  • Tworzenie publicznego adresu IP
  • Tworzenie maszyny wirtualnej frontonu
  • Zabezpieczanie ruchu sieciowego
  • Tworzenie maszyny wirtualnej zaplecza

W tym samouczku jest używany interfejs wiersza polecenia w usłudze Azure Cloud Shell, który jest stale aktualizowany do najnowszej wersji. Aby otworzyć Cloud Shell, wybierz pozycję Wypróbuj w górnej części dowolnego bloku kodu.

Jeśli zdecydujesz się zainstalować interfejs wiersza polecenia i korzystać z niego lokalnie, ten samouczek będzie wymagał interfejsu wiersza polecenia platformy Azure w wersji 2.0.30 lub nowszej. Uruchom polecenie az --version, aby dowiedzieć się, jaka wersja jest używana. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.

Omówienie sieci maszyn wirtualnych

Sieci wirtualne platformy Azure umożliwiają bezpieczne połączenia sieciowe między maszynami wirtualnymi, Internetem i innymi usługami platformy Azure, takimi jak Azure SQL Database. Sieci wirtualne są podzielone na logiczne segmenty nazywane podsieciami. Podsieci są używane do sterowania przepływem sieciowym oraz pełnią funkcję granicy zabezpieczeń. Wdrażana maszyna wirtualna zwykle zawiera wirtualny interfejs sieciowy dołączony do podsieci.

Po ukończeniu samouczka zostaną utworzone następujące zasoby sieci wirtualnej:

Sieć wirtualna z dwiema podsieciami

  • myVNet — sieć wirtualna, której maszyny wirtualne używają do komunikacji między sobą i z Internetem.
  • myFrontendSubnet — podsieć w sieci myVNet używana przez zasoby frontonu.
  • myPublicIPAddress — publiczny adres IP używany do uzyskania dostępu do maszyny myFrontendVM za pośrednictwem Internetu.
  • myFrontentNic — interfejs sieciowy używany przez maszynę wirtualną myFrontendVM do komunikacji z maszyną myBackendVM.
  • myFrontendVM — maszyna wirtualna używana do komunikacji pomiędzy Internetem a maszyną myBackendVM.
  • myBackendNSG — sieciowa grupa zabezpieczeń, która kontroluje komunikację między maszyną myFrontendVM a maszyną myBackendVM.
  • myBackendSubnet — podsieć skojarzona z grupą myBackendNSG i używana przez zasoby zaplecza.
  • myBackendNic — interfejs sieciowy używany przez maszynę wirtualną myBackendVM do komunikacji z maszyną myFrontendVM.
  • myBackendVM — maszyna wirtualna, która korzysta z portów 22 i 3306 do komunikacji z maszynąmyFrontendVM.

Tworzenie sieci wirtualnej i podsieci

W tym samouczku zostanie utworzona jedna sieć wirtualna z dwoma podsieciami. Zostanie utworzona podsieć frontonu do hostowania aplikacji internetowej oraz podsieć zaplecza do hostowania serwera bazy danych.

Przed utworzeniem sieci wirtualnej należy utworzyć grupę zasobów za pomocą polecenia az group create. Poniższy przykład tworzy grupę zasobów o nazwie myRGNetwork w lokalizacji eastus.

az group create --name myRGNetwork --location eastus

Tworzenie sieci wirtualnej

Użyj polecenia az network vnet create, aby utworzyć sieć wirtualną. W tym przykładzie sieć nazywa się mvVNet, a jej prefiks adresu to 10.0.0.0/16. Tworzona jest również podsieć o nazwie myFrontendSubnet z prefiksem 10.0.1.0/24. W dalszej części tego samouczka maszyna wirtualna frontonu zostanie połączona z tą podsiecią.

az network vnet create \
  --resource-group myRGNetwork \
  --name myVNet \
  --address-prefix 10.0.0.0/16 \
  --subnet-name myFrontendSubnet \
  --subnet-prefix 10.0.1.0/24

Tworzenie podsieci

Nowa podsieć jest dodawana do maszyny wirtualnej przy użyciu polecenia az network vnet subnet create. W tym przykładzie podsieć nazywa się myBackendSubnet, a jej prefiks adresu to 10.0.2.0/24. Ta podsieć jest używana ze wszystkimi usługami zaplecza.

az network vnet subnet create \
  --resource-group myRGNetwork \
  --vnet-name myVNet \
  --name myBackendSubnet \
  --address-prefix 10.0.2.0/24

W ten sposób utworzono sieć i podzielono ją na dwie podsieci — jedną dla usług frontonu i jedną dla usług zaplecza. W kolejnej sekcji zostaną utworzone maszyny wirtualne połączone z tymi podsieciami.

Tworzenie publicznego adresu IP

Publiczny adres IP umożliwia dostęp do zasobów platformy Azure w Internecie. Można skonfigurować dynamiczną lub statyczną alokację publicznego adresu IP. Domyślnie publiczny adres IP jest przydzielany dynamicznie. Dynamiczne adresy IP są zwalniane, gdy przydział maszyny wirtualnej zostaje cofnięty. Dlatego adres IP zmienia się podczas każdej operacji, która obejmuje cofnięcie przydziału maszyny wirtualnej.

Można też ustawić statyczną metodę alokacji, co gwarantuje, że adres IP pozostanie przydzielony do maszyny wirtualnej nawet wówczas, gdy jej przydział zostanie cofnięty. Podczas korzystania ze statycznie przydzielonych adresów IP nie można określić adresu IP. Zamiast tego jest on przydzielany z puli dostępnych adresów.

az network public-ip create --resource-group myRGNetwork --name myPublicIPAddress

Podczas tworzenia maszyny wirtualnej za pomocą polecenia az vm create domyślnie stosowana jest dynamiczna metoda alokacji publicznego adresu IP. Aby przypisać statyczny publiczny adres IP do maszyny wirtualnej, należy podczas tworzenia jej za pomocą polecenia az vm create dołączyć argument --public-ip-address-allocation static. Ta operacja nie jest pokazana w samouczku, ale w kolejnej sekcji dynamicznie przypisany adres IP zostanie zmieniony na adres przypisany statycznie.

Zmiana metody alokacji

Metodę alokacji adresu IP można zmienić za pomocą polecenia az network public-ip update. W tym przykładzie metoda alokacji adresu IP maszyny wirtualnej frontonu zostanie zmieniona na statyczną.

Najpierw cofnij przydział maszyny wirtualnej.

az vm deallocate --resource-group myRGNetwork --name myFrontendVM

Użyj polecenia az network public-ip update, aby zaktualizować metodę alokacji. W tym przypadku parametr --allocation-method zostanie zmieniony na static.

az network public-ip update --resource-group myRGNetwork --name myPublicIPAddress --allocation-method static

Uruchom maszynę wirtualną.

az vm start --resource-group myRGNetwork --name myFrontendVM --no-wait

Brak publicznego adresu IP

Maszyna wirtualna często nie musi być dostępna przez Internet. Aby utworzyć maszynę wirtualną bez publicznego adresu IP, należy użyć argumentu --public-ip-address "" z pustą parą podwójnych cudzysłowów. Ta konfiguracja jest przedstawiona w dalszej części tego samouczka.

Tworzenie maszyny wirtualnej frontonu

Użyj polecenia az vm create, aby utworzyć maszynę wirtualną o nazwie myFrontendVM, korzystającą z adresu myPublicIPAddress.

az vm create \
  --resource-group myRGNetwork \
  --name myFrontendVM \
  --vnet-name myVNet \
  --subnet myFrontendSubnet \
  --nsg myFrontendNSG \
  --public-ip-address myPublicIPAddress \
  --image Ubuntu2204 \
  --generate-ssh-keys

Zabezpieczanie ruchu sieciowego

Sieciowa grupa zabezpieczeń (NSG, network security group) zawiera listę reguł zabezpieczeń, które blokują lub zezwalają na ruch sieciowy do zasobów połączonych z usługami Azure Virtual Network (VNet). Sieciowe grupy zabezpieczeń można skojarzyć z podsieciami lub pojedynczymi interfejsami sieciowymi. Jeśli sieciowa grupa zabezpieczeń jest skojarzona z interfejsem sieciowym, jest stosowana wyłącznie do powiązanej maszyny wirtualnej. Jeśli sieciowa grupa zabezpieczeń jest skojarzona z podsiecią, te reguły są stosowane do wszystkich zasobów połączonych z tą podsiecią.

Reguły sieciowych grup zabezpieczeń

Reguły sieciowych grup zabezpieczeń określają porty sieciowe, dla których ruch jest dozwolony lub niedozwolony. Reguły mogą zawierać zakresy źródłowych lub docelowych adresów IP, umożliwiając kontrolę ruchu pomiędzy określonymi systemami lub podsieciami. Reguły sieciowych grup zabezpieczeń mają również priorytet (od 1 do 4096). Priorytet określa kolejność oceny reguł. Reguła z priorytetem 100 jest oceniana przed regułą z priorytetem 200.

Wszystkie sieciowe grupy zabezpieczeń zawierają zestaw reguł domyślnych. Reguł domyślnych nie można usunąć, ale ponieważ mają przypisany najniższy priorytet, mogą być zastąpione przez tworzone zasady.

Domyślne reguły dla sieciowych grup zabezpieczeń to:

  • Sieć wirtualna — ruch pochodzący z sieci wirtualnej i kończący się w niej jest dozwolony zarówno w kierunku przychodzącym, jak i wychodzącym.
  • Internet — ruch wychodzący jest dozwolony, ale ruch przychodzący jest blokowany.
  • Moduł równoważenia obciążenia — umożliwia modułowi równoważenia obciążenia platformy Azure badanie kondycji maszyn wirtualnych i wystąpień ról. Jeśli nie używasz zestawu z równoważeniem obciążenia, możesz przesłonić tę regułę.

Tworzenie sieciowych grup zabezpieczeń

Sieciową grupę zabezpieczeń można utworzyć podczas tworzenia maszyny wirtualnej przy użyciu polecenia az vm create. W takim przypadku sieciowa grupa zabezpieczeń jest skojarzona z interfejsem sieciowym tej maszyny wirtualnej, z automatycznie utworzoną regułą zezwalającej na ruch z dowolnego źródła przez port 22. Wcześniej w tym samouczku sieciowa grupa zabezpieczeń frontonu została automatycznie utworzona wraz z maszyną wirtualną frontonu. Została również automatycznie utworzona reguła sieciowej grupy zabezpieczeń dla portu 22.

W niektórych przypadkach pomocne może być wcześniejsze utworzenie sieciowej grupy zabezpieczeń, na przykład wtedy, gdy nie powinny być tworzone domyślne reguły protokołu SSH, lub jeśli sieciowa grupa zabezpieczeń ma być połączona z podsiecią.

Użyj polecenia az network nsg create, aby utworzyć sieciową grupę zabezpieczeń.

az network nsg create --resource-group myRGNetwork --name myBackendNSG

Sieciowa grupa zabezpieczeń nie zostanie skojarzona z interfejsem sieciowym, ale z podsiecią. W tej konfiguracji każda maszyna wirtualna połączona z podsiecią dziedziczy reguły sieciowej grupy zabezpieczeń.

Zaktualizuj istniejącą podsieć o nazwie myBackendSubnet, używając nowej sieciowej grupy zabezpieczeń.

az network vnet subnet update \
  --resource-group myRGNetwork \
  --vnet-name myVNet \
  --name myBackendSubnet \
  --network-security-group myBackendNSG

Zabezpieczanie ruchu przychodzącego

Podczas tworzenia maszyny wirtualnej frontonu utworzona została reguła sieciowej grupy zabezpieczeń, zezwalająca na ruch przychodzący na porcie 22. Ta reguła umożliwia nawiązywanie połączeń SSH z maszyną wirtualną. W tym przykładzie ruch powinien być również dozwolony na porcie 80. Ta konfiguracja umożliwia uzyskanie dostępu do aplikacji internetowej na maszynie wirtualnej.

Użyj polecenia az network nsg rule create, aby utworzyć regułę dla portu 80.

az network nsg rule create \
  --resource-group myRGNetwork \
  --nsg-name myFrontendNSG \
  --name http \
  --access allow \
  --protocol Tcp \
  --direction Inbound \
  --priority 200 \
  --source-address-prefix "*" \
  --source-port-range "*" \
  --destination-address-prefix "*" \
  --destination-port-range 80

Maszyna wirtualna frontonu jest dostępna tylko na porcie 22 i porcie 80. Pozostały ruch przychodzący jest blokowany w sieciowej grupie zabezpieczeń. Warto zwizualizować konfiguracje reguł sieciowej grupy zabezpieczeń. Polecenie az network rule list zwraca konfigurację reguł sieciowej grupy zabezpieczeń.

az network nsg rule list --resource-group myRGNetwork --nsg-name myFrontendNSG --output table

Zabezpieczanie ruchu między maszynami wirtualnymi

Reguły sieciowych grup zabezpieczeń można także stosować pomiędzy maszynami wirtualnymi. W tym przykładzie maszyna wirtualna frontonu musi połączyć się z maszyną wirtualną zaplecza na porcie 22 i 3306. Ta konfiguracja umożliwia nawiązywanie połączeń SSH wychodzących z maszyny wirtualnej frontonu, a także umożliwia aplikacji na maszynie wirtualnej frontonu komunikację z bazą danych MySQL zaplecza. Cały pozostały ruch pomiędzy maszynami wirtualnymi frontonu i zaplecza powinien zostać zablokowany.

Użyj polecenia az network nsg rule create, aby utworzyć regułę dla portu 22. Zwróć uwagę, że argument --source-address-prefix ma wartość 10.0.1.0/24. Ta konfiguracja gwarantuje, że ruch z podsieci frontonu jest dozwolony wyłącznie za pośrednictwem sieciowej grupy zabezpieczeń.

az network nsg rule create \
  --resource-group myRGNetwork \
  --nsg-name myBackendNSG \
  --name SSH \
  --access Allow \
  --protocol Tcp \
  --direction Inbound \
  --priority 100 \
  --source-address-prefix 10.0.1.0/24 \
  --source-port-range "*" \
  --destination-address-prefix "*" \
  --destination-port-range "22"

Teraz dodaj regułę dla ruchu bazy MySQL na porcie 3306.

az network nsg rule create \
  --resource-group myRGNetwork \
  --nsg-name myBackendNSG \
  --name MySQL \
  --access Allow \
  --protocol Tcp \
  --direction Inbound \
  --priority 200 \
  --source-address-prefix 10.0.1.0/24 \
  --source-port-range "*" \
  --destination-address-prefix "*" \
  --destination-port-range "3306"

Ponieważ sieciowe grupy zabezpieczeń mają domyślną regułę zezwalającą na dowolny ruch pomiędzy maszynami wirtualnymi w tej samej sieci wirtualnej, można utworzyć regułę blokowania całego ruchu w sieciowych grupach zabezpieczeń zaplecza. Zwróć uwagę, że parametr --priority ma wartość 300, czyli niższą niż priorytet reguł sieciowej grupy zabezpieczeń i reguł bazy danych MySQL. Ta konfiguracja gwarantuje, że ruch SSH i MySQL będzie nadal dozwolony w sieciowej grupie zabezpieczeń.

az network nsg rule create \
  --resource-group myRGNetwork \
  --nsg-name myBackendNSG \
  --name denyAll \
  --access Deny \
  --protocol Tcp \
  --direction Inbound \
  --priority 300 \
  --source-address-prefix "*" \
  --source-port-range "*" \
  --destination-address-prefix "*" \
  --destination-port-range "*"

Tworzenie maszyny wirtualnej zaplecza

Teraz należy utworzyć maszynę wirtualną połączoną z podsiecią myBackendSubnet. Należy zwrócić uwagę, że wartość argumentu --nsg to pusta para cudzysłowów. Z tą maszyną wirtualną nie trzeba tworzyć sieciowej grupy zabezpieczeń. Maszyna wirtualna jest połączona z podsiecią zaplecza, która jest chroniona za pomocą utworzonej wcześniej sieciowej grupy zabezpieczeń. Ta sieciowa grupa zabezpieczeń jest stosowana do maszyny wirtualnej. Należy również zauważyć, że wartość argumentu --public-ip-address ma to pusta para cudzysłowów. Ta konfiguracja tworzy maszynę wirtualną bez publicznego adresu IP.

az vm create \
  --resource-group myRGNetwork \
  --name myBackendVM \
  --vnet-name myVNet \
  --subnet myBackendSubnet \
  --public-ip-address "" \
  --nsg "" \
  --image Ubuntu2204 \
  --generate-ssh-keys

Maszyna wirtualna zaplecza jest dostępna dla podsieci frontonu tylko na porcie 22 i porcie 3306. Pozostały ruch przychodzący jest blokowany w sieciowej grupie zabezpieczeń. Warto zwizualizować konfiguracje reguł sieciowej grupy zabezpieczeń. Polecenie az network rule list zwraca konfigurację reguł sieciowej grupy zabezpieczeń.

az network nsg rule list --resource-group myRGNetwork --nsg-name myBackendNSG --output table

Następne kroki

W tym samouczku utworzono i zabezpieczono sieci platformy Azure na potrzeby maszyn wirtualnych. W tym samouczku omówiono:

  • Tworzenie sieci wirtualnej i podsieci
  • Tworzenie publicznego adresu IP
  • Tworzenie maszyny wirtualnej frontonu
  • Zabezpieczanie ruchu sieciowego
  • Tworzenie maszyny wirtualnej zaplecza

Aby dowiedzieć się więcej na temat ochrony dysków maszyny wirtualnej, zobacz Tworzenie kopii zapasowych i odzyskiwanie po awarii dla dysków.