Набросы. Лента стримера и потолочный вентилятор.

Уже давно для бекапов использую обычные харды на удаленных серверах, но когда то давно, до меня, был одмин которых хотел чувствовать себя  властителем «энтерпрайз-класса инфраструктуры», и, для большего пафосу заказал стример.

Более идиотского решения я еще не видел. Объема кассет для бекапов критически не хватало и он, как мудак бегал 2 раза в день переставлять кассеты. Они, к слову, должны хранится отдельно от серверов, на случай пожара или грабежа,  но по факту лежали в соседней к серверной комнате. В итоге толку ноль, пафоса море, можно сидеть пилить дальше.

Потом стример сдох, одмин уволился, а вчера шарясь в поисках живого кондиционера нашли гору этих кассет с древними бекапами. Ну а вентилятор (промышленный, стальные лопасти) просто на глаза попался :) Вообще я люблю в него всякий мусор кидать, бутылки, мячи, бумажки…

Решение задачи об обратном подключении

Итак, как я уже писал, есть сервер к которому невозможно подключится извне, а очень хочется :)

Собственно начнем, попутно расписав нюансы. Суть — VNC reverse connection, т.е. сервер будет сам искать нас и подключаться что бы мы им поуправляли.

Ставим на сервер и то место откуда будем удаленно работать TightVNC, на сервере регистрируем и запускаем службу.

Теперь немного теории, если на управляющей машине запустить vnc viewer, указав какой нить порт и запустив Listening mode,

то клиент становится как бы сервером и слушает этот порт, а на сервере (после запуска клиента!) сообщаем vnc службе к какому ip и порту лезть

Вуаля! На клиенте внезапно открывается десктоп сервера. Кажется все просто — суем команду на запуск подключения службы сервера в шедулер и пускай ломится к нам хоть каждую минуту. Но, не тут то было, vnc viewer даже после подключения сидит и слушает порт, а значит запустив его один раз что бы поработать мы будем получать каждую минуту еще одно окно с нашего сервера, достанет быстро. Что делать? Это и есть первый нюанс.

Вывод — нужно что бы сервер отслеживал наличие связи с нами, и только если ее нет — пытался подключится, а значит в шедулер мы суем уже не команду для vnc службы, а некий скрипт, который будет смотреть в netstat и думать :)

Нелегко даются cmd скрипты линуксоеду, но все же вот такое родилось:
del vncstat
netstat -a -n | findstr "10000" | more > vncstat
for /F "tokens=4" %%i IN (vncstat) DO (if %%i==ESTABLISHED (exit /B))
"C:\Program Files (x86)\TightVNC\tvnserver.exe" -controlservice -connect 192.168.1.14:10000

192.168.1.14 — заменяем на ip или домен того места где у вас vnc viewer
10000 — заменяем на порт в vnc viewer

Обзываем это в духе vnc.cmd и в шедулер его.

Теперь второй нюанс — мы не всегда сидим за одним и тем же ip, а необходимость ковырять сервер может возникнуть в дороге когда у вас в руках ноут и gprs. Решается просто, главное что бы у вас был внешний ip — динамический днс.

Я выбрал freedns.afraid.org, удобно, зарегистрировал себе какой нить megaadmin.mooo.com, зашел в интерфейс когда надо подключится, ткнул линк и этот домен прицелен на тебя, осталось запустить вьювер и подождать.

Конечно, возникает вопрос безопасности, следите что бы никто не знал доменное имя, порт, что бы на этот домен не повис какой нить левый ip, для этого, если работаете с динамическим ип и он может достаться кому то еще, после работы в интерфейсе меняйте руками на 127.0.0.1 например.

Все, по всем вопросам в комменты, и лучше в stand-alone блог а не в ЖЖ, у меня там есть OpenID и Gravatar и прочая цивилизация :)

Интересная задачка

Условия:

Компьютер подключен к интернету через NAT и не имеет внешнего IP адреса, за компьютером никто не сидит — это сервер. Windows Server 2008 R2.

Необходимо:

Иметь возможность в любой момент подключится терминалом к этому компьютеру со своего ноута, инет-IP есть, но динамический. Для простоты пускай там тоже будет виндовс.

У задачки есть простое решение, но с двумя нюансами. Следующим постом решение в картинках :)