Я создал две подсети в моем vpc (10.11.0.0/22)
Я также создал шлюз NAT в общедоступной подсети и подключил его к частной подсети, чтобы экземпляры в частной подсети могли получить доступ к Интернету.
Итак, все работает, я создал экземпляр Linux в общедоступной подсети, и я могу использовать ssh, а также получить доступ в Интернет. То же самое и с частными экземплярами подсети, я могу войти в частные экземпляры через общедоступные экземпляры.
Но после применения сетевых ACL
Входящие правила
Исходящие правила
Я могу получить доступ к Интернету из своих общедоступных экземпляров, но не могу получить к нему доступ через частный экземпляр.
Для чего нужны правильные сетевые ACL для доступа в Интернет из частных экземпляров?
Шлюзы NAT не являются серверами, поэтому у них нет причин использовать только традиционный временной диапазон портов. Как указано в документации:
Шлюз NAT использует порты 1024–65535.
https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html
Таким образом, ваш NACL слишком ограничивает шлюз NAT для правильной работы.
Если вы настроены использовать сетевые ACL в своем VPC, вы можете создать новую общедоступную подсеть для шлюза NAT, которая не использует настраиваемый NACL, потому что на шлюзе NAT нет ничего, что нужно защищать - они внутренне безопасны, потому что ( а) они отбрасывают любой трафик, который не распознают, (б) они не разрешают отображение входящего порта, и (в) они не являются серверами, поэтому нет необходимости ограничивать доступ к самому шлюзу.
Кроме того, для шлюза NAT правила обоих NACL применяются к трафику в обоих направлениях (хотя и в разных контекстах и в зависимости от трансляции портов), и это усложняет значимые правила, т. Е. «Входящий» список применяется к трафику «в» из Интернета, а также трафик «входящий» в шлюз от экземпляров (который является исходящим в Интернет), а список «исходящий» применяется к трафику «исходящий» в Интернет и «исходящий» для экземпляров (входящий из Интернет).