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


Есть много вопросов о 'Перенаправление порта' но, похоже, не существует того, что четко указывает, что это такое и для чего оно используется. Так:

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

  2. Для чего он нужен, и зачем мне это нужно?


191


происхождения


Я думаю, что это достаточно хорошо: portforward.com/help/portforwarding.htm - Koray Tugay


ответы:


Основы

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

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

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

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

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

Детали

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

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

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

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

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

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

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

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

  • 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 запросов на этот аппарат. Используя переадресацию портов, обе машины могут работать в одной и той же сети одновременно.

Port Forwarding Example

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

Примечание о безопасности

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


282



+1. Большое вам спасибо за такой замечательный короткий курс. С Уважением, - Xavierjazz
Теперь добавим графику! - slhck
Хорошая графика. Хорошая работа, slhck. - jcrawfordor
Вы кратко упомянули об этом, но вы можете указать на важность использования портов для пересылки портов в стиле DMZ. Я не могу придумать ни одного экземпляра, где было бы хорошей идеей в рамках производственной среды выставить что-то вроде сервера sql (или что-то еще) для внешнего мира. Переадресация портов может обеспечить доступ к защищенным ресурсам без серьезного ущерба безопасности. - Brian Vandenberg
Одна деталь, которая не расширена в разделе NAT, заключается в том, что если компьютеры в вашей сети используют DHCP для получения своих внутренних немаршрутизируемых частных IP-адресов, возможно, что один из них будет изменен, и если это произойдет, то переадресация порта будет перепутаться. Лучше избегать этого, настраивая сетевую адресацию каждого компьютера вручную. portforward.com подчеркивает важность этого и имеет руководство, описывающее, как настроить статический IP-адрес в системе, однако они не упоминают о необходимости также настроить DHCP маршрутизатора, чтобы избежать этих теперь зарезервированных NAT-адресов. - martineau