Дата поста: 21-01-2018
Эта статья поможет тем, у кого закрыты различные сайты из-за корпоративной политики безопасности. В данном посте будут рассмотрены несколько наиболее удачных вариантов решения проблемы с доступом к сайтам и сервисам. И так начнём!
Первый вариант использования
Первым делом заходим на сервер к которому у Вас есть доступ.
C помощью программы PuTTY (скачать отсюда).
Проверяем что у этого сервера есть доступ к сайтам командой lynx http://vkontakte.ru
либо wget http://vkontakte.ru
Если все прошло удачно, то переходим к началу настройки.
- Открываем сессию в PuTTY с дополниельными параметрами.
- Вводим дополнительные параметры для туннеля:
- Сохраним настройки:
- Входим на наш сервер к которому мы настроили путти:
5. Настраиваем браузер (на примере Mozilla Firefox):
- Получаем полный интернет:
7. Бонус: Для тех кто хочет поделиться интернетом с друзьями находящимися в одной сети — существует галочка:
(Друзьям же надо у себя на компе в настройках браузера выставлять IP-адрес того человека который расшаривает интернет (вместо 127.0.0.1
). Смотри пункт 5.
В дополнение к вопросу о настройке Skype через тунель. Все это работает и для него. Только нужно иметь ввиду что скайп надо перезагрузить, т.е. Выход, а потом запустить заново. Кстати он сам об этом говорит:
это в ответ на настройки:
Второй вариант использования
1. Локальный проброс порта
Рассмотрим следующую ситуацию. Мы находимся внутри корпоративной сети, у нашего компьютера адрес 192.168.0.2
, доступ во внешний мир полностью закрыт (то есть никакого NAT-а, proxy и т.п.). Влиять на политику ограничения доступа у нас возможности нет, но зато есть SSH-доступ на один из серверов с маршрутизируемым IP-адресом, который доступен из Интернет. Внутренний адрес этого сервера, пусть будет для примера 192.168.0.3
. Структура сети изображена на рисунке:
Предположим, что нам очень нужно подключиться, к примеру, по SSH на некоторый удалённый сервер с IP-адресом 212.212.212.212
где-то далеко в Интернет. Для этого запускаем PuTTY, создаём SSH-подключение к серверу 192.168.0.3
(далее по тексту SSH-сессия 1), идем в пункт Tunnels:
и указываем, что локальный порт 2222 нашего компьютера должен быть поставлен в соответствие порту 22 на сервере с IP-адресом 212.212.212.212
. Далее жмем кнопку «Open», авторизуемся на сервере 192.168.0.3
. Затем создаём ещё одно подключение (далее по тексту SSH-сессия 2), но уже на localhost, порт 2222 и жмём кнопку «Open»:
В результате SSH-сессия 2 будет туннелироваться (т.е. будет установлена внутри ранее установленной SSH-сессии 1). Для удалённого сервера 212.212.212.212
всё будет выглядеть так, как будто к нему подключается 111.111.111.111
:
2. Удалённый проброс порта
В этом случае подключение внутри SSH-туннеля устанавливается в другую сторону – от удаленного сервера на наш локальный компьютер. Может быть полезно, если требуется открыть доступ к локальным сервисам нашего компьютера. Рассмотрим ту же сеть, что и в пункте 1, но для простоты предположим, что теперь у нас есть NAT:
Здесь уже у нас есть возможность подключаться через SSH напрямую к 212.212.212.212
благодаря наличию NAT-а. А вот 212.212.212.212
подключиться на 192.168.0.2
без специальных ухищрений, понятное дело, не сможет, т.к. 192.168.0.2
не подключен к Интернет непосредственно. Предположим, что пользователю, сидящему под X-ами на 212.212.212.212
нужно через remote desktop попасть на наш компьютер 192.168.0.2
. Для этого в SSH-сеансе подключения с 192.168.0.2
на 212.212.212.212
нужно изменить настройки в разделе Tunnels следующим образом:
В результате после успешной авторизации на 212.212.212.212
можно увидеть следующее:
#lsof -i -nP | grep 3333
sshd 18598 avz 11u IPv4 592868957 TCP 127.0.0.1:3333 (LISTEN)
То есть sshd ожидает подключений на TCP-порт 3333, которые затем по SSH-туннелю будут перенаправлены на 192.168.0.2
порт 3389. И юзер сидящий за 212.212.212.212
сможет с помощью rdesktop увидеть наш рабочий стол:
3. Socks-proxy
В этом случае мы можем использовать сервер с SSH-демоном как промежуточный (proxy). Схема сети как в случае #1 (без NAT и штатных прокси):
Чтобы заставить PuTTY испольнять роль socks-прокси, нужно параметры SSH-сессии с 192.168.0.2
на 192.168.0.3
изменить следующим образом:
В результате после успешной авторизации со стороны клиента можно будет наблюдать следующее:
C:\>netstat -ano | find "1080";
TCP 127.0.0.1:1080 0.0.0.0:0 LISTENING 2392
C:\>tasklist | find /i "2392";
putty.exe 2392 Console 0 5420 КБ
То есть putty, выполняющийся с PID-ом 2392, начинает слушать порт 1080, ожидая подключений. Далее берем любое приложение, умеющее работать с SOCKS-прокси, например Firefox, и указываем ему использовать наш прокси:
Теперь все запросы от браузера будут проходить через сервер 192.168.0.3
. В логах веб-сайтов, по которым мы таким образом будем ходить, будет отображаться внешний IP-адрес нашего сервера — 111.111.111.111
.
P.S. Из help-файла Putty 0.58:
Question A.10.3: What does ‘PuTTY’ mean?
It’s the name of a popular SSH and Telnet client. Any other meaning is in the eye of the beholder. It’s been rumoured that ‘PuTTY’ is the antonym of ‘getty’, or that it’s the stuff that makes your Windows useful… 🙂