Возможно, вы знаете этот сценарий:

Нам бы очень хотелось отладить веб-приложение на реальном телефоне, но они не позволяют настроить Wi-Fi в наших корпорациях ...

Если вы это сделаете, следите за обновлениями, потому что в этом сообщении в блоге мы рассмотрим, как мы, разработчики, можем обрабатывать надежно защищенные сети Wi-Fi и при этом получать все необходимые возможности для подключения.

Мы начнем с изучения подробного реального сценария, а затем исследуем решение с использованием точек доступа и прокси на основе Go.

Образцовая ситуация

Недавно мы разрабатывали гибридное веб-приложение на базе Конденсатора. Чтобы действительно отладить это, вы запускаете веб-сервер на своем ноутбуке и подключаете свой телефон через Wi-Fi. Единственная беда: в наших корпорациях телефоны Wi-Fi изолируются из соображений безопасности.

Телефоны изолированы по соображениям безопасности!

К счастью, проблему изоляции довольно легко решить, подключив ноутбук к Интернету через Ethernet и используя ноутбук WiFi для открытия точки доступа. Просто убедитесь, что это надежный пароль!

К сожалению, это отключило наши ноутбуки от внутренних сетей, к которым нам пришлось снова подключиться, подключив наши ноутбуки к корпоративным VPN (да, Ethernet выходил только в общедоступный Интернет). Хотя точка доступа передает интернет-соединение на телефон, она не делает того же волшебства с VPN-соединением. Итак, как нам теперь получить это соединение с нашими телефонами?

Нам нужна внутренняя сеть, потому что телефон должен подключаться к развернутой тестовой серверной части, доступной во внутренней сети компании, к которой наши ноутбуки подключаются с помощью VPN.

Прокси на помощь

Передача трафика в сети - это то, с чем мы, как веб-разработчики, знакомы. Часто вам нужен NGINX для передачи запросов от URL-адреса входа в нужную внутреннюю службу, работающую на другом компьютере (или для докеризации веб-приложения). Это называется прокси.

Как уже упоминалось, мы можем установить NGINX или аналогичный на наших ноутбуках и использовать его в качестве прокси. И это действительно работает. Однако это затрудняет проверку решения в системе контроля версий. Лучшая поддерживаемая версия - написать простой прокси на выбранном вами языке. Выбираем Go.

Это весь код, который вам нужен для запуска go run proxy.go и запуска прокси на вашем компьютере.

Теперь на вашем телефоне вам нужно указать ему, чтобы он не только подключался к точке доступа вашего ноутбука, но также использовал прокси-сервер. Для этого вам, вероятно, понадобится IP-адрес вашего ноутбука в точке доступа (он, скорее всего, всегда будет назначать себе один и тот же), а также порт (здесь: 9090) для его настройки.

Теперь вы готовы, наконец, приступить к разработке на своем телефоне.

Заключение

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

А теперь иди и сделай что-нибудь классное ✨

Отражение

Здесь возникает один очевидный вопрос: это хорошая идея ??!?

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

Любые комментарии и идеи по поводу лучших решений приветствуются и ценятся.