Схемок чего?
Адреса 192.168.0.10, 10.11.12.13 и 10.11.12.14 используемые в примерах входят в диапазон сетей RFC1918, т.е. являются приватными, а следовательно находятся за NAT'ом внутри локальной сети.
Адреса 99.88.77.66 и 88.77.66.55, в свою очередь, в диапазон сетей определённых RFC1918 не входят, следовательно являются примерами хостов в сети Интернет.
Хотя проброс портов конечно-же можно использовать и внутри одного широковещательного домена, просто для обеспечения безопасного соединения (например туннелирование незащищённого VNC внутри ssh-потока).
Самое интересное началось, когда мне понадобилось соединить два компа из-за NAT'ов по VNC :)
VNC-client host: ssh -L 4896:localhost:4897 user@server
VNC-server host: ssh -R 4897:localhost:4899 user@server
, VNC server настраиваем слушать на localhost:4899, VNC client — коннектиться на localhost:4896. Ну, и так далее, до упора можно накидывать узлы.
Да. Спасибо.
Об этом я как-то не сказал, так как подразумевал, что экспериментаторы не перевелись на земле русской :)
Но это правда, вложений портов, так сказать, вглубь может быть много.
Естественно, что при этом придётся учитывать то, что ip-пакеты будут расти в объёме и всё чаще и всё сильнее фрагментироваться, что может в итоге сказаться на производительности в целом.
В принципе, можно ей же и под линуксом делать туннели, бывает проще незнакомому человеку объяснить куда тыкнуть в гуишной программе, чем в консоли, по опыту :)
Очень многие пользователи не могут правильно набрать продиктованный по буквам (причем ни английским, ни латинским) адрес e-mail или www. Но при этом вполне воспринимают на слух слова, которые видят на экране (или на бумаге, не суть) перед собой и в состоянии кликнуть по ним мышкой.
По мне так проще сказать по телефону «нажмите Пуск, а потом Блокнот», чем диктовать (причем после «Нажмите Пуск, а потом Выполнить») «Эн английская, как номер; о; тэ; е русская; пэ английская, как русская эр; а русская; дэ» и то не будучи увереным, что все правильно наберут да еще догадаются нажать Enter.
Вообще я отвечал на конкретный коммент вне контекста статьи или PuTTY (а вообще под виндой предпочитаю Tunnelier для работы по ssh). Если был не прав — извините.
Фонетический алфавит вам в помощи когда GUI нету, или для e-mail или www. Если конечно пользователь поймет о чем вы… На практике в 8 из десяти случаев кнопочками получается лучше и быстрее.
Можно было бы и по-подробнее.
> $ ssh -f -N -R 2222:10.11.12.13:22 username@99.88.77.66
Это где нужно делать?
Что за хост 10.11.12.13? Что за магические числа: 22 и 2222?
> теперь введя на хосте 99.88.77.66:
>
> $ ssh -p2222 localhost
И зачем это? Не проще ли в данном случае устанавливать соединение со стороны 99.88.77.66? Если нет, объясните почему (подозреваю, что NAT или firewall)?
Уж очень сжато. Если вы пытаетесь этой статьёй помочь начинающим, боюсь, не поможете. А остальные, думается мне, и без этой статьи разберутся.
PS. Я-то понял суть, но мне это уже не ново, а вот о новичках можно было б и позаботиться.
> а вот о новичках можно было б и позаботиться
Позволю не согласиться.
Пищи для размышлений тут более чем достаточно.
Это скорее послужит тем-же новичкам как сжатый и лаконичный справочник.
А если хотят изучить теорию — есть man'ы, есть google и т.д.
Если всю пищу новичкам класть готовой в рот — они никогда не научатся готовить. ;)
Хотя… Хотя это лишь моё имхо. Возможно я и не прав. :(
Приватный IP мало о чём не говорит. Хост, с которого «пробрасывается порт», судя по всему, тоже в приватной сети. Не зная топологии сети, можно только догадываться о назначении конкретного IP в данной ситуации.
Всё что я хотел сказать: Коли написана и опубликована данная статья, значит автор хотел кому-то помочь (иначе, лежала бы эта статья на рабочем компе в текстовом файле :) ). Но новичкам таким скудным материалом он не поможет, а не новичкам этот материал не очень нужен. Следовательно, может быть, стоит пересмотреть подход к статье и дать более развёрнутые комментарии к командам и ключам, чтобы новичок «пришёл, увидел, победил» :)
Если кто-то воспринял мой комментарий, как «наезд», прошу прощения. Я не собирался этого делать!
Скажем так, создаётся полноценный интерфейс, для которого, в частности, могут быть применены правила фильтрации iptables, через него может быть смаршрутизирован трафик и прочее, прочее, прочее… Всё зависит только от фантазии :)
Статья полезная. Но, в связи со стилем изложения суть досконально поймут только те, кому эта статья уже не нужна. Я, например, понял процентов 80% — не админ, юниксоид, не бородатый, поэтому какие-то вещи не сходу понятны.
добавлю, пожалуй в мемориз, пригодится.
у кого можно заказать ликбез, по назначению интерфейсу нескольких адресов(без алиасов — eth1:1...), и последующей работой в iptables(он с алиасами не дружит))?
ssh туннель — это половина магии. Вторая половина — сделать этот туннель невидимым.
Я решал такую задачу: на работе есть сервер, например, cvs.office.com, нужен доступ, допустим, к CVS (порт 2401). Сервер, естественно, снаружи не виден, на него можно попасть только через gate.office.com, к которому есть ssh доступ. Необходимо обеспечить доступ к cvs.office.com:2401 с ноутбука, который может подключаться из офиса и из дома без необходимости что-либо перенастраивать на ноутбуке. Дома есть роутер (192.168.0.1) с линукс.
Во-первых, делаем туннель с роутера с авторизацией по ключу:
Туннель поддерживается не через cron, а с помощью autossh, который уже упоминался в предыдущих комментариях. На мой взгляд, использование autossh более явно выражает намерения :)
А теперь самое интересное — ноутбук, подключенный из дома, должен как и из офиса идти на cvs.office.com:2401
Его запрос перехватит роутер и направит его в туннель:
Автор, срочно изучите опцию SSH ProxyCommand. Можно найти поиском
То, что Вы тут описали, достойно только человека, сидящего в линуксе меньше полугода и впервые увидевшего ман по SSH.
Поддержу прямоходящих. Можно вылить тонны аргументов, но для новичков — статья малозначима, т.к. слишком много на «дожевать» оставлено. Для остальных — бесполезна, т.к. легко заменима 5мин man ssh.
>Тут важно понимать, что туннель можно организовать как изнутри сети, к ресурсам которой вы хотите получить доступ, на внешний ssh-сервер. Также можно организовать туннель с хоста в Интернете на пограничный ssh-сервер сети, чтобы получить доступ к внутренним ресурсам.
Раз пять перечитал, но не понял можно ли организовать тоннель, чтобы исходящий трафик с публичного хоста (есть root-доступ) пускай на локальный порт этого же хоста (а в идеале на произвольный порт произвольного публичного хоста) транслировался на порт удаленного приватного (за провайдерским NAT) хоста (root тоже есть). Как написать программу (а точнее две) на Си я представляю, но можно ли не изобретать велосипед и воспользоваться ssh?
А вообще согласен с многими комментаторами выше, что пост либо излишне лаконичен, либо излишне избыточен. Пользу принесёт, имхо, только тем, кто и не подозревал о существовании такой возможности — теперь они о ней узнают :)
Во-во, у меня так и получилось понять, что и как мне делать. Я понял, что каким-то макаром сделать кое-что можно, но как — ни фига не понял.
Если конкретно мне надо следующее: с моего компа, который ходит в инет через роутер (который имеет внешний IP), получить доступ до компа тёщи, который за натом. Нат провайдеровский, т.е. на нём ничего пробросить не получится. У мебя на роутере порт проброшен, т.е. снаружи на мой комп зайти можно. Задача: зайти на комп тёщи. Реально такое? Это как раз то, что описано в топике или нет? :)
При такой схеме получается, что тещин комп как бы слушает 2222 порт на моем компе, но слушает его чисто средствами ssh, я правильно понял? А можно как нибудь заставить тещин комп слушать произвольный (например 80) по произвольному протоколу (например http)?
Посмотреть в браузере?
Пробросить вместо/вместе с 22-м портом ещё и 80-й.
ssh -f -N -R 8080:10.11.12.13:80 -p xxxx username@99.88.77.66
теперь если на 99.88.77.66 в браузере ввести localhost:8080 то увидим ресурсы которые висят на 10.11.12.13 внутри сети. Значительный минус этого подхода если на 10.11.12.13 настроен в веб-сервере виртуалхост, ведь обращение к серверу идёт по ip, а не по мнемоническому имени.
Может кто знает как это можно обойти?
> нужно чтобы или localhost можно было задать как прокси в настройках броузера
тогда нужно на 10.11.12.13 поднять какой-нибудь проксик и уже адресоваться на него через localhost
> чтобы была доступна вся интрасеть доступная узлу 10.11.12.13
ну а в этом случае просто поднять ssh layer 3, о чём можно почитать в соседнем топике.
Помогите, пожалуйста, реализовать такую схему. Есть купленный сервер, к которому алиасами прописано несколько IP. Задача в том, чтобы с домашней машины посмотреть в сеть (мир), через один из алиасных IP.
SSH-туннели — пробрасываем порт