NAT-átjáró konfigurálása statikus IP-címhez tárolócsoportból kimenő forgalomhoz

Ha egy tárolócsoportot külső IP-címmel állít be, a külső ügyfelek az IP-cím használatával férhetnek hozzá a csoport egy tárolóhoz. Egy böngésző például hozzáférhet egy tárolóban futó webalkalmazáshoz. Jelenleg azonban egy tárolócsoport egy másik IP-címet használ a kimenő forgalomhoz. Ez a kimenő IP-cím nem érhető el programozott módon, ami összetettebbé teszi a tárolócsoportok monitorozását és az ügyfél tűzfalszabályainak konfigurálását.

Ez a cikk a hálózati címfordítási (NAT) átjáróval integrált virtuális hálózaton lévő tárolócsoport konfigurálásának lépéseit ismerteti. Ha nat-átjárót konfigurál az Azure Container Instances (ACI) számára delegált alhálózati címtartomány SNAT-ra, azonosíthatja a tárolócsoportok kimenő forgalmát. A tárolócsoport kimenő forgalma a NAT-átjáró nyilvános IP-címét fogja használni. Egyetlen NAT-átjárót a virtuális hálózat ACI-hez delegált alhálózatán üzembe helyezett több tárolócsoport is használhat.

Ebben a cikkben az Azure CLI használatával hozza létre az ehhez a forgatókönyvhöz tartozó erőforrásokat:

Ezt követően a NAT-átjárón keresztül ellenőrizheti a példatároló csoportokból érkező kimenő forgalmat.

Megjegyzés:

Az ACI szolgáltatás a NAT-átjáróval való integrálást javasolja olyan tárolóalapú számítási feladatokhoz, amelyek statikus kimenő forgalommal rendelkeznek, de nem statikus bejövő forgalomra vonatkozó követelményekkel. A statikus bejövő és kimenő forgalmat egyaránt támogató ACI-architektúrához tekintse meg a következő oktatóanyagot: Az Azure Firewall használata bejövő és kimenő forgalomhoz.

If you don't have an Azure subscription, create an Azure free account before you begin.

Előfeltételek

Az Azure Cloud Shell elindítása

Az Azure Cloud Shell egy olyan ingyenes interaktív kezelőfelület, amelyet a jelen cikkben található lépések futtatására használhat. A fiókjával való használat érdekében a gyakran használt Azure-eszközök már előre telepítve és konfigurálva vannak rajta.

A Cloud Shell megnyitásához válassza a Kipróbálás lehetőséget egy kódblokk jobb felső sarkában. A Cloud Shellt egy külön böngészőlapon is elindíthatja a https://shell.azure.com cím megnyitásával.

Amikor megnyílik a Cloud Shell, ellenőrizze, hogy a Bash ki van-e jelölve a környezetében. A következő munkamenetek az Azure CLI-t használják Bash-környezetben, a Másolás lehetőséget választva másolja ki a kódblokkokat, illessze be a Cloud Shellbe, és nyomja le az Enter billentyűt a futtatáshoz.

Bejelentkezés az Azure-ba

A Cloud Shell automatikusan hitelesítve lesz a kezdeti fiókkal, amellyel bejelentkezett. A következő szkripttel egy másik előfizetéssel jelentkezhet be, lecserélve <Subscription ID> az Azure-előfizetés azonosítóját. If you don't have an Azure subscription, create an Azure free account before you begin.

subscription="<subscriptionId>" # add subscription here

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

További információ: Aktív előfizetés beállítása vagy interaktív bejelentkezés

Megjegyzés:

A teljes szkript letöltéséhez nyissa meg a teljes szkriptet.

Első lépések

Ez az oktatóanyag véletlenszerű változót használ. Ha meglévő erőforráscsoportot használ, módosítsa ennek a változónak az értékét megfelelően.

resourceGroup=resourceGroup$RANDOM

Azure-erőforráscsoport: Ha még nem rendelkezik Azure-erőforráscsoporttal, hozzon létre egy erőforráscsoportot az az group create paranccsal. Módosítsa a hely értékét a megfelelő módon.

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

ACI üzembe helyezése virtuális hálózaton

Egy tipikus esetben előfordulhat, hogy már rendelkezik azure-beli virtuális hálózatokkal, amelyekben tárolócsoportot szeretne üzembe helyezni. Bemutató célokra az alábbi parancsok létrehoznak egy virtuális hálózatot és alhálózatot a tárolócsoport létrehozásakor. Az alhálózat delegálva van az Azure Container Instances szolgáltatásba.

