Глядя на проектирующую платформу и новые архитектуры в облаке, может быть весьма пугающим, особенно когда это ваш первый раз. Сегодня я хочу поговорить о воротах Nat, что это? Как это работает? Когда это использовать, и т. Д…
Что значит даже NAT?
Итак, во-первых, во-первых, что на самом деле нат ?? Если мы слушаем PAPY Wikipedia:
Перевод сетевого адреса (NAT) — это метод перенаправления одного IP-адреса в другое, модифицируя информацию об адресе сети в заголовке IP-накопителя, когда они находятся в транспортировке по устройству маршрутизации трафика. [1] Техника изначально использовалась в качестве ярлыка, чтобы избежать необходимости Readydress каждый хост, когда была перемещена сеть. Он стал популярным и важным инструментом в сохранении глобального адресного пространства перед лицом исчерпания адреса IPv4. Один интернет-маршрутный IP-адрес ворота NAT может использоваться для всей частной сети. Источники: Википедия
Вот и все! Как сказал дедушка, довольно распространено, чтобы увидеть инфраструктуру с использованием ворот Nat, особенно в наши дни с облаком (из-за истощения IPV4). В облаке есть одно правило. Держите все личное (по крайней мере, максимально как можно больше).
Обычно, когда вы начинаете играть с ☁️, вы создадите один экземпляр, два и т. Д., Но для доступа непосредственно к этим экземплярам вы настроите те, которые настроятся от публичного IP, это будет проще. Тогда ваша infra становится немного более зрелой (и вы также), и вы понимаете, что использование общественных IPS может обратиться к вам, если вы получите слишком допустимые с правилами брандмауэра (или группы безопасности). Таким образом, вы решите переместить все в частную подсеть (доступно только внутри вашего виртуального частного облака) и используйте главный герой этой статьи. Nat Gateway 🎉.
Нам достаточно повезло, облачные провайдеры продают конкретные экземпляры или услуги, чтобы позаботиться об этом для нас. Слишком удобно Отказ Но в конце концов, как это на самом деле работает? Допустим, вы следили за инструкцией ваших облачных поставщиков, чтобы иметь NAT.
Тогда у вас есть такая платформа:
Как вы можете видеть на диаграмме, каждое исходящее соединение проходит через шлюз NAT и возвращается к конкретному экземпляру. Мой вопрос как? Экземпляр не имеет публичного IP, поэтому сервер в Интернете, когда он получает пакет, видит только IP экземпляра NAT. Итак, как работает Nat Gateway?
Как работает ворота Nat?
Поэтому, как сказал дедушка, Gateway NAT вводит свой собственный адрес внутри каждого пакета, чтобы внешний сервер знал, где отправить обратно пакет ( Spoiler: К ворону Nat).
Но как знает NAT, где отправить пакет обратно?
Обычно вы должны увидеть здесь удивительную анимацию SVG, но dev.to не выглядит, чтобы поддержать его …
Так что происходит:
Ваш запрос отправляется в шлюз NAT, он получит пакет и хранит локализацию отправителя и назначения в том, что мы называем Нат Таблица Отказ NAT затем изменит «От» Заголовок вашего запроса Чтобы заменить исходный IP с одним из NAT, отправьте пакет в правильный пункт назначения, затем ваш NAT получает ответ отклика, измените пункт назначения пакета/запроса на экземпляр, который в вашей частной подсети. бум. Работа сделана.
Вы можете себе представить, что может быть какой-то столкновение, если красный и синий экземпляр запросит точно такую же конечную точку, NAT не будет знать, где перенаправить ответ.
Таким образом, я думал изменить исходный порт для случайного, чтобы мы знали, к какому хосту перенаправляют этот запрос! Я читаю немного больше в Интернете, который на самом деле то, что происходит (так довольно гордится собой там 😄)
Давайте суммируемся:
- Ваш запрос/пакет отправляется в NAT
- NAT регистрирует источник IP, Source Port, IP-адрес назначения, порт назначения и получить случайный порт и поставить всю эту информацию в таблице переводов
- Изменяет источник IP и исходный порт для публичного IP-адреса NAT и случайного порта, выделенного по этому запросу
- Отправить запрос/пакет до назначения
- Сервер назначения обрабатывает запрос и отправляет запрос обратно в Gateway Nat (как это думает, это исходит от него, лол, ты дурак)
- NAT получает пакет/запрос, проверять таблицу перевода, если для него есть запись, отправляет его в частном случае
- Частный экземпляр получает пакет.
Ограничения
Использование NATS позволяет сохранить наши случаи « частные » и до сих пор дают нам внешний трафик. Но на нем должно быть некоторое ограничение. Конечно, есть. На втором этапе перевода (AKA оформление пакета в таблице NAT) Gateway NAT выделит случайный порт для ответа сервера. Проблема в том, что вы скажете, у вас есть 20 серверов, работающих на 20 услуг, которые отправляют 10 запросов в секунду к внешним сервисам. К сожалению, эти внешние услуги получают недоступные, соединение будет ждать тайм-аута … Давайте скажем 15 секунд. Менее чем за 10 секунд Шлюз NAT сообщит о нездоровительном или, по крайней мере, не может обработать дополнительные запросы.
Это почему?
Вы использовали все эфемерные порты Доступно на NAT. 💥
Давайте сделаем немного математики. Мы создаем 20 * 20 * 10 запросов за секунды aka 4000Requests/s. Таким образом, каждый запрос открывает эфемерный порт в NAT. 4000 портов открылись. Второй второй 4000 других, третий секунда, у вас уже открылись 12000 эфемерных портов. Это будет варьироваться от вашей операционной системы, но в соответствии с Википедия :
Многие ядра Linux используют диапазон портов 32768 до 61000. (Эффективный диапазон доступен через файловую систему/proc в узле/proc/sys/net/ipv4/ip_local_port_range)
Таким образом, примерно 28232 порты я бы сказал (просто угадывание). Это наш максимум эфемерных портов, которые можно открыть. Хорошо поздравляем, мы взорвали предел, и у нас будет много проблем после этого. Рад, это была просто ролевая игра, а не фактическое отключение 😅.
Заключение
И вуаля! Мы видели, как ведут себя ворота Nat и его ограничение. Они являются одним из основных компонентов инфраструктуры в ☁️ Поэтому довольно важно иметь как минимум базовые знания о том, для чего они используются. Sur CE, Codez Bien!
Оригинал: «https://dev.to/juan__wolf/what-is-a-nat-gateway-5g2o»