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.
Комментариев нет:
Отправить комментарий