• софт, хард & интERнет

  • Личный опыт укрощения компьютеров

9 марта 2008

Прозрачный ssh туннель

Рубрики: Linux, Интернет, ОС

Внешней доступ к внутренним ресурсам сети у нас на работе возможен только через ssh. В принципе, этого достаточно для проверки почты (POP3/SMTP), пользования веб-интерфейсами (HTTP), удаленного управления компьютером (VNC или Remote Desktop), даже для доступа к репозиторию исходных текстов (CVS). Но неудобно. Поясню в двух словах, как получить доступ через ssh, в чем неудобство подхода и как я его преодолел.

ssh позволяет организовать туннели (ssh tunnel). Туннель связывает локальный порт с портом на компьютере, доступном с ssh сервера. Например, удаленный доступ к http-серверу work.yourdomain.com (порт 80) можно получить следующим образом:

ssh -f -N \
-L 10080:work.yourdomain.com:80 \
sshserver.yourdomain.com

Теперь в браузере http://localhost:10080 приведет на http://work.yourdomain.com.

Туннелей можно определить несколько. В приведенной команде добавятся аналогичные строки с ключом -L.

Теперь о проблемах.

  • Абсолютные ссылки на work.yourdomain.com или другой внутренний адрес работать, очевидно, не будут.
  • Если клиентская программа не позволяет изменить порт, придется занимать локальный порт с тем же номером. Не помню точно, где я этим столкнулся, то ли CVS, то ли RDP. Следовательно, на два разных сервера этим клиентом уже не зайдешь.

Проблема преодолевается с помощью port forwarding: надо задать правило, согласно которому запросы на work.yourdomain.com:80 перенаправляются на localhost:10080. Теперь в браузере можно будет использовать честный адрес - запросы на него перенаправятся на localhost, пройдут через ssh туннель и достигнут цели. При определении правил можно использовать только ip-адреса, поэтому проблему разрешения доменных имен надо решать отдельно, но это совсем просто.

Port forwarding в KUbuntu удобно настраивать через Guidedog (требуется установить одноименный пакет):

Guidedog

Но можно и вручную примерно такой командой (я не проверял):

iptables -t nat -A gforward -p tcp --dport 80 -d 1.2.3.4 -j REDIRECT --to-ports 10080
Опубликовано: Воскресенье, марта 9, 2008 at 03:21.
Лента комментариев: RSS 2.0.
Вы можете оставить комментарий или обратную ссылку со своего сайта.

There are currently 2 responses to “Прозрачный ssh туннель”

Why not let us know what you think by adding your own comment! Your opinion is as valid as anyone elses, so come on... let us know what you think.

  1. 1 On мая 13, 2008, bappoy said:

    Привет, коллега :))
    Проблему с названиями хостов можно решить, прописав в /etc/hosts соответствие
    127.0.0.1 http://www.yourdomain.com

  2. 2 On мая 14, 2008, allex said:

    Этот способ не решает проблему полностью. Если есть более одного хоста с одинаковым портом, то адреса-то их прописать можно, а вот порты останутся разными.

Leave a Reply


Охранная система gsm. берег, монтаж контроля доступа
история техники. Интернет Магазин бытовой техники: Fotomag.com.ua



 

25 queries. 0.876 seconds.