25 мая 2017 г.

Port Forwarding. Доступ к сайту через VPN.

Что такое Port Forwarding (Port mapping)?


Если у вас дома для раздачи интернета используется Router и вы сами делали его настройку, значит наверняка в настройках видели пункт меню Port Forwarding (Port Mapping). Port Forwarding - это технология позволяет минуя NAT настроить доступ из интернета к конкретному компьютеру, находящемуся у вас дома и подключенному к Router. Чаще всего в настройках указываются две вещи:
  1. Имя или IP домашнего компьютера и порт на который будет идти переадресация из вне.
  2. Порт, который будет отрыт на 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 сервера, только в этом случае придётся поискать нужный порт в интернете.
Второй шаг. Скачиваем самую маленькую и удобную утилиту для создания переадресаций с возможность их сохранять. Ссылка блога автора http://www.quantumg.net/portforward.php если ссылка на исполняемый файл не доступна, то можно скачать отсюда: [Download-Port-Forward] использую уже лет 5 и не жалуюсь. Есть масса аналогов, платных, бесплатных работающих как сервисы или же есть варианты штатными средствами без стороннего софта поднять перенаправление. Мне же по душе самому выбирать когда и что я хочу начать перенаправлять, при этом, должна быть возможность легко выключить это. Данная утилита лёгкая (44 кб) и без лишних кнопок делает то, что сказано. Рекомендую.

Для демонстрации я опишу пример:
  • Имя моего локального компьютера sapcomputer и это будет тем компьютером с RDP.
  • В качестве внешней системы я хочу взять доступ к сайту https://worldofwarcraft.com, к которому нет доступа с других компьютеров.
  • Рабочим компьютером к сожалению будет выступать мой же компьютер, я просто подключусь к локальному порту и должен оказаться на сайте.
Приступим! Запускаем утилиту, жмём Redirection >  Add в поле Port указываем локальный порт который будет отрыт для подключения клиентов. Можно указать такой же как и для Destination, но у меня локально 443 занят, вы в праве использовать любой свободный. Далее в поле с адресом указываем worldofwarcraft.com а порт 443 потому, что HTTPS://.



Жмём OK и можно проверять! Открываем браузер вводим https://sapcomputer:9999/ и вуаля, мы видим сайт:


Важно! Если вы перенаправляете на https порт 443 то и при обращении к локальному сайту надо обязательно использовать префикс https, аналогично с http. Иначе вы не сможете увидеть содержимое страницы.
Теперь с рабочего компьютера можно нацеливать разрабатываемый модуль на sapcomputer:9999 и работать, как если бы вы работали на sapcomputer. Просто не так ли?

Комментариев нет:

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