AWS – Създаване на VPC с NAT Gateway: Пълно ръководство

AWS – Създаване на VPC с NAT Gateway: Пълно ръководство

Въведение

Virtual Private Cloud (VPC) е фундаментална услуга в AWS, която ви позволява да изолирате и контролирате мрежовата среда на вашите ресурси в облака. В този материал ще разгледаме как да създадете правилно конфигурирано VPC с NAT Gateway, което е критично за безопасността и функционалността на съвременните cloud архитектури.

NAT Gateway (Network Address Translation Gateway) е управлявана услуга на AWS, която позволява на инстанции в частни subnet-и да инициират изходящи връзки към интернет или други AWS услуги, като същевременно предотвратява входящи връзки от интернет. Това е ключов компонент за сигурни и мащабируеми инфраструктури.

Архитектура на решението

Ще създадем VPC с CIDR блок 10.15.0.0/16, което ни дава 65,536 IP адреса за използване. Архитектурата включва:

  • Един публичен subnet (10.15.100.0/24) за NAT Gateway и евентуални публични ресурси
  • Три частни subnet-а в различни Availability Zone-и за високодостъпност и устойчивост на грешки
  • Internet Gateway за публична връзка
  • NAT Gateway за сигурен изходящ трафик от частните subnet-и

Използването на множество Availability Zone-и е best practice в AWS, който гарантира, че вашата инфраструктура ще продължи да функционира дори при проблем в една от зоните.

Стъпка 1: Създаване на VPC

Започваме с основата на нашата мрежова инфраструктура:

  1. Влезте в AWS Management Console и отворете VPC Dashboard
  2. От менюто изберете Your VPCsCreate VPC
  3. Изберете опцията „VPC only“ (не използвайте wizard-а, за да имате пълен контрол)
  4. Конфигурирайте следните параметри:
    • Name tag: my-vpc
    • IPv4 CIDR block: 10.15.0.0/16
    • IPv6 CIDR block: No IPv6 CIDR block (освен ако не ви е необходим IPv6)
    • Tenancy: Default (shared hardware – най-икономичният вариант)
  5. Натиснете Create VPC

VPC-то е създадено и сега разполагате с изолирана виртуална мрежа, в която можете да разполагате AWS ресурси.

Стъпка 2: Създаване на частни subnet-и

Частните subnet-и ще съдържат вашите backend сървъри, бази данни и други ресурси, които не трябва да бъдат директно достъпни от интернет.

  1. Отидете на SubnetsCreate subnet
  2. Изберете VPC: my-vpc
  3. Създайте три subnet-а последователно с следните параметри:

Първи частен subnet:

  • Subnet name: private-subnet-a
  • Availability Zone: eu-central-1a
  • IPv4 CIDR block: 10.15.1.0/24

Втори частен subnet:

  • Subnet name: private-subnet-b
  • Availability Zone: eu-central-1b
  • IPv4 CIDR block: 10.15.2.0/24

Трети частен subnet:

  • Subnet name: private-subnet-c
  • Availability Zone: eu-central-1c
  • IPv4 CIDR block: 10.15.3.0/24

Всеки subnet предоставя 256 IP адреса (от които AWS резервира 5 за собствена употреба), което е достатъчно за повечето приложения. При необходимост от повече адреси, можете да използвате по-големи CIDR блокове като /23 или /22.

Стъпка 3: Създаване на публичен subnet

Публичният subnet е необходим за NAT Gateway и за ресурси, които изискват директна интернет връзка (например bastion host, load balancer).

  1. Отново в SubnetsCreate subnet
  2. Конфигурирайте:
    • Subnet name: public-subnet-a
    • Availability Zone: eu-central-1a
    • IPv4 CIDR block: 10.15.100.0/24
    • VPC: my-vpc

Стъпка 4: Създаване и прикачане на Internet Gateway

Internet Gateway позволява комуникация между ресурсите във вашето VPC и интернет.

  1. Отидете на Internet GatewaysCreate internet gateway
  2. Въведете име: my-igw
  3. Натиснете Create internet gateway
  4. След създаването, изберете gateway-а и натиснете ActionsAttach to VPC
  5. Изберете my-vpc и потвърдете

Едно VPC може да има само един Internet Gateway, което опростява управлението на мрежата.

Стъпка 5: Конфигуриране на Route Table за публичния subnet

