
Многие в повседневной своей работе/жизни пользуются openssh клиентом и сервером на другом конце. Но далеко не все используют технологию проброса порта для того что б достигать своей цели даже за файерволами и NAT-ами. В этом посте я расскажу о пробросе портов с помощью ssh и возможных вариантов использования данной технологии.
LocalForward
Ситуация:
вы имеете доступ в сеть и на роутер вашей сети. Вы находитесь в подсети 192.168.1.0/24, адрес роутера – 192.168.1.1, ваш адрес – 192.168.1.13. Роутер обсулживает так-же другую подсеть 192.168.5.0/24, в которой находится прокси-сервер по адресу 192.168.5.230, и слушает на порту 3128. Роутер не маршрутизирует пакеты из вашей подсети в подсеть прокси-сервера.
Задача:
получить доступ к прокси-серверу
Решение:
Как вы уже догадались мы будем использовать локальный проброс порта. В результате нашей деятельности при обращении к порту 9999 вашей локальной машины (192.168.1.13) все пакеты будут пробрасываться на 3128 порт сервера 192.168.5.230.
Для этого в терминале делаем следующее:
ssh -L9999:192.168.5.230:3128 192.168.1.1
после авторизации на вашем локальном будет слушаться порт 9999. Проверить можно следующим образом:
root@desktop:/root/# netstat -lnp | grep 9999
tcp 0 0 127.0.0.1:9999 0.0.0.0:* LISTEN 16384/ssh
Теперь немного подробнее о параметрах:
-L – указывает что будем организовывать локальный проброс порта, то есть наш туннель будет открываться на локальной машине, то есть на локальной машине будет слушаться порт
9999 – указывает какой именно порт мы будем открывать локально
192.168.5.230:3128 – указывает на какой хост:порт мы будем пробрасывать туннель, хост который видно с сервера на который мы устанавливаем ssh соединение
В результате наших действий если поставить в браузере прокси сервер 127.0.0.1:9999 мы будем, к примеру, ходить в интернет через прокси-сервер который находится в другой подсети.
RemoteForward
Ситуация:
У вас дома/в офисе есть машина(192.168.1.15), которая ходит в интернет через NAT. Так же у вас есть ssh доступ на какой-либо хост(234.12.34.34) в интернете.
Задача:
Получить доступ на рабочую/домашнюю машину по ssh с любого компьютера в интернете.
Решение:
На рабочей/домашней машине выполняем следующее:
ssh -R2222:localhost:22 234.12.34.34
после авторизации на удаленном хосте (234.12.34.34) откроется порт 2222 на lo интерфейсе.
То есть теперь для того что б зайти на свой рабочий/домашний ПК достаточно зайти на удалённый хост (234.12.34.34) и там локально подключится к ssh который слушает на порту 2222. Вуаля, вы на домашней/рабочей машине.
Примечание: таким-же образом вы можете пробросить туннель на машину в вашей локальной сети, к примеру ssh -R2222:192.168.1.234:22 234.12.34.34
С удовольствием отвечу на все ваши вопросы и выслушаю предложения. Пишите комментарии!

т.е. падает сеть – коннекта нет?