Что такое Port Forwarding (Port mapping)?
Если у вас дома для раздачи интернета используется Router и вы сами делали его настройку, значит наверняка в настройках видели пункт меню Port Forwarding (Port Mapping). Port Forwarding - это технология позволяет минуя NAT настроить доступ из интернета к конкретному компьютеру, находящемуся у вас дома и подключенному к Router. Чаще всего в настройках указываются две вещи:
- Имя или IP домашнего компьютера и порт на который будет идти переадресация из вне.
- Порт, который будет отрыт на Router со стороны интернета.
20.1.1.1 - IP адрес вас в интернете выданный интернет провайдером. Если из интернета подключаются к 80 порту на Router, то происходит перенаправление трафика на стационарный компьютер, а при обращении к 8080 на ноутбук.
Как это поможет разработчику?
Представьте, что у вас есть задача интеграции с какой то системой в сети заказчика. Вам дают VPN и тестовый компьютер с которого эта система доступна, при этом у пользователей VPN напрямую доступа к системе нет. Через RDP вы подключаетесь к компьютеру и понимаете, что для того, что бы начать разработку вам требуется устанавливать Visual Studio.
Что же можно в этом случае сделать?
Мы можем в качестве Router использовать компьютер до которого есть RDP доступ. На нём запустить программу, которая будет перенаправлять входящий трафик в систему заказчика, что даст нам возможность локально работать над интеграцией.
Сложно? Нет - проще паренной репы! А как это сделать объясню дальше.
Настройка Port Forwarding.
Первый шаг. Узнаем IP или Hostname системы (что заказчик конечно же скажет) с которой нам надо интегрироваться. Далее нам необходимо узнать порт, через который планируется взаимодействовать с системой. Если у вас возникает проблема с определением порта, попробую привести типовые ситуации и объяснить как я узнал в них порт.
- Если у вас взаимодействие с каким то вэб сервисом и заказчик дал URL формата http://host/service это значит, что вэб сервис работает по HTTP протоколу и порт по умолчанию 80.
- Если адрес https://host/service значит с системой придётся взаимодействовать по HTTPS порту и его значение по умолчанию 443.
- Если в адресе URL после host стоит двоеточие число: http(s)://host:8001/service значит используется нестандартный порт для HTTP(S) протокола и нам потребуется просто в явном виде указать его, в моём случае это 8001.
- Такое же перенаправление можно настроить для чего угодно, даже для SQL сервера, только в этом случае придётся поискать нужный порт в интернете.
Для демонстрации я опишу пример:
- Имя моего локального компьютера sapcomputer и это будет тем компьютером с RDP.
- В качестве внешней системы я хочу взять доступ к сайту https://worldofwarcraft.com, к которому нет доступа с других компьютеров.
- Рабочим компьютером к сожалению будет выступать мой же компьютер, я просто подключусь к локальному порту и должен оказаться на сайте.
Жмём OK и можно проверять! Открываем браузер вводим https://sapcomputer:9999/ и вуаля, мы видим сайт:
Важно! Если вы перенаправляете на https порт 443 то и при обращении к локальному сайту надо обязательно использовать префикс https, аналогично с http. Иначе вы не сможете увидеть содержимое страницы.Теперь с рабочего компьютера можно нацеливать разрабатываемый модуль на sapcomputer:9999 и работать, как если бы вы работали на sapcomputer. Просто не так ли?