Konfigurace jedné veřejné IP adresy pro odchozí a příchozí provoz do skupiny kontejnerů

Nastavení skupiny kontejnerů s externí IP adresou umožňuje externím klientům používat IP adresu pro přístup ke kontejneru ve skupině. Prohlížeč může například přistupovat k webové aplikaci spuštěné v kontejneru. V současné době ale skupina kontejnerů používá pro odchozí provoz jinou IP adresu. Tato výchozí IP adresa není přístupná prostřednictvím kódu programu, což zkompiluje monitorování skupin kontejnerů a konfiguraci pravidel brány firewall klienta.

Tento článek obsahuje postup konfigurace skupiny kontejnerů ve virtuální síti integrované se službou Azure Firewall. Nastavením trasy definované uživatelem do skupiny kontejnerů a pravidel brány firewall můžete směrovat a identifikovat provoz do a ze skupiny kontejnerů. Příchozí a výchozí přenos dat skupiny kontejnerů používají veřejnou IP adresu brány firewall. Jednu výchozí IP adresu může používat několik skupin kontejnerů nasazených v podsíti virtuální sítě delegované do služby Azure Container Instances.

V tomto článku pomocí Azure CLI vytvoříte prostředky pro tento scénář:

  • Skupiny kontejnerů nasazené v delegovanou podsíti ve virtuální síti
  • Brána Azure Firewall nasazená v síti se statickou veřejnou IP adresou
  • Trasa definovaná uživatelem v podsíti skupin kontejnerů
  • Pravidlo překladu adres (NAT) pro příchozí přenos dat brány firewall a pravidlo aplikace pro výchozí přenos dat

Pak ověříte příchozí a výchozí přenos dat z ukázkových skupin kontejnerů prostřednictvím brány firewall.

Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet Azure před tím, než začnete.

Předpoklady

Spuštění služby Azure Cloud Shell

Azure Cloud Shell je bezplatné interaktivní prostředí, které můžete použít k provedení kroků v tomto článku. Má předinstalované obecné nástroje Azure, které jsou nakonfigurované pro použití s vaším účtem.

Pokud chcete otevřít Cloud Shell, vyberte položku Vyzkoušet v pravém horním rohu bloku kódu. Cloud Shell můžete spustit také na samostatné kartě prohlížeče na adrese https://shell.azure.com.

Po otevření Cloud Shellu ověřte, že je pro vaše prostředí vybraný Bash . Následující relace budou používat Azure CLI v prostředí Bash, výběrem možnosti Kopírovat zkopírujte bloky kódu, vložte ho do Cloud Shellu a stisknutím klávesy Enter ho spusťte.

Přihlášení k Azure

Cloud Shell se automaticky ověřuje pod počátečním přihlášeným účtem. Pomocí následujícího skriptu se přihlaste pomocí jiného předplatného a nahraďte <Subscription ID> ID předplatného Azure. Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet Azure před tím, než začnete.

subscription="<subscriptionId>" # add subscription here

az account set -s $subscription # ...or use 'az login'

Další informace najdete v tématu Nastavení aktivního předplatného nebo interaktivního přihlášení.

Poznámka:

Úplný skript si stáhnete tak, že přejdete na celý skript.

Začínáme

V tomto kurzu se používá náhodná proměnná. Pokud používáte existující skupinu prostředků, odpovídajícím způsobem upravte hodnotu této proměnné.

resourceGroup=resourceGroup$RANDOM

Skupina prostředků Azure: Pokud ještě nemáte skupinu prostředků Azure, vytvořte skupinu prostředků pomocí příkazu az group create . Podle potřeby upravte hodnotu umístění.

az group create --name $resourceGroup --location eastus

Nasazení ACI ve virtuální síti

V typickém případě už možná máte virtuální síť Azure, ve které chcete nasadit skupinu kontejnerů. Pro demonstrační účely vytvoří následující příkazy při vytvoření skupiny kontejnerů virtuální síť a podsíť. Podsíť se deleguje do služby Azure Container Instances.

Skupina kontejnerů spustí z image malou webovou aplikaci aci-helloworld . Jak je znázorněno v dalších článcích v dokumentaci, tento obrázek zabalí malou webovou aplikaci napsanou v Node.js, která obsluhuje statickou stránku HTML.

Vytvořte skupinu kontejnerů pomocí příkazu az container create :

az container create \
  --name appcontainer \
  --resource-group $resourceGroup \
  --image mcr.microsoft.com/azuredocs/aci-helloworld \
  --vnet aci-vnet \
  --vnet-address-prefix 10.0.0.0/16 \
  --subnet aci-subnet \
  --subnet-address-prefix 10.0.0.0/24

Tip

