Вопрос или проблема
Согласно Amazon и моему тесту, подсеть VPC /24 позволяет использовать 251 доступный IP-адрес. У меня есть 2 других подсети в этом VPC, которые, похоже, не используют IP-адресов EC2, и поле доступных IP-адресов указывает, что доступно только 250. Я проверил
Я пытаюсь выяснить, какие ресурсы используют эти IP-адреса, но похоже, что AWS не позволяет выполнять такие запросы.
Что бы мне хотелось видеть, так это список ресурсов, которые используют IP-адреса для конкретной подсети VPC.
Если кто-то может прояснить, какие сервисы AWS могут использовать IP-адреса подсети, кроме EC2, это также поможет.
Спасибо.
В консоли EC2, в навигационной панели слева, нажмите Сетевые интерфейсы.
Все, что имеет IP-адрес — экземпляры EC2, ELB, шлюзы NAT, экземпляры RDS (чтобы назвать некоторые из самых распространенных) — имеют как минимум один виртуальный сетевой адаптер, называемый Эластичный сетевой интерфейс (ENI).
Каждый ENI обычно имеет основной частный адрес IPv4 и может иметь один или несколько вторичных адресов IPv4.
В вашей подсети VPC ничего, что имеет IP-адрес, не должно отсутствовать здесь.
Исключением являются недоступные и зарезервированные адреса, которые не отображаются. Адрес “сеть” из всех нулей и адрес “широковещательный” из всех единиц недоступны по правилам подсетирования, а сетевой адрес +1, +2 и +3 (.1, .2, .3 в /24) зарезервированы инфраструктурой VPC. Это (256 – 2 – 3 = 251) устанавливает базовый максимальный доступный для /24 сетей из 251 адреса.
Недостающим адресом в вашей конфигурации предположительно будут ваши шлюзы NAT, но в любом случае вы должны сможете найти его в разделе Сетевые интерфейсы.
ELB при легкой нагрузке также создаст 1 ENI в каждой подсети, где он настроен. Если ELB автоматически масштабируется (выходит) значительно под нагрузкой, ему потребуется создать больше ENI, и это одна из важных причин, по которой не следует определять размер ваших подсетей, основываясь только на прогнозируемом количестве экземпляров.
Возможно, стоит упомянуть: адреса пиринга для аппаратного VPN VPC и AWS Direct Connect назначаются из пространства локальных ссылок IPv4 169.254.0.0/16. Эти соединения имеют доступ, но фактически не “находятся” в какой-либо подсети VPC, поэтому они не потребляют никаких адресов из частного адресного пространства вашего VPC.
Вот ссылка на документацию, которая уточняет зарезервированные IP-адреса (ноябрь 2024) -> https://docs.aws.amazon.com/vpc/latest/userguide/subnet-sizing.html#subnet-sizing-ipv4
В продолжение отличного ответа от @Michael-sqlbot (я не смог добавить это как комментарий из-за моего рейтинга) вы можете использовать AWS CLI для получения списка IP-адресов, назначенных в вашем VPC:
aws ec2 describe-network-interfaces --filters "Name=vpc-id,Values=<your-vpc-id>" | grep "PrivateIpAddress:"
…и чтобы быстро подсчитать общее количество назначенных IP:
aws ec2 describe-network-interfaces --filters "Name=vpc-id,Values=<your-vpc-id>" | grep "PrivateIpAddress:" | wc -l
Это должно облегчить вашу жизнь, если любые из сущностей в вашем VPC используют несколько вторичных IP-адресов (как это происходит у меня!)
Ответ или решение
Чтобы проверить, какие ресурсы занимаются IP-адресами в VPC (Virtual Private Cloud) на AWS, вам необходимо использовать несколько методов. В этом ответе мы рассмотрим различные способы, включая использование веб-консоли AWS и интерфейса командной строки (CLI) для получения информации о назначенных IP-адресах. Это поможет вам определить, какие ресурсы занимают IP-адреса в вашем VPC и подсетях.
1. Понимание зарезервированных и доступных IP-адресов
По стандартам AWS, подсети VPC с маской /24 обеспечивают до 251 доступного IP-адреса. Следует помнить, что несколько адресов зарезервированы и не могут быть использованы для ресурсов. Например, первый и последний IP-адрес в каждом диапазоне (нульевой и широковещательный) зарезервированы. Также IP-адреса, используемые для внутреннего управления VPC, могут занимать некоторые из оставшихся адресов.
2. Использование консоли AWS для проверки сетевых интерфейсов
В консоли управления AWS выполните следующие шаги:
- Перейдите в раздел EC2.
- На левой панели навигации выберите Network Interfaces (Сетевые интерфейсы).
- Здесь отображаются все сетевые интерфейсы (ENI) вашей VPC. Каждый ENI может иметь основной и дополнительные IP-адреса.
- Убедитесь, что вы проверяете сетевые интерфейсы, привязанные ко всем ресурсам, включая:
- EC2 инстансы
- Elastic Load Balancers (ELB)
- NAT Gateways
- RDS инстансы
Каждый ресурс, использующий IP-адрес, должен быть представлен среди сетевых интерфейсов. Если вы заметили, что количество доступных IP меньше ожидаемого, это может указывать на активные ресурсы, использующие IP-адреса.
3. Использование AWS CLI для получения списка IP-адресов
Если вы предпочтете использовать интерфейс командной строки, вы можете легко получить список назначенных IP-адресов с помощью следующей команды:
aws ec2 describe-network-interfaces --filters "Name=vpc-id,Values=<your-vpc-id>" --query "NetworkInterfaces[*].[PrivateIpAddress]" --output table
Эта команда выведет список всех назначенных частных IP-адресов в вашем VPC. Если вы хотите быстро подсчитать общее количество назначенных IP-адресов, вы можете воспользоваться следующей командой:
aws ec2 describe-network-interfaces --filters "Name=vpc-id,Values=<your-vpc-id>" | grep "PrivateIpAddress:" | wc -l
4. Учитывайте другие сервисы AWS
Помимо упомянутых выше ресурсов, важно отметить, что другие службы AWS также могут использовать IP-адреса из вашей VPC, такие как:
- AWS PrivateLink
- Amazon RDS (отдельные экзemplar)
- AWS Lambda (при наличии VPC-соединений)
- Amazon EFS (Elastic File System)
- NAT Gateway
Заключение
Проведение анализа использования IP-адресов в VPC требует внимания к деталям и понимания ресурсов, работающих в вашем облаке. Используя как консоль AWS, так и AWS CLI, вы сможете получить полное представление о занятых и доступных IP-адресах в вашей подсети. Не забывайте периодически отслеживать используемые IP-адреса, чтобы эффективно управлять ресурсами и избегать исчерпания адресного пространства.