Назад | Перейти на главную страницу

Туннелирование через HTTP

У меня есть рабочая сеть, которая заблокирована брандмауэром, а подключение к Интернету доступно только с использованием прокси-сервера. На работе я могу подключаться к базам данных, которые распределены по сети.

Однако дома я не могу подключиться к прокси-серверу или базам данных.

Как это может быть сделано? Я могу получить доступ к своей рабочей станции через LogMeIn, поэтому я могу установить на нее что угодно.

Подумал установить на своей рабочей станции какой-то механизм туннелирования. Затем, дома, я мог бы подключиться к этому механизму, который, в свою очередь, обеспечил бы необходимые подключения.

По сути, то, что я хотел бы сделать, можно представить в виде следующей диаграммы: Home => Workstation => Database. Например, всякий раз, когда я подключаюсь, скажем, к 10.140.0.1:1234 дома, он будет перенаправлен на 10.140.0.1:1234 моей рабочей станции, потому что 10.140.0.1:1234 доступен только через корпоративную сеть.

Примечание: я использую Windows XP.

Если вы можете установить OpenSSH на свою рабочую станцию ​​(скажем, с Cygwinс openssh package) вы можете использовать помощник по прокси с именем corkscrew чтобы позволить клиенту OpenSSH туннелировать через прокси. Cygwin имеет corkscrew пакет, поэтому его удобно использовать, если у вас уже установлен Cygwin. Прочтите corkscrew справочную страницу с инструкциями по настройке (я считаю, что это простое однострочное дополнение к /etc/ssh_config).

Затем вам нужно сделать свой домашний компьютер жизнеспособной конечной точкой для клиентских подключений ssh ​​с рабочей станции, и для этого вам необходимо запустить демон sshd. Опять же, Cygwin - одно из мест, где это можно получить: установите openssh пакет, а затем запустите ssh-host-config скрипт для создания службы sshd. Примите ответы по умолчанию на каждый вопрос сценария конфигурации.

Поскольку ваш домашний компьютер находится за NAT-маршрутизатором (верно?), Перенаправьте TCP-порт 22 на ваш компьютер и добавьте этот порт в качестве исключения для брандмауэра вашего ПК. Это угроза безопасности, поэтому примите соответствующие меры предосторожности (оставлено как упражнение).

Наконец, чтобы создать туннель для передачи подключений к корпоративной базе данных с домашнего ПК: Войдите на свою рабочую станцию ​​(через LogMeIn) и откройте туннель обратно на домашний ПК, как показано ниже (в оболочке Cygwin bash):

ssh -N -R 1234:10.140.0.1:1234 username@xxx.xxx.xxx.xxx

где username - это имя пользователя для подключения к вашему sshd-серверу, и xxx.xxx.xxx.xxx это реальный маршрутизируемый IP-адрес вашего домашнего маршрутизатора. Любые связи, которые вы устанавливаете с localhost:1234 на вашем домашнем ПК будет перенаправлен через туннель на 10.140.0.1:1234, и, таким образом, будет казаться, что корпоративная база данных прослушивает TCP-порт 1234 вашего домашнего ПК. Когда вы закончите, вы можете закрыть туннель, отключив ssh на вашей рабочей станции с помощью Ctrl-C.