Какое максимальное количество клиентов могут быть на одном IP-адресе?
Как-то раз я запустил две виртуалки на VMware Workstation одновременно. В сумме получилось, что я зашёл в Google с 4 устройств с одного IP-адреса одновременно. С хост машины, со смартфона, с ВМ1 и с ВМ2. После этого многие сайты, использующие reCAPTCHA или CloudFlare стали считать меня ботом и перестали пускать к себя. Часто маразм переходит в абсурд и для того чтоьы искать в Google надо проходить проверку "я не робот". Раньше проблема решалась провайдером, у меня раз в 3 дня IP адрес меняется автоматически. Теперь он уже месяц не меняется и у меня месяц проблемы с интернетом.
На форумах говорят о странной активности из локальной сети. Задаю встречный вопрос: Сколько устройств одновременно может быть на одном NAT IP? Можно ли использовать виртуалки?
Сколько устройств одновременно может быть на одном NAT IP?
Теоретически - ничем не ограничено. Практически - ограничено настройками и возможностями оборудования/ПО. Обычные значения для оборудования - 4к либо 8к (минус немножко), определяется размерами таблицы сеансов. Обычные значения для программного роутера - 32к либо 64к (опять же минус немножко).
Можно ли использовать виртуалки?
NAT глубоко параллельно, чей трафик преобразовывать. Более того, у него нет устойчивой возможности определить, является ли определённый трафик трафиком реального или виртуального узла.
Это ж откуда такие жёсткие ограничения-то? прямо создаётся впечатление, что один NAT ни при каких обстоятельствах не сможет обслуживать бОльшее количество узлов внутренней сети, что крайне сомнительно.
Всё упирается в размер таблицы сессий, размер которой может быть и более 64к. А сессия определяется набором (протокол-адрес источника-адрес приёмника) как минимум, для некоторых протоколов ещё плюс номера портов, и тут количество вариантов намного выше озвученных 63к.
АртемЪ, Денис по какой-то причине ставит ограничение сверху... а вот по какой - непонятно. Я понимаю, если бы он явно сказал, что это ограничение на количество доступных к использованию портов на протокол (в котором вообще есть понятие порта - но в этом случае было бы вообще правильно указать диапазон номеров для свободного использования, который в TCP/UPD достаточно неширок, 49152—65535).
shurshur, количество одновременных коннектов формально ограничено, как я и указываю, размерами таблицы сессий. А формально ничто не мешает этой таблице быть шире, чем "16-битной".
Akina, количество сессий расщиряют расширением nat-пула до нескольких адресов. Например, всё образование Москвы ходит (точнее, ходило тогда, когда я там работал) через 2 пула по 16 адресов.
Каким угодно число быть не может. Stateful nat подменяет не только адреса, но и исходящие порты, по ним он идентифицирует коннекты. А число портов на один IP ограничено.
Akina, Ну смотрите - есть 65тысяч портов.
Теоретических можно посадить на них 65тысяч клиентов.
Однако - самому серверу тоже нужен некоторый диапазон портов, плюс у каждого клиента не одно приложение в сеть будет ломиться, не один коннект будет, значит нужно более одного порта на клиента.
Сколько именно - зависит от клиента, кому то хватит и пару портов, кому то хватит и пары тысяч портов.
подменяет не только адреса, но и исходящие порты, по ним он идентифицирует коннекты.
Так это реализация такая.
На самом деле коннект, как я уже говорил выше, определяется не только использованным портом на внешнем интерфейсе. Просто большинство NAT реализованы так, что на каждое соединение используют выделенный номер порта.
Да и нет никаких оснований к тому, что невозможно использование одного и того же порта для нескольких соединений. Адрес/порт назначения различается? этого вполне достаточно, чтобы разделять трафик по соединениям. Другой вопрос, что программно это получится сложнее, и на практике необходимость такого крайне маловероятна. Поэтому и не реализовано нигде. Или лучше скажем осторожно - вроде бы нигде...
@Jump
Теоретических можно посадить на них 65тысяч клиентов.
Вот как раз теоретически-то и нет такого ограничения. Это практически - да, из-за существующей реализации.
АртемЪ, стоп-стоп... товарищ чётко говорит о выводе внутренних узлов в Инет через NAT. А Вы почему-то переходите на маппинг внешних обращений на узлы внутренней сети.
Akina, Что такое вывод внутренних узлов в интернет??? Это как вообще?
Какие узлы, какой вывод?
Есть хост внутри локальной сети, своего адреса в глобальной сети не имеет, он отправляет трафик на маршрутизатор провайдера, и уже с белого адреса провайдера трафик идет на нужный сервер.
Этот же маршрутизатор провайдера сообщает нужному серверу что ответ будет ждать на порту xxxx
И записывает в таблицу - что трафик пришедший на порт xxxx нужно отсылать в локальную сеть абоненту с адресом локальным адресом y.y.y.y.
Исходящий трафик уходит без проблем, проблема только в том чтобы различать какому именно абоненту из внутренней сети предназначен входящий трафик. И для этого используются номер порта.
Исходящий трафик уходит без проблем, проблема только в том чтобы различать какому именно абоненту из внутренней сети предназначен входящий трафик. И для этого используются номер порта.
Это в большинстве (или всех?) текущих реализаций NAT. Но формально-то ничто не мешает для этого использовать группу (адрес назначения - порт назначения - номер порта, использованного для отправки)? Само собой в ответах адрес/порт назначения станет в адресом/портом источника пакета - и этих данных достаточно для идентификации абонента назначения во внутренней сети даже при использовании одного и того же порта для маршрутизации наружу трафика нескольких абонентов.
И записывает в таблицу - что трафик пришедший на порт xxxx нужно отсылать в локальную сеть абоненту с адресом локальным адресом y.y.y.y.
Что мешает использовать правило "трафик пришедший на порт xxxx с адреса z.z.z.z нужно отсылать в локальную сеть абоненту с локальным адресом y.y.y.y"?
Сколько угодно, иначе как целых организации с парками в несколько тысяч машин сидят с одного IP. Просто у рекапчи сложный алгоритм определения и если на один и тот же сайт одновременно ломиться с нескольких компов за натом, то она таким действием подразумевает ботнет, а если просто серфить, то, обычно, все норм
Денис Юрьев, Ну в такую цифру хостов упрется разве что крупный ЦОД или транснациональная корпорация, поэтому на локальном уровне хоть 10 хоть 50 хоть 100
Написано
CityCat4
@CityCat4 Куратор тега Сетевое оборудование
//COPY01 EXEC PGM=IEBGENER
За провайдерским натом - десятки тысяч. У нас больше сотни юзеров и все пользуют гугл и никто никогда не жаловался на проблемы :)