NAT и Xbox Live

Автор: Topol Четверг, Май 3rd, 2012 Нет комментариев

Рубрика: Операционные системы

У вас бывало такое, что вы запускали диагностику сети и получали сообщение о том, что у вас есть NAT (Network Address Translation) типа Moderate или Strict? В Интернете есть много информации о том, как сконфигурировать маршрутизаторы, чтобы исправить эту ошибку — например, статья поддержки Xbox.com «Error: Your NAT type is set to strict (or moderate).» Но почему это так необходимо? Почему Open NAT лучше, чем Strict или Moderate NAT? Чтобы вы лучше поняли, чем для игр один тип NAT лучше другого, в этой статье я расскажу вам о том, что происходит на сетевом уровне, когда консоли Xbox 360 пытаются подключиться и передавать информацию между собой.


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

В рамках данного обсуждения соединение между двумя компьютерами описывается двумя параметрами:

1. IP-адрес компьютера
2. Номер порта, связанный с данным подключением. Номера портов — это то, с помощью чего компьютер связывает сетевое подключение с процессом, например, с веб-браузером. Веб-серверы, к примеру, используют порт 80 для обработки трафика HTTP. Когда вы подключаете ваш веб-браузер к веб-сайту, браузер использует IP-адрес веб-сервера и порт 80 для подключения к веб-сервису.
NAT

Функция NAT в маршрутизаторе позволяет единственному смотрящему в Интернет IP-адресу использоваться множеством сетевых устройств, таких как компьютеры. Кроме того, это позволяется организовать еще один уровень защиты, запрещая прямой доступ к компьютерам за NAT с других компьютеров в Интернет. Это достигается путем создания таблицы отображения портов, которая сопоставляет внутренние IP-адреса и номера портов с смотрящими в Интернет IP-адресами и номерами портов. Эта таблица отображения используется для изменения входящего и исходящего сетевого трафика. Обычно эти таблицы генерируются динамически. Новая запись таблицы создается каждый раз при обнаружении нового исходящего подключения.

Есть три типа NAT, которые мы будем рассматривать применительно к Xbox 360:

 

  • Open NAT, также известный как Full-Cone NAT
  • Moderate NAT, также известный как Port-Restricted NAT
  • Strict NAT, также известный как Symmetric NAT

Мы рассмотрим каждый тип и посмотрим, как обрабатываются подключения.

Open NAT
Теперь, когда мы обсудили некоторые базовые понятия, я бы хотел обратиться к тому, как консоли Xbox 360 взаимодействуют с NAT. Когда в сети используется NAT, то первая проблема, с которой сталкиваются пользователи, связана с установлением соединения между консолями Xbox 360, поскольку NAT только обновляют их таблицы отображения при попытке установления исходящего подключения. Здесь в дело вступает сервис Xbox Live. Он позволяет использовать технологию под названием NAT Hole Punching. Вот как это работает для консолей Xbox 360 за Open NAT:

  • Вы подключаете ваш Xbox 360 к вашему маршрутизатору. Вашему Xbox назначается IP-адрес, например, 192.167.1.3.
  • Вы входите на Xbox Live. Ваш Xbox 360 отсылает пакеты к Xbox Live на определенный порт, например, на порт 3074.
  • Это подключение обнаруживается вашим маршрутизатором (NAT) и создается новая запись отображения для вашего Xbox, в данном случае IP-адрес 192.167.1.3 и локальный порт 3074, в таблице отображения NAT. После этого NAT назначает подключению уникальный смотрящий в Интернет номер порта, например, 2000. Это позволяет множеству консолей Xbox 360 и компьютеров в локальной сети использовать один и тот же локальный порт, но по-прежнему оставаться уникальными для машин в Интернет.
  • Служба Xbox 360 получает запрос на подключение от вашего Xbox и сохраняет IP-адрес и смотрящий в Интернет номер порта вашего Xbox для дальнейшего использования.
  • Во время процесса подключения, сервис Xbox Live определяет тип NAT на маршрутизаторе, за которым находится ваш Xbox 360, и сохраняет его для дальнейшего использования.
  • Вы решаете поиграть в многопользовательскую игру с вашим другом, и вашему Xbox 360 требуется установить сетевое подключение к Xbox вашего друга. Ваш Xbox запрашивает у Xbox Live IP-адрес, смотрящий в Интернет номер порта и тип NAT маршрутизатора Xbox вашего друга.
  • Ваш Xbox 360 использует информацию о типе NAT для того, чтобы решить, как подключаться к Xbox вашего друга. В данном случае, это Open NAT.
  • Ваш Xbox 360 использует эти IP-адрес и номер порта для открытия подключения к Xbox вашего друга.

Вот пример того, как может выглядеть таблица отображения NAT после подключения к сервису Xbox Live:

Таблица отображения Open NAT вашего Xbox 360:

Локальный IP-адрес Локальный порт IP-адрес Интернет Порт Интернет
192.167.1.3 3074 10.10.10.10 2000

Таблица отображения Open NAT Xbox 360 вашего друга:

Локальный IP-адрес Локальный порт IP-адрес Интернет Порт Интернет
192.167.2.5 3074 20.20.20.20 3000

На следующей схеме показано, что происходит, когда сетевые пакеты передаются между двумя консолями Xbox 360 после установления подключения. Каждый сетевой пакет изменяется, поскольку он проходит через NAT от локальной сети в Интернет и из Интернет в локальную сеть.

Moderate NAT
Moderate NAT пытается улучшить защиту путем сохранения исходного/удаленного номера порта в таблице отображения вместе с локальным IP-адресом. Все исходящие сетевые пакеты должны иметь порт назначения и порт источника, которые соответствуют смотрящему в Интернет порту/разрешенному порту источника, записанным в получаемой таблице отображений NAT. Если они не совпадают, сетевой пакет отбрасывается. Посмотрите на таблице отображения, приведенные ниже.

