202

Есть много вопросов о «переадресации портов», но, похоже, нет такого, который бы четко указывал, что это такое и для чего он используется. Так:

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

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

1 ответ1

301

Основы

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

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

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

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

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

Детали

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

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

Или думать об этом так

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

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

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

И наконец мы добираемся до переадресации портов

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

  • Faux-DMZ: многие маршрутизаторы имеют функцию под названием DMZ. Это означает Демилитаризованную Зону, которая является своего рода конфигурацией сетевой безопасности. DMZ на домашних маршрутизаторах часто называют faux-DMZ, потому что в ней отсутствуют функции реальной DMZ. То, что он делает, - это самый простой вид обработки входящих соединений: все входящие запросы на соединение будут отправляться на один, указанный в вашей сети. Это очень просто - вы вводите IP-адрес в конфигурацию вашего маршрутизатора, и все входящие соединения идут туда. Это не всегда работает, потому что у вас может быть несколько компьютеров, которые должны принимать входящие соединения. Для этого у нас есть ...
  • Переадресация портов: все запросы на сетевое соединение включают "порт". Порт - это просто число, и это часть того, как компьютер знает, что такое пакет. IANA указала, что порт 80 используется для HTTP. Это означает, что входящий пакет с номером порта 80 должен быть запросом, предназначенным для веб-сервера. Переадресация портов на вашем маршрутизаторе позволяет вам ввести номер порта (или, возможно, диапазон или комбинацию номеров, в зависимости от маршрутизатора) и 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 только сам маршрутизатор уязвим для атак с участием входящих подключений. Это хорошо, потому что маршрутизатор намного проще (и, следовательно, менее подвержен уязвимости), чем компьютер, на котором установлена полная операционная система с большим количеством программного обеспечения. Поэтому вы должны иметь в виду, что, DMZing компьютер внутри вашей сети (устанавливая его в качестве пункта назначения DMZ), вы теряете этот уровень безопасности для этого компьютера: теперь он полностью открыт для входящих подключений из Интернета, поэтому вам нужно закрепите его так, как если бы он был напрямую подключен. Конечно, каждый раз, когда вы пересылаете порт, компьютер на принимающей стороне становится уязвимым на этом конкретном порту. Поэтому убедитесь, что вы используете современное программное обеспечение, которое хорошо настроено.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .