Как NAT или прокси реагируют на входящий пакет TCP SYN? Разница между NAT и Proxy

0

В некоторых системах обмена сообщениями два клиента обмена сообщениями отправляют/принимают пакеты непосредственно друг от друга в чате или голосовом вызове. Я думаю, что основной механизм (например, TCP): эти клиентские программы открывают прослушивающий TCP-сокет и сообщают серверу обмена сообщениями/координирующей их IP/PORT пару. Затем клиентские программы извлекают IP/PORT другой стороны из сервера обмена сообщениями/координации. И один из них (допустим, A) затем инициирует TCP с другим (скажем B) с полученной парой IP/PORT B.

Когда пассивный клиент B (который ожидает пакет TCP SYN) не за NAT или прокси, это прекрасно. Но если B находится за NAT или прокси-сервером, то пара IP/PORT фактически является общедоступным сетевым интерфейсом NAT или прокси.

Итак, мой вопрос: когда NAT или прокси получает TCP SYN, какова его реакция? Как они передают TCP SYN в соответствующий хост/процесс за ним?

  • 2 ответа
  • Сортировка:

    Активность

0

Я сомневаюсь, что ваше первоначальное предположение верно. Скорее всего, они оба открывают активные подключения к серверу, а сервер маршрутизирует данные между ними. Это намного проще, и проблемы, которые вы описываете, исчезают.

0

Этот вопрос был явно спросил давно, но до сих пор...

чат и голосовые/видео вызов, как правило, обрабатываются совершенно по-разному. В случае чата вы, вероятно, будете использовать протокол XMPP, где оба конца будут подключаться к серверу и обмениваться данными через него. XMPP находится на TCP на уровне 4, поскольку надежность в этом случае выше приоритета, чем латентность. Поскольку клиенты - это те, которые открывают и поддерживают соединение, в этом случае у вас не будет проблем с NAT.

  • части, где вы обсуждаете сеть (IP-адрес и порт) и деталь кодеков, необходимую для сигнализации настройте вызов (известный как SDP - протокол описания сеанса)
  • медиа-часть, где вы эффективно обмениваетесь голосом/видеоконтентом между двумя абонентами.

Сигнал обычно проходит через TCP с использованием протоколов более высокого уровня, таких как SIP (Session Initiation Protocol). Это сообщение будет проходить через сервер. Средства массовой информации проходят через UDP с использованием протоколов более высокого уровня, таких как RTP (протокол передачи в реальном времени), и эта часть обмена сообщениями, как правило, проходит одноранговое соединение. Один порт UDP может использоваться как для передачи, так и для приема трафика для одного голосового/видеоканала. Кроме того, вы, вероятно, захотите получить информацию о качестве звонка во время вызова, чтобы вы могли, например, уменьшите используемую полосу пропускания, чтобы избежать/уменьшить потерю пакета. Для этой цели вы должны использовать протокол RTCP (протокол управления транспортным средством в реальном времени). В этом случае обход NAT имеет решающее значение! Поскольку ни один из клиентов не знает свои общедоступные IP-адреса, вам нужен сервер в вашей внутренней сети (в общедоступном Интернете), который мог бы сказать «как вы видите снаружи», то есть за NAT. В частности. Мир WebRTC этот сервер знает ICE. После того, как партнер узнает, как это видно из Интернета, он будет размещать эту информацию внутри части SDP сигнального сообщения, чтобы другой конец мог дойти до нее через Интернет. Имейте в виду, что маршрутизатор, который выполняет NAT, может также потребовать некоторые дополнительные настройки для отслеживания используемых портов UDP для голоса и видео (для NAT-back трафика из Интернета вам).

Наконец, в этих случаях используются другие решения, но это зависит от вашей настройки. Если вы пишете программное обеспечение для конечного пользователя, тогда будут применяться предыдущие объяснения.Однако, если вы пишете программное обеспечение для корпоративного рынка, такие решения, как дополнительный сервер (известный как EDGE) на границе вашей корпоративной сети, будут распространенным подходом.

Я могу написать об этом часами, но этого должно быть достаточно для начала... :)

Соединение ПК, подключенного к локальной сети, с интернетом может осуществляться с помощью таких технологий, как NAT и Proxy. Что они собой представляют?

Что такое NAT?

NAT - это технология, позволяющая подключать ПК, объединенные в локальную сеть, к интернету при задействовании механизма трансляции IP-адресов (либо портов) в сетевое пространство за пределами ЛВС. Каждый ПК, подключенный к локальной сети, осуществляет запросы в службу NAT, которая преобразует их в те, что адресованы тем или иным сервисам интернета.

Использование технологии NAT, как правило, предполагает задействование отдельного сетевого устройства - маршрутизатора, сервера или же, например, межсетевого экрана.

Даже если к интернету посредством технологии NAT подключается несколько компьютеров одновременно, онлайновый сервер видит запросы только с одного IP-адреса - устанавливающегося на устройстве, в котором реализованы алгоритмы NAT.

Есть две основные разновидности рассматриваемой технологии - Source NAT и Destination NAT.

Первая предполагает замену адреса, установленного для источника пакета, при передаче данного пакета на компьютер назначения в интернете и, соответственно, замену адреса, установленного для ПК назначения в локальной сети, при отправлении пакета обратно. При необходимости меняться могут также номера портов ПК в ЛВС.

Технология Destination NAT предполагает трансляцию пакетов, направляемых в ЛВС из внешней среды - например, с онлайнового сервера, на конкретный ПК, имеющий локальный IP-адрес, который недоступен для соответствующего онлайнового сервера.

Основное преимущество применения схемы подключения ЛВС к интернету через NAT - централизация настроек соответствующей службы. Нет необходимости выставлять какие-либо специальные опции на каждом из ПК, подключенном к локальной сети.

Что такое Proxy?

Proxy - это технология, которая позволяет подключать ПК, объединенные в сеть, к тем или иным онлайновым сервисам через специальный шлюз, задействующийся отдельными приложениями. То есть для подключения ПК, которые входят в состав ЛВС, к proxy-серверу на каждом из них необходимо выставить настройки соединения. Технология Proxy - это, по сути, программная служба, загружаемая на отдельном сервере ЛВС или на одном из серверов интернета.

Компьютеры, подключенные к ЛВС, запрашивают доступ к онлайн-ресурсам не напрямую, а через IP-адрес и порт proxy-сервера. Данная концепция предопределяет наличие некоторого сходства между Proxy и NAT в том смысле, что онлайновый сервер направляет контент по запросу отдельных ПК на общий IP-адрес, прописанный в настройках proxy-сервера. Конечно, proxy-серверы в некоторых случаях могут устанавливать для подключаемых ПК уникальные внешние IP-адреса - но практически исключено их совпадение с оригинальными IP-адресами, под которыми компьютеры зарегистрированы в ЛВС.

Можно отметить, что существуют чисто «онлайновые» proxy-серверы, которые используются как раз таки в целях намеренной маскировки IP-адресов компьютеров, подключающихся к интернету. Принцип их работы в целом схож с тем, что характеризует функционирование proxy-серверов, устанавливаемых в ЛВС.

Одно из главных преимуществ использования технологии Proxy - возможность осуществлять кеширование онлайнового контента (сохранение в памяти сервера элементов посещенных веб-страниц, загруженных файлов), что позволяет ускорять доступ к интернету с отдельных ПК. Другие преимущества Proxy - в возможности:

  • проводить контроль над доступом отдельных пользователей ЛВС к интернету, фильтрацию контента и адресов сайтов,
  • устанавливать на proxy-серверах антивирусный софт, осуществляющий анализ исходящего и входящего трафика, что позволяет значительно повысить безопасность сети.

Технология Proxy рассматривается многими специалистами как более функциональная, чем NAT, поскольку позволяет внедрить широкий спектр алгоритмов управления сетевым доступом на программном уровне.

Сравнение

Главное отличие NAT от Proxy - в технологических принципах обеспечения одновременного доступа в интернет нескольких ПК, находящихся в составе ЛВС.

Если говорить о NAT, то данный стандарт управления сетевыми подключениями предполагает применение относительно более простых алгоритмов - когда адрес ПК, отправляющего пакет в интернет, меняется на адрес NAT-устройства, что позволяет последнему получить ответный пакет и доставить его по назначению. Корректировка отправляемого и получаемого пакетов при этом не осуществляется.

Технология Proxy предполагает использование более сложных механизмов обеспечения обмена пакетами между ПК, находящимися в ЛВС, и онлайновыми серверами. Так, например, при задействовании proxy-сервера контент может кешироваться, фильтроваться, проверяться на наличие вирусов.

Определив, в чем разница между NAT и Proxy, зафиксируем основные выводы в небольшой таблице.

Таблица

NAT Proxy
Что между ними общего?
Обе технологии используются в целях организации одновременного подключения к интернету нескольких компьютеров, объединенных в локальную сеть
Онлайновые серверы получают запросы от IP-адресов NAT-устройства или proxy-сервера, фактически не совпадающих с IP-адресами компьютеров, на которых формируются данные запросы
В чем разница между ними?
NAT-устройство меняет адрес ПК, отправляющего пакет в интернет, на свой (или прописанный в настройках), не изменяя структуры запроса, после чего, получив пакет от онлайнового сервера, доставляет его по назначению также без изменений Proxy-сервер, получив запрос от ПК, отправляющего пакет в интернет, перенаправляет его на онлайновый сервер через установленный IP-адрес, после чего, получив пакет, доставляет его по назначению без изменений либо откорректировав с помощью фильтров (при необходимости - проверив антивирусным модулем)
Технология не требует прописывания дополнительных сетевых настроек на отдельных ПК в рамках ЛВС Технология требует настройки программ, используемых для доступа в сеть, на каждом из ПК в ЛВС