Таблица отображения Moderate NAT1:

Локальный IP-адрес Локальный порт IP-адрес Интернет Порт Интернет Разрешенный порты источника
192.167.1.3 3074 10.10.10.10 2000 074, 3000

Таблица отображения Moderate NAT2:

Локальный IP-адрес Локальный порт IP-адрес Интернет Порт Интернет Разрешенный порты источника
192.167.2.5 3074 20.20.20.20 3000 3074, 2000

NAT можно представить в виде почтового отделения. В данном сценарии, сетевой трафик является отправленным по почте письмом, а таблица отображения NAT — каталогом почтового отделения, используемого для того, чтобы выяснить, куда отправить почту. При обработке письма номер порта назначения является именем получателя, а IP-адрес — адрес получателя. Почтовое отделение Open будет отправлять письмо любому известному получателю по любому известному адресу от любого отправителя. Оно не смотрит на информацию об отправителя. Почтовое отделение Moderate будет доставлять письмо только если имя получателя, его адрес и имя отправителя присутствуют и связаны в его каталоге.

Для консолей Xbox 360 Moderate NAT представляют проблему. Требуется больше информации о входящем пакете; сервис Xbox Live не содержит эту информацию. В большинстве случаев есть способ обойти эти требования с помощью нескольких маленьких модификаций к шагам подключения Open NAT:

  • Вы подключаете ваш Xbox 360 к вашему маршрутизатору. Вашему Xbox назначается IP-адрес, например, 192.167.1.3.
  • Вы входите на Xbox Live. Ваш Xbox 360 отсылает пакеты к Xbox Live на определенный порт, например, на порт 3074.
  • Это подключение обнаруживается вашим маршрутизатором (NAT) и создается новая запись отображения для вашего Xbox, в данном случае IP-адрес 192.167.1.3 и локальный порт 3074, в таблице отображения NAT. После этого NAT назначает подключению уникальный смотрящий в Интернет номер порта, например, 2000. Это позволяет множеству консолей Xbox 360 и компьютеров в локальной сети использовать один и тот же локальный порт, но по-прежнему оставаться уникальными для машин в Интернет.
  • Служба Xbox 360 получает запрос на подключение от вашего Xbox и сохраняет IP-адрес и смотрящий в Интернет номер порта вашего Xbox для дальнейшего использования.
  • Во время процесса подключения, сервис Xbox Live определяет тип NAT на маршрутизаторе, за которым находится ваш Xbox 360, и сохраняет его для дальнейшего использования.
  • Вы решаете поиграть в многопользовательскую игру с вашим другом, и вашему Xbox 360 требуется установить сетевое подключение к Xbox вашего друга. Ваш Xbox запрашивает у Xbox Live IP-адрес, смотрящий в Интернет номер порта и тип NAT маршрутизатора Xbox вашего друга.
  • Ваш Xbox 360 использует информацию о типе NAT для того, чтобы решить, как подключаться к Xbox вашего друга. В данном случае, это Moderate NAT.
  • (ИЗМЕНЕНИЕ!) Сервис Xbox Live оповещает Xbox 360 вашего друга, что ваша консоль хочет установить подключение.
  • (ИЗМЕНЕНИЕ!) Обе консоли Xbox 360 отсылают начальный пакет другому с помощью IP-адресов и номеров портов, сохраненных в сервисе Xbox Live. Начальный пакет указывает NAT для каждого Xbox 360 добавить IP-адрес, локальный порт и порт назначения/удаленный порт в его таблицу отображения.
  • (ИЗМЕНЕНИЕ!) Теперь консоли Xbox 360 могут открывать подключение друг с другом, поскольку таблица отображения NAT содержит информацию, необходимую, чтобы разрешить проход сетевым пакетам.

Strict NAT
И наконец, Strict NAT. Это самый безопасный, и самый ограничивающий тип NAT. Он хранит удаленный IP-адрес и номер порта в таблице отображения NAT. Это означает, что каждое удаленное устройство, подключающееся через Strict NAT, получает свой собственный смотрящий в Интернет номер порта. Поскольку NAT Hole Punching полагается на то, что NAT разрешает подключение множества устройств, для взаимодействия через единственный смотрящий в Интернет номер порта, NAT Hole Punching не будет работать с Strict NAT.

Таблица отображения Open NAT1:

Локальный IP-адрес Локальный порт IP-адрес Интернет Порт Интернет
192.167.1.3 3074 10.10.10.10 2000

Таблица отображения Strict NAT2:

Локальный IP-адрес Локальный порт IP-адрес Интернет Порт Интернет Удаленный IP-адрес Удаленный порт
192.167.2.5 3074 20.20.20.20 3000 10.10.10.10 2000

Возвращаясь к аналогии с почтовым отделением, почтовое отделение Strict требует знания имени и адреса отправителя для всех входящих писем. Оно поддерживает отображение, которое связывает имена и адреса отправителей с именами и адресами назначения. Любое письмо, которое не соответствует хотя бы одной из записей отправитель/получатель, отбрасывается.

В результате консоли Xbox 360 за Strict NAT могут подключаться только к консолям Xbox 360 за Open NAT. Strict NAT может использовать информацию, сохраненную в сервисе Xbox Live, для прямого подключения к удаленному Xbox 360 через Open NAT, поскольку Open NAT не смотрит на информацию об источнике. Приведенная ниже таблица показывает, какие типы NAT могут подключиться друг к другу.

Источник: thevista.ru

Оставить комментарий

Чтобы оставлять комментарии Вы должны быть авторизованы.

Похожие посты