Upravte hodnotu --subnet address-prefix adresního prostoru IP adres, který potřebujete ve své podsíti. Nejmenší podporovaná podsíť je /29, která poskytuje osm IP adres. Některé IP adresy jsou vyhrazené pro použití v Azure.

V pozdějším kroku získejte privátní IP adresu skupiny kontejnerů spuštěním příkazu [az container show][az-container-show]:

aciPrivateIp="$(az container show --name appcontainer \
  --resource-group $resourceGroup \
  --query ipAddress.ip --output tsv)"

Nasazení služby Azure Firewall v síti

V následujících částech použijte Azure CLI k nasazení brány Azure Firewall ve virtuální síti. Základní informace najdete v tématu Kurz: Nasazení a konfigurace služby Azure Firewall pomocí webu Azure Portal.

Nejprve pomocí příkazu az network vnet subnet create přidejte podsíť s názvem AzureFirewallSubnet pro bránu firewall. AzureFirewallSubnet je požadovaný název této podsítě.

az network vnet subnet create \
  --name AzureFirewallSubnet \
  --resource-group $resourceGroup \
  --vnet-name aci-vnet   \
  --address-prefix 10.0.1.0/26

K vytvoření brány firewall v podsíti použijte následující příkazy Azure CLI.

Pokud ještě není nainstalované, přidejte rozšíření brány firewall do Azure CLI pomocí příkazu az extension add :

az extension add --name azure-firewall

Vytvořte prostředky brány firewall pomocí příkazu az network firewall create :

az network firewall create \
  --name myFirewall \
  --resource-group $resourceGroup \
  --location eastus

az network public-ip create \
  --name fw-pip \
  --resource-group $resourceGroup \
  --location eastus \
  --allocation-method static \
  --sku standard
    
az network firewall ip-config create \
  --firewall-name myFirewall \
  --name FW-config \
  --public-ip-address fw-pip \
  --resource-group $resourceGroup \
  --vnet-name aci-vnet

Aktualizujte konfiguraci brány firewall pomocí příkazu az network firewall update :

az network firewall update \
  --name myFirewall \
  --resource-group $resourceGroup

Pomocí příkazu az network firewall ip-config list získejte privátní IP adresu brány firewall. Tato privátní IP adresa se používá v pozdějším příkazu.

fwPrivateIp="$(az network firewall ip-config list \
  --resource-group $resourceGroup \
  --firewall-name myFirewall \
  --query "[].privateIpAddress" --output tsv)"

Pomocí příkazu az network public-ip show získejte veřejnou IP adresu brány firewall. Tato veřejná IP adresa se používá v pozdějším příkazu.

fwPublicIp="$(az network public-ip show \
  --name fw-pip \
  --resource-group $resourceGroup \
  --query ipAddress --output tsv)"

Definování trasy definované uživatelem v podsíti ACI

Definujte trasu definovanou pomocí podsítě ACI, která přesměruje provoz na bránu Azure Firewall. Další informace najdete v tématu Směrování síťového provozu.

Vytvoření směrovací tabulky

Nejprve spuštěním následujícího příkazu az network route-table create vytvořte směrovací tabulku. Vytvořte směrovací tabulku ve stejné oblasti jako virtuální síť.

az network route-table create \
  --name Firewall-rt-table \
  --resource-group $resourceGroup \
  --location eastus \
  --disable-bgp-route-propagation true

Vytvoření trasy

Spuštěním příkazu az network-route-table route create vytvořte trasu v směrovací tabulce. Pokud chcete směrovat provoz do brány firewall, nastavte typ dalšího segmentu směrování na VirtualAppliancea předejte privátní IP adresu brány firewall jako adresu dalšího segmentu směrování.

az network route-table route create \
  --resource-group $resourceGroup \
  --name DG-Route \
  --route-table-name Firewall-rt-table \
  --address-prefix 0.0.0.0/0 \
  --next-hop-type VirtualAppliance \
  --next-hop-ip-address $fwPrivateIp

Přidružení směrovací tabulky k podsíti ACI

Spuštěním příkazu az network vnet subnet update přidružte směrovací tabulku k podsíti delegovanou do služby Azure Container Instances.

az network vnet subnet update \
  --name aci-subnet \
  --resource-group $resourceGroup \
  --vnet-name aci-vnet \
  --address-prefixes 10.0.0.0/24 \
  --route-table Firewall-rt-table

Konfigurace pravidel pro bránu firewall

Ve výchozím nastavení služba Azure Firewall zakazuje (bloky) příchozí a odchozí provoz.

Konfigurace pravidla PŘEKLADU adres (NAT) pro podsíť brány firewall do podsítě ACI

Vytvořte v bráně firewall pravidlo překladu adres (NAT) pro překlad a filtrování příchozího internetového provozu do kontejneru aplikace, který jste začali dříve v síti. Podrobnosti najdete v tématu Filtrování příchozího internetového provozu pomocí DNAT služby Azure Firewall.

