Короткий ответ
Публичная подсеть имеет маршрут к интернет-шлюзу, и её ресурсы обычно получают публичный IP; приватная подсеть такого маршрута не имеет, и её ресурсы выходят в интернет (если нужно) только через NAT, оставаясь недоступными для входящих соединений извне.
Как это работает подробнее
принадлежность подсети к публичной или приватной определяется не названием, а таблицей маршрутизации: если в ней есть маршрут 0.0.0.0/0 на internet gateway — подсеть публичная; если маршрут 0.0.0.0/0 ведёт на NAT gateway — подсеть приватная с исходящим доступом.
Пример кода
example.txt
Route table (public-rt): 0.0.0.0/0 -> igw-0123
Route table (private-rt): 0.0.0.0/0 -> nat-0456Что использовать на практике
- Рекомендация. в публичных подсетях размещают балансировщики и bastion-хосты; в приватных — приложения и базы данных, которым не нужен прямой вход извне, что снижает поверхность атаки.
- Проверка. инстанс в приватной подсети сможет выполнить
curl https://example.comчерез NAT, но входящее SSH-подключение снаружи к нему установить не получится.
Подводные камни
- Риск. присваивать публичный IP инстансу в приватной подсети «для удобства»
- Риск. забывать, что без NAT gateway приватная подсеть вообще не имеет исходящего доступа в интернет
- Риск. путать отсутствие публичного IP с полной сетевой изоляцией, забывая про security group.