У меня есть рабочая сеть, которая заблокирована брандмауэром, а подключение к Интернету доступно только с использованием прокси-сервера. На работе я могу подключаться к базам данных, которые распределены по сети.
Однако дома я не могу подключиться к прокси-серверу или базам данных.
Как это может быть сделано? Я могу получить доступ к своей рабочей станции через 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.