Интернет-шлюз и таблицы маршрутизации
Подключите интернет-шлюз для исходящего доступа в интернет и настройте таблицы маршрутизации для общедоступных подсетей.
«Интернет-шлюз и таблицы маршрутизации» — бесплатный урок Cloud & IT Cert Prep на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cloud & IT Cert Prep, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cloud & IT Cert Prep содержит 4 уроков всего.
Internet Gateway: дверь VPC в интернет
Internet Gateway (IGW) — это горизонтально масштабируемый, отказоустойчивый и высокодоступный компонент VPC, обеспечивающий обмен данными между VPC и интернетом. Он выполняет трансляцию сетевых адресов (NAT) для экземпляров с общедоступными адресами IPv4: при исходящем трафике преобразует их частный IP-адрес в Elastic IP или автоматически назначенный общедоступный IP-адрес, а при входящем трафике выполняет обратное преобразование. Для каждого VPC используется один IGW. Подключение IGW к VPC само по себе не предоставляет экземплярам доступ в интернет — необходимо также обновить таблицы маршрутизации и убедиться, что у экземпляров есть общедоступные IP-адреса.
# Create and attach an internet gateway
aws ec2 create-internet-gateway \
--tag-specifications 'ResourceType=internet-gateway,Tags=[{Key=Name,Value=prod-igw}]'
aws ec2 attach-internet-gateway \
--internet-gateway-id igw-12345678 \
--vpc-id vpc-12345678Таблицы маршрутизации: направление трафика
Таблица маршрутизации — это набор правил (маршрутов), определяющих, куда направляется сетевой трафик из subnet или шлюза. В каждом VPC есть основная таблица маршрутизации, которую все subnets используют по умолчанию, если вы явно не связали subnet с другой таблицей маршрутизации. У маршрутов есть назначение (блок CIDR) и цель (локальный ресурс, Internet Gateway, NAT Gateway, пиринговое соединение и т. д.). Если нескольким маршрутам соответствует назначение пакета, выбирается наиболее специфичный маршрут (с наиболее длинным совпадающим префиксом).
# Create a route table for public subnets
aws ec2 create-route-table \
--vpc-id vpc-12345678 \
--tag-specifications 'ResourceType=route-table,Tags=[{Key=Name,Value=public-rt}]'Как сделать <strong>subnet</strong> общедоступной
subnet является общедоступной, если в связанной с ней таблице маршрутизации есть маршрут для 0.0.0.0/0 (весь интернет-трафик), указывающий на Internet Gateway. Чтобы сделать subnet общедоступной, выполните три шага: (1) создайте пользовательскую таблицу маршрутизации с маршрутом 0.0.0.0/0 → IGW; (2) свяжите таблицу маршрутизации с subnet; (3) включите автоматическое назначение общедоступного IPv4 для subnet, чтобы запускаемые в ней экземпляры автоматически получали общедоступный IP-адрес. Все три шага вместе создают работоспособную общедоступную subnet.
# Add internet route to the public route table
aws ec2 create-route \
--route-table-id rtb-12345678 \
--destination-cidr-block 0.0.0.0/0 \
--gateway-id igw-12345678
# Associate the route table with a public subnet
aws ec2 associate-route-table \
--route-table-id rtb-12345678 \
--subnet-id subnet-public-1a
# Enable auto-assign public IP for the subnet
aws ec2 modify-subnet-attribute \
--subnet-id subnet-public-1a \
--map-public-ip-on-launchЛокальный маршрут
Каждая таблица маршрутизации автоматически содержит локальный маршрут (например, 10.0.0.0/16 → local), который обеспечивает обмен данными между всеми ресурсами внутри VPC. Этот маршрут нельзя удалить или изменить. Он гарантирует, что экземпляры в любой subnet VPC смогут обмениваться данными друг с другом по частным IP-адресам без прохождения через шлюз. Локальный маршрут всегда имеет приоритет над пользовательскими маршрутами для трафика, предназначенного для диапазона CIDR VPC.
# Describe the routes in a route table
aws ec2 describe-route-tables \
--route-table-ids rtb-12345678 \
--query 'RouteTables[0].Routes'
# Typical output shows:
# {DestinationCidrBlock: '10.0.0.0/16', GatewayId: 'local'}
# {DestinationCidrBlock: '0.0.0.0/0', GatewayId: 'igw-12345678'}Приоритет маршрутов и наиболее длинное совпадение префикса
Если пакету могут соответствовать несколько маршрутов в таблице маршрутизации, AWS выбирает маршрут с наиболее специфичным префиксом (с наиболее длинным совпадающим префиксом). Например, если у вас есть маршруты 10.0.0.0/8 → пиринг и 10.1.0.0/16 → VPN, пакет, предназначенный для 10.1.0.5, соответствует обоим маршрутам, но маршрут /16 является более специфичным (имеет более длинный префикс) и имеет приоритет. Если длина префиксов маршрутов одинакова, приоритет имеют более специфичные типы шлюзов: local > VGW propagated > static. Это важно понимать при проектировании сложных сетей с подключёнными пирингом, VPN и DX.
IPv6 и шлюзы только для интернета
VPC поддерживают блоки CIDR IPv6 (предоставляемые Amazon блоки /56) наряду с IPv4. Для доступа IPv6 в интернет IGW обрабатывает и IPv4, и IPv6. Для исходящего трафика только IPv6 (когда экземплярам разрешено инициировать исходящие соединения IPv6, но входящие соединения заблокированы) используйте Egress-Only Internet Gateway — функционально он похож на NAT Gateway для частных subnets IPv4, но предназначен именно для IPv6. Добавьте в частные subnets маршрут ::/0 → eigw-xxxxxxxx, чтобы разрешить исходящий доступ IPv6 и не открывать экземпляры для входящих соединений IPv6.
# Create an Egress-Only IGW for IPv6
aws ec2 create-egress-only-internet-gateway \
--vpc-id vpc-12345678
# Add IPv6 route in private subnet route table
aws ec2 create-route \
--route-table-id rtb-private \
--destination-ipv6-cidr-block '::/0' \
--egress-only-internet-gateway-id eigw-12345678Таблицы маршрутизации шлюза
Таблицы маршрутизации шлюза — это таблицы маршрутизации, непосредственно связанные с Internet Gateway или Virtual Private Gateway (а не с subnet). Они обеспечивают маршрутизацию входящего трафика — проверку трафика, поступающего в VPC из интернета, до того как он достигнет экземпляров EC2. Это используется для встроенных средств безопасности (IDS/IPS, виртуальных межсетевых экранов), которым необходимо видеть весь входящий трафик: настройте таблицу маршрутизации IGW так, чтобы направлять входящий трафик к конечной точке Gateway Load Balancer, которая распределяет его между средствами безопасности, а после проверки они пересылают его целевому экземпляру EC2.
Распространение маршрутов через VPN/DX
При подключении локальной сети через VPN или Direct Connect маршруты локальной сети могут автоматически распространяться в таблицы маршрутизации VPC посредством распространения маршрутов. Включите распространение в таблице маршрутизации для Virtual Private Gateway (VGW), и все маршруты, объявленные маршрутизатором локальной сети через BGP, автоматически появятся в таблице маршрутизации — вводить маршруты вручную не потребуется. Это особенно полезно в динамических средах, где subnets локальной сети меняются. Для статических VPN-подключений маршруты CIDR локальной сети добавляются вручную.
# Enable route propagation from a Virtual Private Gateway
aws ec2 enable-vgw-route-propagation \
--route-table-id rtb-12345678 \
--gateway-id vgw-12345678Рекомендация по использованию нескольких таблиц маршрутизации
Рекомендуется создавать отдельные таблицы маршрутизации для каждого уровня: одну для общедоступных subnets (с маршрутом IGW), одну для частных subnets приложений (с маршрутом NAT Gateway) и одну для частных subnets данных (без маршрута в интернет — только конечные точки VPC). Это гарантирует, что экземпляры уровня данных не смогут случайно выйти в интернет, даже если неправильно настроенная группа безопасности разрешает исходящий трафик: в таблице маршрутизации просто не будет пути наружу. Разделение таблиц маршрутизации также упрощает аудит схем доступа к сети для каждого уровня.
Маршруты конечных точек VPC
При создании шлюзовой конечной точки VPC для S3 или DynamoDB AWS автоматически добавляет в указанные таблицы маршрутизации маршрут, в котором назначением является управляемый сервисом список префиксов, а целью — конечная точка VPC. Этот маршрут обеспечивает передачу трафика к S3 или DynamoDB из этих subnets по частной сети AWS, а не через интернет. Шлюзовые конечные точки бесплатны и могут значительно снизить расходы на NAT Gateway, если экземпляры генерируют большой объём трафика S3. В рабочих VPC всегда добавляйте шлюзовые конечные точки S3 и DynamoDB в таблицы маршрутизации частных subnets.
# Create S3 gateway endpoint and add to route tables
aws ec2 create-vpc-endpoint \
--vpc-id vpc-12345678 \
--service-name com.amazonaws.us-east-1.s3 \
--route-table-ids rtb-private-app rtb-private-dataМаршруты blackhole для управления трафиком
Маршрут blackhole — это маршрут с недостижимой целью, который намеренно используется для отбрасывания трафика. AWS создаёт маршруты blackhole, когда цель маршрута (например, VPN-подключение или подключение Transit Gateway) удалена, но сам маршрут сохраняется. Вы также можете намеренно создавать маршруты blackhole, чтобы блокировать определённые диапазоны IP внутри VPC. Это механизм управления трафиком на сетевом уровне, отличный от групп безопасности и NACL. В AWS маршруты blackhole видны в консоли, когда конечная точка или шлюз, указанные в маршруте, становятся недоступными.
Быстрая проверка
Проверьте, насколько хорошо вы усвоили концепции AWS Solutions Architect (SAA-C03) из этого урока.
Итоги урока
В этом уроке вы узнали, что Internet Gateway обеспечивает обмен данными между VPC и интернетом и должен быть подключён к VPC, а также указан в таблице маршрутизации subnet с маршрутом 0.0.0.0/0; таблицы маршрутизации управляют направлением трафика с помощью пар «назначение — цель», используя приоритет наиболее длинного совпадения префикса; а отдельные таблицы маршрутизации для каждого уровня subnets обеспечивают архитектурную изоляцию трафика. Далее мы рассмотрим NAT Gateways для доступа частных subnets в интернет.
Часто задаваемые вопросы
Урок «Интернет-шлюз и таблицы маршрутизации» бесплатный?
Да — полный текст урока «Интернет-шлюз и таблицы маршрутизации» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cloud & IT Cert Prep, подпишись на CoddyKit PRO. Курс Cloud & IT Cert Prep содержит 4 уроков всего.
Чему я научусь в уроке «Интернет-шлюз и таблицы маршрутизации»?
Подключите интернет-шлюз для исходящего доступа в интернет и настройте таблицы маршрутизации для общедоступных подсетей. Ты практикуешь Cloud & IT Cert Prep с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Cloud & IT Cert Prep?
Предыдущий опыт не требуется. Cloud & IT Cert Prep на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Интернет-шлюз и таблицы маршрутизации»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Cloud & IT Cert Prep?
Да. Каждый урок Cloud & IT Cert Prep включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Архитектура VPC и блоки CIDR
- Интернет-шлюз и таблицы маршрутизации
- Шлюз NAT и частные подсети
- Сетевые ACL и группы безопасности