A tárolócsoport egy kis webalkalmazást futtat a aci-helloworld rendszerképből. Ahogy a dokumentáció más cikkei is mutatják, ez a kép egy node.js-ben írt kis webalkalmazást tartalmaz, amely statikus HTML-oldalt szolgál ki.

Hozza létre a tárolócsoportot az az container create paranccsal:

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

Megjegyzés:

Módosítsa az alhálózatban szükséges IP-címtér értékét --subnet address-prefix . A legkisebb támogatott alhálózat a /29, amely nyolc IP-címet biztosít. Egyes >IP-címek az Azure számára vannak fenntartva, amelyekről itt olvashat bővebben.

Hozzon létre egy nyilvános IP-címet

A következő szakaszokban az Azure CLI használatával helyezzen üzembe egy Azure NAT-átjárót a virtuális hálózaton. A háttérről a rövid útmutatóban olvashat : NAT-átjáró létrehozása az Azure CLI használatával.

Először az az network vnet public-ip create használatával hozzon létre nyilvános IP-címet a NAT-átjáróhoz. Ezzel fogjuk elérni az internetet. Figyelmeztetést kap egy közelgő kompatibilitástörő változásról, amelyben a standard termékváltozat IP-címei alapértelmezés szerint a rendelkezésre állási zónát fogják tudni. A rendelkezésre állási zónák és a nyilvános IP-címek használatáról itt tudhat meg többet.

az network public-ip create \
  --name myPublicIP \
  --resource-group $resourceGroup \
  --sku standard \
  --zone 1 \
  --allocation static

Tárolja a nyilvános IP-címet egy változóban, amely a szkript későbbi ellenőrzési lépése során használható.

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

NAT-átjáró üzembe helyezése virtuális hálózaton

Az alábbi az network nat gateway create használatával hozzon létre egy NAT-átjárót, amely az előző lépésben létrehozott nyilvános IP-címet használja.

az network nat gateway create \
  --resource-group $resourceGroup \
  --name myNATgateway \
  --public-ip-addresses myPublicIP \
  --idle-timeout 10

NAT-szolgáltatás konfigurálása a forrásalhálózathoz

Konfiguráljuk a forrás alhálózat aci-alhálózatát egy adott NAT-átjáró erőforrás myNATgateway használatára az az network vnet subnet update használatával. Ez a parancs aktiválja a NAT szolgáltatást a megadott alhálózaton.

az network vnet subnet update \
    --resource-group $resourceGroup  \
    --vnet-name aci-vnet \
    --name aci-subnet \
    --nat-gateway myNATgateway

Tárolócsoportból érkező kimenő forgalom tesztelése

Tesztelje a appcontainer virtuális hálózaton futó bejövő hozzáférést a tűzfal nyilvános IP-címének böngészésével. Korábban a nyilvános IP-címet a $NG_PUBLIC_IP változóban tárolta

Helyezze üzembe a következő mintatárolót a virtuális hálózaton. A futtatáskor egyetlen HTTP-kérést http://checkip.dyndns.orgküld, amely megjeleníti a feladó IP-címét (a kimenő IP-címet). Ha a tűzfal alkalmazásszabálya megfelelően van konfigurálva, a tűzfal nyilvános IP-címe lesz visszaadva.

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

Tekintse meg a tárolónaplókat annak ellenőrzéséhez, hogy az IP-cím megegyezik-e az oktatóanyag első lépésében létrehozott nyilvános IP-címmel.

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

A kimenet a következőhöz hasonló:

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

Ennek az IP-címnek meg kell egyeznie az oktatóanyag első lépésében létrehozott nyilvános IP-címmel.

echo $ngPublicIp

Clean up resources

Ha már nincs rá szükség, az az group delete használatával eltávolíthatja az erőforráscsoportot és az összes kapcsolódó erőforrást az alábbiak szerint. A --no-wait paraméter visszaadja a vezérlést a parancssornak, és nem várja meg a művelet befejeztét. A --yes paraméter megerősíti, hogy további kérdés nélkül szeretné törölni az erőforrásokat.

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

Következő lépések

Ebben a cikkben tárolócsoportokat állít be egy Azure NAT-átjáró mögötti virtuális hálózaton. Ezzel a konfigurációval egyetlen statikus IP-cím kimenő forgalmat állít be az Azure Container Instances tárolócsoportjaiból.

Hibaelhárítási segítségért tekintse meg az Azure Virtual Network NAT-kapcsolatának hibaelhárítását.