2011-05-16 04:00:37 +0000 2011-05-16 04:00:37 +0000
219
219

Что такое переадресация портов и для чего она используется?

На ‘port forwarding’ много вопросов, но, похоже, что нет такого, который бы четко указывал, что это такое и для чего оно используется. Итак:

  1. Что такое переадресация портов?

  2. Для чего он используется и зачем он мне нужен?

Ответы (1)

324
324
324
2011-05-16 04:35:44 +0000

The Basics

Чтобы по-настоящему объяснить переадресацию портов, сначала нужно немного больше понять о том, что делает ваш маршрутизатор . Ваш интернет-провайдер присваивает один IP-адрес вашему интернет-соединению. Всем компьютерам в Интернете нужен уникальный IP-адрес, но в вашем доме есть несколько компьютеров и только один адрес. Так как же это работает?

Если вы знаете, что это такое и просто хотите знать, как это сделать : http://portforward.com/ умеет делать скриншоты буквально для сотен различных маршрутизаторов. Документация скрыта за рекламной страницей их автоматического инструмента portconfig. (Просто щелкните немного вокруг, и вы найдете ее.)

NAT - Что это? Почему мы его используем?

Ваш домашний маршрутизатор имеет встроенную функцию под названием Трансляция сетевых адресов, или NAT. Внутри вашей сети компьютеры имеют адреса 192.168.1.100. Все адреса в диапазоне 192.168.* (или в диапазоне 10.*) составляют _ частные “_ или _ зарезервированные ”_ адреса. Эти адреса официально назначены IANA для использования внутри частных сетей. Ваш маршрутизатор автоматически назначает такой адрес каждому компьютеру, подключенному через DHCP . Эти адреса позволяют компьютерам в вашей сети взаимодействовать с маршрутизатором и друг с другом.

Ваш маршрутизатор имеет отдельный сетевой интерфейс, который соединяет его с Интернетом. Этот интерфейс имеет совершенно другой адрес, который назначается вашим интернет-провайдером. Это единственный адрес, который я упоминал ранее, и ваш маршрутизатор использует его для связи с другими компьютерами в Интернете. Компьютеры внутри вашей сети имеют non-routable частные IP-адреса, что означает, что если они посылают пакеты непосредственно в Интернет, то пакеты будут автоматически отбрасываться (пакеты с частными адресами не могут пересекать Интернет из соображений стабильности). Но ваш маршрутизатор имеет адрес routable. Перевод сетевых адресов, как следует из названия, translates между этими двумя типами адресов, позволяя нескольким компьютерам внутри вашей сети выглядеть в Интернет как один компьютер с одним адресом.

Подробности

Хотя это может показаться сложным, на самом деле это довольно просто, как ваш маршрутизатор делает это. Каждый раз, когда компьютер в вашей сети хочет подключиться к компьютеру в Интернет, он посылает запрос на подключение к маршрутизатору (он знает, что нужно посылать его на маршрутизатор, потому что его параметр Default Gateway установлен на адрес маршрутизатора). Затем маршрутизатор принимает этот запрос на соединение (“SYN-запрос” в TCP/IP), изменяет адрес источника (“ответ на” или обратный адрес) и меняет его с личного IP компьютера на публичный IP маршрутизатора, так что ответ будет отправлен на маршрутизатор. Затем он отмечает в базе данных (называется NAT table), что соединение было инициировано, так что он запомнит его позже.

Когда ответ возвращается с удаленного компьютера (“SYN-ACK”), маршрутизатор смотрит в свою NAT-таблицу и видит, что соединение с этим хостом на этом порту ранее было инициировано частным компьютером в вашей сети, изменяет адрес назначения на частный адрес компьютера, и перенаправляет его внутри вашей сети. Таким образом, пакеты могут продолжать перемещаться туда и обратно между сетями, при этом маршрутизатор прозрачно изменяет адреса так, чтобы он работал. Когда соединение прерывается, маршрутизатор просто удаляет его из NAT-таблицы.

Или подумайте об этом так

Это может быть немного проще визуализировать с помощью метафоры - допустим, вы экспедитор в США, работающий с китайскими клиентами. Им нужно отправлять пакеты многим клиентам в США, но для таможенных/бухгалтерских целей проще отправлять пакеты только в одно место. Таким образом, пакет приходит к Вам от одного из Ваших клиентов в Китае (частная сеть, в данном примере) с фактическим местом назначения где-то в США (Интернет). Вы меняете адресный ярлык на коробке на американский (общественный) адрес, и вы меняете обратный адрес на свой собственный общественный адрес (так как он не может быть возвращен прямо в Китай без причинения неудобств клиенту) и передаете его в почтовую службу. Если покупатель возвращает товар, он приходит к вам. Вы просматриваете его в своих записях и видите, из какой компании в Китае он пришел, и меняете место назначения на эту компанию (ее личный адрес) и обратный адрес на ваш личный адрес, так что они могут отправить обратно замену через вас.

Это работает отлично, но есть небольшая проблема. Что если клиенту нужно отправить что-то в компанию, скажем, денежный перевод в оплату чего-то? Или, скажем, компьютер в интернете инициирует соединение с маршрутизатором (SYN-запрос), скажем, с веб-сервером, который находится в сети. На письме/пакете указан только публичный адрес маршрутизатора, поэтому маршрутизатор на самом деле не знает, куда его отправить! он может быть предназначен для любого из компьютеров на частном в сети, или ни для кого из них. Вы могли столкнуться с этой проблемой, когда звоните на чей-то домашний телефон - когда они звонят вам, это не проблема, но когда вы звоните им, они никак не могут узнать, кому звонят, так что не тот человек может ответить.