Route table дефинира правилата за маршрутизация на мрежовия трафик.

  1. Отидете на Route TablesCreate route table
  2. Конфигурирайте:
    • Name: public-rt
    • VPC: my-vpc
  3. След създаването, изберете route table-а и отидете на таб RoutesEdit routes
  4. Добавете нов route:
    • Destination: 0.0.0.0/0 (всички IP адреси)
    • Target: Internet Gateway → изберете my-igw
  5. Запазете промените
  6. Отидете на таб Subnet associationsEdit subnet associations
  7. Изберете public-subnet-a и запазете

Този route казва на AWS да насочва целия интернет трафик от публичния subnet през Internet Gateway.

Стъпка 6: Подготовка на Elastic IP адрес

NAT Gateway изисква статичен публичен IP адрес (Elastic IP).

  1. Отидете в EC2 DashboardElastic IPs
  2. Проверете дали имате неизползван Elastic IP:
    • Колоната Associated instance ID трябва да показва (тире)
    • Ако всички са заети, ще трябва да заявите увеличение на лимита

Заявка за увеличение на лимита:

  • Отидете в Service Quotas от AWS Console
  • Търсете „EC2“ → „EC2-VPC Elastic IPs“
  • Заявете увеличение (по подразбиране лимитът е 5 на регион)

Ако нямате свободен Elastic IP, създайте нов:

  1. Elastic IPsAllocate Elastic IP address
  2. Изберете Amazon’s pool of IPv4 addresses
  3. Натиснете Allocate

Важно: Elastic IP адресите се таксуват, ако не са асоциирани с работещ ресурс, така че винаги прикачвайте ги към NAT Gateway или EC2 инстанции.

Стъпка 7: Създаване на NAT Gateway

NAT Gateway е критичният компонент, който позволява на частните subnet-и да достигат интернет.

  1. Отидете на NAT GatewaysCreate NAT gateway
  2. Конфигурирайте:
    • Name: my-nat-gateway
    • Subnet: public-subnet-a (задължително публичен subnet!)
    • Connectivity type: Public
    • Elastic IP allocation ID: изберете подготвения или новосъздаден Elastic IP
  3. Натиснете Create NAT gateway

NAT Gateway преминава през няколко състояния преди да стане напълно функционален. Изчакайте статусът да стане Available (обикновено отнема 2-5 минути). Можете да проверите статуса в списъка с NAT Gateway-и.

Важни характеристики на NAT Gateway:

  • Автоматично мащабируем до 45 Gbps
  • Управлява се от AWS (не се нуждае от maintenance)
  • Високо достъпен в рамките на Availability Zone
  • Поддържа до 55,000 едновременни връзки към уникална дестинация

Стъпка 8: Конфигуриране на Route Table за частните subnet-и

Сега трябва да насочим трафика от частните subnet-и през NAT Gateway.

  1. Route TablesCreate route table
  2. Конфигурирайте:
    • Name: private-rt
    • VPC: my-vpc
  3. След създаването, отидете на таб RoutesEdit routes
  4. Добавете route:
    • Destination: 0.0.0.0/0
    • Target: NAT Gateway → изберете my-nat-gateway
  5. Запазете промените
  6. Отидете на таб Subnet associationsEdit subnet associations
  7. Изберете всички три частни subnet-а:
    • private-subnet-a
    • private-subnet-b
    • private-subnet-c
  8. Запазете асоциациите

Сега инстанциите в частните subnet-и могат да инициират изходящи връзки към интернет, но не могат да получават несолицитирани входящи връзки.

Проверка на конфигурацията

След като завършите всички стъпки, е важно да проверите дали всичко работи правилно:

  1. Проверка на VPC компонентите:
    • VPC Dashboard → Your VPCs → Проверете дали my-vpc е създадено
    • Проверете дали има 4 subnet-а (1 публичен + 3 частни)
    • Проверете дали Internet Gateway е attached към VPC-то
  2. Проверка на маршрутизацията:
    • Route Tables → Проверете public-rt има route към Internet Gateway
    • Проверете private-rt има route към NAT Gateway
    • Уверете се, че subnet associations са правилни
  3. Тест с EC2 инстанция:
    • Стартирайте тестова EC2 инстанция в един от частните subnet-и
    • SSH влезте чрез bastion host или Session Manager
    • Опитайте команди като ping 8.8.8.8 или curl https://api.ipify.org
    • Трябва да получите изходяща връзка през NAT Gateway

Best Practices и оптимизации

Високодостъпност