Давай попробуем на примере UserGate, хотя у меня его нет под рукой, буду по памяти, так что извини, если какие детали упущу из виду.

Назначаешь пользователя в UserGate - допустим: Вася. Указываешь способ авторизации: допустим: по IP адресу, прописываешь - 192.168.0.66, дополнительно можно в авторизации указать что бы учитывал и МАС адрес для пущей безопасности, ну что бы этих Васей не наплодилось... Если Вася будет только лазать по страничкам и еще, может быть, что то скачивать то достаточно ему HTTP и FTP прокси и NAT можно не включать (это относится только к UG о котором мы тут и говорим), естественно у Васи в броузере должно быть прописано: галочка - использовать прокси и адрес прокси: 192.168.0.55 и порт 8080 (ну или тот, что ты указал в настройках своего UG) для HTTP и допустим 21 порт для FTP. Все Вася подсоединен. Но возможно Вася захочет еще отправлять и получать почту с, например, mail.ru... идем на вкладочку NAT, ставим галочку - использовать, где - то, на других вкладках настройки снимаем галочку что бы активировать POP и SMTP, т.к., по - умолчанию, они отключены, соответствующие пункты станут активными, далее: идем в настройку Васиной учетной записи и в табличке что ему разрешено ставим галочки на POP и SMTP. Мы включили NAT для Васи по протоколам POP и SMTP. Если этот пресловутый Вася будет настраивать свою почтовую программу, то укажет обычные настройки для получения почты с mail.ru и будет спокойно получать свою почту, как если бы он был подключен к Интернету напрямую. Если нужно разрешить какие другие протоколы, то придется прописать их вручную. Без использования NAT придется для тех же целей организовывать почтовый шлюз и в Васином почтовом клиенте прописывать путь до шлюза и настраивать сам шлюз, либо организовывать portmapping (перенаправление), вот видишь а ты говорил, что NAT - бяка, а он тебя избавляет от лишней беготни и разных мудренных настроек. Будем считать, что предварительно с первой задачей разобрались. Где конкретно находится та или иная настройка смотри сам, повторяю, что у меня UserGate перед глазами нету.

Вторая задача наоборот - предоставить другому пользователю дозваивающемуся ко мне по модему (входящее подключение) доступ к моему инету по локалке. В этом случае при соединении по модемам я получаю ip 192.168.5.1, дозванивающемуся даю 192.168.5.2 (наша маска 255.255.255.0).

Создаем еще одного пользователя: пусть будет Миша. Авторизация по логину и паролю, т.к. IP будет все время разный.

В дополнительных настройках UG указываем - использовать родительский прокси: и забиваем туда адрес прокси вашей локальной сети, если он используется, конечно. А, вообще, в этом случае надо смотреть на месте.

Я рядовой клиент локалки (ip 192.168.0.55 mask 255.255.255.0). Имею два канала выхода в инет: один по нашей локалке, другой по модему (dial-up). При выходе по модему я получаю внешний ip 84.53.206.121 (например).

Моя первая задача - предоставить доступ к dial-up инету такому же клиенту в локальной сети как и я (его ip 192.168.0.66 mask 255.255.255.0).

Моё же мнение: то, что вы творите - форменное безобразие, т.к. вы ковыряете дырки в сети и нарушаете режим безопасности, не обладая достаточными знаниями, а ваш админ, просто, разгильдяй и бывший студент троечник, если позволяет такое вытворять в сети рядовым юзерам. Вам надо дать по рукам, а админа уволить. У нормального админа у вас даже не было бы прав что то ставить на машину без его ведома, тем более прокси и NAT.

А если NAT все равно на какой ip ставить, а на клиенте не надо делать настроек и указывать где же NAT стоит...

есть такое понятие, как DHCP сервер, клиент автоматом ищет доступный сервер и получает IP, а NAT транслирует определенные указанные ему локальные адреса, к тому же есть такое понятие, как привязка по MAC - адресу.

то к какому же компу будет обращаться клиент, если допустим в сети NAT стоит на двух машинах?? (Любой же может поставить у себя тот же UserGate или WinGate c NAT)

скорее всего к тому, который найдет первым... или, который указан явным образом...вот в том то и беда, если каждый может установить, что угодно и где угодно, таким образом можно, вообще, все запутать и вывести сеть из строя, это можно охарактеризовать одним словом - БАРДАК , у сети должен быть один хозяин, который осуществляет политику этой сети. А остальное популистские сказки, вроде большевистской: каждая кухарка может управлять государством. Несмотря на то, что я ответил в этой теме, мое отношение крайне негативное ко всему этому, и не надо злоупотреблять мягкотелостью или неопытностью вашего админа. А если уж берешься за подобную модернизацию вашей сети, то, как минимум, должен четко представлять что ты делаешь, как, зачем и к каким последствиям это может привести. Не обижайся, тут ничего личного. Но представь ситуацию, когда в автобусе каждое пассажирское место оснащено рулем и педалями управления, я бы не хотел оказаться в этом автобусе.