Хотя людям достаточно просто разобраться с этим, для компьютеров это гораздо сложнее, потому что не каждый компьютер в вашей сети знает все остальные компьютеры.

И, наконец, мы добрались до Port Forwarding

Port Forwarding - вот как мы исправим эту проблему: это способ сказать вашему маршрутизатору, на какой компьютер внутри сети должны быть направлены входящие соединения. У нас есть три различных способа сделать это:

  • Faux-DMZ: многие маршрутизаторы имеют функцию под названием DMZ. Это означает Демилитаризированную Зону (Demilitarized Zone), которая является своего рода конфигурацией сетевой безопасности. DMZ на домашних маршрутизаторах часто называют ненастоящей зоной DMZ, потому что в ней отсутствуют функции фактической DMZ. То, что она делает, является самым простым видом обработки входящих соединений: все входящие запросы на соединение будут отправляться на тот, который указан внутри вашей сети. Это очень просто - вы вводите IP-адрес в конфигурацию вашего маршрутизатора, и все входящие соединения идут туда. Но это не всегда срабатывает, потому что у вас может быть несколько компьютеров, которым нужно принимать входящие соединения. Для этого у нас есть…
  • Переадресация портов : Все запросы на сетевое подключение включают “порт”. Порт - это всего лишь число, и это часть того, как компьютер узнает, что это за пакет. IANA уточнила, что порт 80 используется для HTTP. Это означает, что входящий пакет с указанием номера порта 80 должен быть запросом, предназначенным для web-сервера. Переадресация портов на вашем маршрутизаторе позволяет вам ввести номер порта (или, возможно, диапазон или комбинацию цифр, в зависимости от маршрутизатора), и IP-адрес. Все входящие соединения с соответствующим номером порта будут переадресовываться на внутренний компьютер с этим адресом.
  • UPnP-порт переадресации : Переадресация UPnP работает точно так же, как и переадресация портов, но вместо того, чтобы ее настраивать, программное обеспечение на компьютере внутри сети автоматически настраивает маршрутизатор на переадресацию трафика на данный порт.

Пример

Рассмотрим пример использования. Многие многопользовательские видеоигры (например, Counter Strike) позволяют запустить на компьютере игровой сервер, к которому другие люди могут подключиться, чтобы поиграть с вами. Ваш компьютер не знает всех людей, которые хотят играть, поэтому он не может подключиться к ним - вместо этого, они должны посылать новые запросы на подключение к вашему компьютеру из Интернета.

Если бы у вас не было ничего настроенного на маршрутизаторе, он бы получал эти запросы на подключение, но он бы не знал, на каком компьютере в сети есть игровой сервер, поэтому он бы просто игнорировал их (или, более конкретно, он бы отправил обратно пакет, указывающий, что он не может подключиться). К счастью, вы знаете номер порта, который будет на запросы подключения для игрового сервера. Итак, на маршрутизаторе вы устанавливаете переадресацию портов с номером порта, который ожидает игровой сервер (например, 27015) и IP-адрес компьютера с игровым сервером (например, 192.168.1.105). Маршрутизатор будет знать, чтобы переадресовать входящие запросы на соединение на 192.168.1.105 внутри сети, а компьютеры снаружи смогут подключиться внутри.

Другим примером будет локальная сеть с двумя машинами, где на второй с IP 192.168.1.10 размещается сайт, использующий Apache. Поэтому маршрутизатор должен перенаправлять входящие запросы на порт 80 на эту машину. Используя переадресацию портов, обе машины могут одновременно работать в одной сети.

Видеоигры, пожалуй, являются самым распространенным местом, где обычные пользователи будут сталкиваться с переадресацией портов, хотя большинство современных игр используют UPnP, так что вам не придется делать это вручную (вместо этого, это полностью автоматический режим). Вам придется делать это всякий раз, когда вы захотите иметь возможность подключиться напрямую к чему-либо в вашей сети (а не через какого-нибудь посредника в интернете). Это может включать в себя запуск вашего собственного веб-сервера или подключение через протокол удаленного рабочего стола к одному из ваших компьютеров.

Заметка о безопасности

Одна из приятных вещей в NAT - это то, что она обеспечивает некоторую не требующую усилий, встроенную безопасность. Многие люди бродят по Интернету в поисках уязвимых машин… и они делают это, пытаясь открыть соединения с различными портами. Это входящие соединения, поэтому, как обсуждалось выше, маршрутизатор их обрывает. Это означает, что в конфигурации NAT только сам маршрутизатор уязвим для атак, связанных с входящими соединениями. Это хорошо, потому что маршрутизатор гораздо проще (и, следовательно, менее уязвим), чем компьютер, работающий под управлением полной операционной системы с большим количеством программного обеспечения. Тогда вы должны помнить, что при демилитаризованной зоне (DMZ) компьютера внутри вашей сети (установив его в качестве места назначения DMZ) вы теряете тот уровень безопасности для этого компьютера: этотеперь полностью открыт для входящих соединений из интернета, поэтому вам нужно обезопасить его так, как если бы он был подключен напрямую. Конечно, каждый раз, когда вы переадресуете порт, компьютер на принимающей стороне становится уязвимым в этом конкретном порту. Поэтому убедитесь, что вы используете современное программное обеспечение, которое хорошо настроено.

Похожие вопросы

10
19
13
5
6