Дано: Бурная фантазия ... =)
Решение:
Задача оказалось вроде даже как из легких – та ... но были свои нюансы ...
Первым делом пришло на "ум" мысля: а не загнуть ли wget, curl или fetch через SOCKS5, аля есть сервер за пределами Интранета и порт 22 открыт (если и закрыт, то практически всегда остается 443 порт открытым, вам только на своем сервере демона SSH завесить нужно будет на 443 порт, предварительно убрав с него апач или кто там у вас его может занимать,
netstat -lanp | grep -e "443.*LISTEN"
вполне возможно что последние деяние рутовые привилегии захочет ... да в любом случае стягивать с данного порта кого либо понадобятся рутовые привилегии ), аля: ssh -T my.remotehost.net -D port &
Да не все та тут было легко и просто, погуглив просторы тырнету, пролистав маны особогу решения та и не нашлось, как завернуть трафик в данный сокс та. Были идеи связок varnish && tsocks ... толи с непривычки испугала сложность самого решения то ли душа капризничала требуя решения проще - знакомым инструментарием ...
Одним словом от сокса (SOCKS5) пришлось отказаться ...
вторым вариантом рассматривалось проброс портов, аля всё тем же клиентом ssh'a, но реализация сия идеи сама по себе приводила в дикий ужас не только меня, на каждый хост отдельно прицеливаться ..: "ssh -T my.remotehost.net -L port:dist_host:21 &" … мда … не наше это … не наше. А так с каждым запрашиваемым хостом! Засада тут полная =)
Как еще? да проще простого, благо стоял сквид (SQUID) на удаленке, вопрос решился весьма приятно и менее болезненно по правкам конфигов ...
**) обратите внимание какие интерфейсы листит squid, в конфиге или по netstat'у, дальше по контексту в пункте 4 будет назван как dist_host
1) лезем на удаленке в кофиг сквида и разрешаем ему ftp поток,
acl FTP proto FTP always_direct allow FTP
2) Могут уже быть, но на всякий непредвиденный случай:
modprobe ip_conntrack_ftp modprobe ip_nat_ftp
3) рестартуем сквид:
/etc/init.d/squid restart
4) аля пробрасываем порт:
ssh -T my.remotehost.net -L 3128:dist_host:3128 &
тут маленькое примечание ... при дисконнекте кранты всей связке, придется заново запускать ssh туннель. Поэтому, можно зациклить в вечном цикле по "while [ 1 ]...etc" и вынести в rc.local для автоматического подъема при запусках с записью в логи и прочее... Мне же хватило вышеуказанной строчки =) так как острой нужды в скачке с ФТП серверов не наблюдалось, да и более человечнее можно всё это делать когда есть удаленные хосты ;)
5) на локальной машине с рутовскими привилегиями дописываем файлик make.conf
echo "FETCH_ENV= FTP_PROXY=http://127.0.0.1:3128/" >> /etc/make.conf
вот и всё ...
оффтоп: далее бежим пока туннель живой в порты и make make make))))
если что то пошло не так:
1) смотрим фаерволы что на удаленке, что на вашей машине…
2) помним что есть незаменимый помошник tcpdump …
PS// хотя можно просто подойти к администратору и сказать что есть нужда в сия протоколе для скачивания нужных тебе сырцов, и если грамотно всё обосновать, каков суров бы не был Ваш администратор, он пойдет на уступки, 100% факт проверен! следом после реализации сия незамысловатой схемы =))
Коллега подсказал мне что есть такая замечательная программулька как Proxifier (хотя их в своем роде и более чем достаточно, гугл помогёт)
ОтветитьУдалитьтак вот фишка в том что родные штатные виндовые проги консольные не поддались данной уловке, а уловка заключалась в следующем:
========================================
1) plink -pw YourPasswordSSHServer -D 1080 -N -A IPSSHServer
2) Настраиваем Proxifier на работу с 127.0.0.1 порт 1080
3) юзаем opera, firefox, chrome, etc... вопросов не возникает, рулится через Proxifier.
4) а вот telnet, ftp (штатный виндовый ftp клиент), wget (не штатный и более того был перенесенный в чужеродную среду =) ), etc ... идут лесом =(
========================================
Замечание 1. Вполне возможно что резольв будет отрабатываться на стороне серверов указанных при получении конфигурации по DHCP, иными словами куда и что вы полезли увидеть возможно. /не проверял/ Лучше ручками подправить у кого резольвить имена =)
Замечание 2. ФТП клиент и не обязательно юзать штатный виндовый, встроенные в браузеры выше упомянутые прекрасно справились с данной задачей. (возможно грабли в прослойке библиотеке виндовой ...)
Итак, подсказка коллеги по работе - есть еще одно решение данной задачи, более того через SOCKS5 и с минимальными усилиями.