Vytvořte pravidlo překladu adres (NAT) a kolekci pomocí příkazu az network firewall nat-rule create :

az network firewall nat-rule create \
  --firewall-name myFirewall \
  --collection-name myNATCollection \
  --action dnat \
  --name myRule \
  --protocols TCP \
  --source-addresses '*' \
  --destination-addresses $fwPublicIp \
  --destination-ports 80 \
  --resource-group $resourceGroup \
  --translated-address $aciPrivateIp \
  --translated-port 80 \
  --priority 200

Podle potřeby přidejte pravidla překladu adres (NAT) pro filtrování provozu do jiných IP adres v podsíti. Jiné skupiny kontejnerů v podsíti můžou například vystavit IP adresy pro příchozí provoz nebo by se po restartování mohly ke skupině kontejnerů přiřadit jiné interní IP adresy.

Vytvoření pravidla odchozí aplikace v bráně firewall

Spuštěním následujícího příkazu az network firewall application-rule create vytvořte v bráně firewall odchozí pravidlo. Toto ukázkové pravidlo umožňuje přístup z podsítě delegované do služby Azure Container Instances k plně kvalifikovanému názvu domény checkip.dyndns.org. Přístup HTTP k webu se používá v pozdějším kroku k potvrzení výchozí IP adresy ze služby Azure Container Instances.

az network firewall application-rule create \
  --collection-name myAppCollection \
  --firewall-name myFirewall \
  --name Allow-CheckIP \
  --protocols Http=80 Https=443 \
  --resource-group $resourceGroup \
  --target-fqdns checkip.dyndns.org \
  --source-addresses 10.0.0.0/24 \
  --priority 200 \
  --action Allow

Testování přístupu ke skupině kontejnerů přes bránu firewall

Následující části ověřují, že podsíť delegovaná do služby Azure Container Instances je správně nakonfigurovaná za bránou firewall Azure. Předchozí kroky směrovaly příchozí provoz do podsítě i odchozího provozu z podsítě přes bránu firewall.

Testování příchozího přenosu dat do skupiny kontejnerů

Otestujte příchozí přístup ke appcontainer spuštěné virtuální síti tak, že přejdete na veřejnou IP adresu brány firewall. Dříve jste veřejnou IP adresu uložili do proměnné $FW_PUBLIC_IP:

echo $fwPublicIp

Výstup se podobá tomuto:

52.142.18.133

Pokud je pravidlo PŘEKLADU adres (NAT) v bráně firewall správně nakonfigurované, při zadávání veřejné IP adresy brány firewall v prohlížeči se zobrazí následující:

Browse to firewall's public IP address

Testování výchozího přenosu dat ze skupiny kontejnerů

Do virtuální sítě nasaďte následující ukázkový kontejner. Při spuštění odešle jeden požadavek http://checkip.dyndns.orgHTTP , který zobrazí IP adresu odesílatele (výchozí IP adresa). Pokud je pravidlo aplikace v bráně firewall správně nakonfigurované, vrátí se veřejná IP adresa brány firewall.

az container create \
  --resource-group $resourceGroup \
  --name testegress \
  --image mcr.microsoft.com/azuredocs/aci-tutorial-sidecar \
  --command-line "curl -s http://checkip.dyndns.org" \
  --restart-policy OnFailure \
  --vnet aci-vnet \
  --subnet aci-subnet

Prohlédněte si protokoly kontejneru a ověřte, že IP adresa je stejná jako veřejná IP adresa brány firewall.

az container logs \
  --resource-group $resourceGroup \
  --name testegress 

Výstup se podobá tomuto:

<html><head><title>Current IP Check</title></head><body>Current IP Address: 52.142.18.133</body></html>

Vyčištění prostředků

Pokud už ji nepotřebujete, můžete pomocí příkazu az group delete odebrat skupinu prostředků a všechny související prostředky následujícím způsobem. Parametr --no-wait vrátí řízení na příkazový řádek bez čekání na dokončení operace. Parametr --yes potvrdí, že chcete prostředky odstranit, aniž by se na to zobrazoval další dotaz.

az group delete --name $resourceGroup --yes --no-wait

Další kroky

V tomto článku nastavíte skupiny kontejnerů ve virtuální síti za bránou Azure Firewall. Nakonfigurovali jste trasu definovanou uživatelem a pravidla překladu adres a aplikací v bráně firewall. Pomocí této konfigurace nastavíte jednu statickou IP adresu pro příchozí a výchozí přenos dat ze služby Azure Container Instances.

Další informace o správě provozu a ochraně prostředků Azure najdete v dokumentaci ke službě Azure Firewall .