За production среди се препоръчва да създадете NAT Gateway в множество Availability Zone-и:

  • Създайте публичен subnet във всяка AZ
  • Създайте по един NAT Gateway в всеки публичен subnet
  • Конфигурирайте отделни route table-и за всяка AZ
  • По този начин, ако една AZ излезе от строя, другите ще продължат да работят

Мониторинг и алармиране

Конфигурирайте CloudWatch метрики за NAT Gateway:

  • BytesInFromSource/BytesOutToDestination – проследяване на трафика
  • PacketsDropCount – индикатор за проблеми
  • ErrorPortAllocation – недостиг на портове (много активни връзки)

Създайте CloudWatch Alarms за критични метрики и интегрирайте със SNS за нотификации.

Икономия на разходи

NAT Gateway се таксува на час плюс per-GB обработен трафик. За да оптимизирате разходите:

  • Използвайте VPC Endpoints за AWS услуги (S3, DynamoDB) – избягвате NAT Gateway таксите
  • Consolidирайте трафика – не създавайте множество NAT Gateway-и без нужда
  • За dev/test среди помислете за NAT Instance (по-евтин, но изисква management)

Сигурност

Допълнителни мерки за сигурност:

  • Конфигурирайте Network ACLs като допълнителен слой защита
  • Използвайте Security Groups за fine-grained контрол на трафика
  • Активирайте VPC Flow Logs за audit и troubleshooting
  • Редовно преглеждайте route tables и правилата за достъп

Логване и compliance

За compliance и troubleshooting:

  • Активирайте VPC Flow Logs на ниво VPC или subnet
  • Изпращайте логовете към CloudWatch Logs или S3
  • Използвайте AWS Config за проследяване на промените в конфигурацията
  • Интегрирайте с SIEM системи за централизиран мониторинг

Често срещани проблеми и решения

Проблем: Инстанциите в частни subnet-и нямат интернет достъп

Решения:

  • Проверете дали NAT Gateway е в статус „Available“
  • Уверете се, че route table-ът на частните subnet-и има route 0.0.0.0/0 → NAT Gateway
  • Проверете Security Groups на инстанциите – трябва да разрешават outbound трафик
  • Проверете Network ACLs – по подразбиране трябва да разрешават трафика

Проблем: NAT Gateway не може да се създаде

Причини и решения:

  • Нямате свободен Elastic IP – заявете нов или освободете съществуващ
  • NAT Gateway трябва да е в публичен subnet с route към Internet Gateway
  • Проверете service quotas за NAT Gateway (по подразбиране 5 на AZ)

Проблем: Високи разходи за NAT Gateway

Оптимизации:

  • Преместете AWS сървис трафика на VPC Endpoints (S3, DynamoDB, etc.)
  • Намалете излишния outbound трафик
  • Consolidирайте архитектурата – един NAT Gateway може да обслужва множество subnet-и в същата AZ
  • За non-production среди, използвайте NAT Instance или споделен NAT Gateway

Заключение

Създаването на правилно конфигурирано VPC с NAT Gateway е фундаментална умение за всеки DevOps инженер или cloud архитект, работещ с AWS. Тази конфигурация осигурява баланс между достъпност, сигурност и функционалност, като позволява на вашите частни ресурси да комуникират с интернет по контролиран начин.

Следвайки стъпките в това ръководство, създадохте production-ready мрежова архитектура с:

  • Изолирани частни subnet-и в три Availability Zone-и за високодостъпност
  • Сигурен изходящ интернет достъп през управлявана NAT Gateway услуга
  • Ясно разделение между публични и частни мрежови зони
  • Готовност за мащабиране и разширяване според нуждите на бизнеса

Не забравяйте да документирате вашата инфраструктура и да прилагате Infrastructure as Code практики (CloudFormation, Terraform) за автоматизирано и повторяемо deployment на подобни архитектури в бъдеще.


Този материал е част от DevOpsBG ресурси за обучение по cloud технологии. За повече информация, посетете devopsbg.net

Федя Серафиев

Федя Серафиев

е DevOps технологичен ентусиаст с опит в Linux, Docker, Kubernetes и CI/CD. Той споделя практични ръководства и анализи, които помагат на специалистите да изграждат по-добри и ефективни системи. На devopsbg.net Федя предоставя актуални и полезни насоки за автоматизация, сигурност и оптимизация на инфраструктурата.

Вашият коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *


Колко е 8 - 7 ? (въведете числото)