[ОТВЕТИТЬ]
20.05.2017 14:50
baggio
 
1. Есть plink
2. Установленна виндовая служба anysrv в ней прописано
plink.exe -ssh -N -R 40512:localhost:5900 -P 22 -pw 111111 -l vnc -batch 185.42.8.8
3. служба стартует и пробрасывает порт от внс на сервер...
все здорово пока не рвется соединение... решается только перезапуском службы...
нужно как то мониторить тоннель и если оборвался - то перезапускать...

а)можно мониторить порт на сервере... но тут беда в том что порты 30000-50000 закрыты специально что бы никто не мог подбирать пароли к ВНЦ... т.е. с хоста проверить этот порт низя...

б) можно мониторить порт 22 по которому plink поднимает тоннель - но тоннелей несколько.. не только для ВНЦ...

в) пожно мониторить в задачах plink и если его нет перезапускать все тоннели - но блин ... как то не кошерно...

Знает кто как заставить plink самостоятельно переподключатся при обрыве? типа keep alive?

Знает кто как заставить srvany падать если запущенный ею plink упал? если служба упала то можно её поднимать автоматом...

Есть у кого идеи?
20.05.2017 15:23
OlegON
 
Как-то ты путано описал... Проблема и некошерность в том, что куча plink болтается и из-за одного влом перезапускать все?
Зачем тебе anysrv вообще? Пускай шедалером раз в минуту. Он с опцией "не запускать копию". Если работает - ждет, если отвалится, через минуту запустит заново... Если хочешь - раз в сутки принудительно переподключай обрывом "выполняющегося дольше чем".
23.05.2017 09:25
OlegON
 
Чем кончилось-то?
23.05.2017 10:47
baggio
 
кончилось тем что я был паражен....

1. у plink несмотря на всю его аху... офигенность нет реконнекта... т.е. я не могу сказать ему вот тебе логин вот тебе пароль.. вот тебе ключ если нужно - держи соединение постоянно и переподключайся если оборвешься... если честно я даже не мог поверить первое время что такое возможно с продуктом который вообщемто и создавался (выпили кусок из путти), как штука для тоннелей... и такого нет.. .я был в печальке...

2. потом я понял что когда тоннель падает то процесс plink.exe пропадает. Т.е. служба якобы работает а процесса plink нет... я наваял батник который бы проверял каждые 5 минут наличие 3-х plink... и если хоть одного нет - рестарт всех 3 тоннелей... т.к. хер его знает какой именно тоннель упал... (хотя можно plink - переименовать под каждый свой тоннель... хм... подумаю...тока щя пришло в голову...)

и это даже как то сейчас работает... тесчу...
3. но сегодня по утру я был "приятно" удивлен... plink висит в процессах... zabbix мне говорит всё... баста телепузики.. нет связи с агентом...
и вот тут я уже начинаю злится... потому как я например не могу проверить по портам поднятый тоннель... или не умею...
суть...
тоннель плинк поднимает со случайного порта до 22 на сервере...
далее сервер делает лупбэк с порта скажем 26001 до 127.0.0.1 на порт скажем 10050...
проверить порт 26001 я не могу... он закрыт на сервере чтобы всякие не перебирали...
порт 10050 я проверить могу но что толку я проверю же только локальный порт и что он открыт...
я пока немного нервничаю и туплю...

Есть альтернатива нормальная Plink`у на винде?
23.05.2017 13:49
OlegON
 
Есть нормальная альтернатива винде, блин...
Когда телепузики, что с соединением-то произошло? Оно не может смотреть в никуда, оно либо установлено, либо оторвалось (отваливается) по таймауту и plink сдох. Про переименовывание я тебе говорил выше - запускай заданиями... Заодно все в куче и будешь видеть, что запущено. Возможно, что периодически тем же заббиксом надо KeepAlive делать в соединение.
23.05.2017 14:13
baggio
 
Цитата:
OlegON Есть нормальная альтернатива винде, блин...
Когда телепузики, что с соединением-то произошло? Оно не может смотреть в никуда, оно либо установлено, либо оторвалось (отваливается) по таймауту и plink сдох. Про переименовывание я тебе говорил выше - запускай заданиями... Заодно все в куче и будешь видеть, что запущено. Возможно, что периодически тем же заббиксом надо KeepAlive делать в соединение.
1. перестань искать альтернативы... винде... как бы тебе не хотелось в перспективе лет 5-7 в России без вариантов... короче это вот винда и всё... точка...

2. Чо происходит с соединением - хз... plink логов не ведет... а он запущен как служба, т.е. интерактивного взаимодействия с ним нет...
но факт... plink висит в процессах... порт не проброшен...
рестарт службы с plink и все ок... т.е. у plink что то происходит что он думает что связь есть... а её нет... я в недоумении... пока...

3. я не хочу заданиями...
0. ну во первых имхо это не правильно.
1. возникают не тривиальные порой ограничения на запуск батников заданиями от system... последнее закручивание гаек в 10-ке привело к запрету запуска батника другим батником из задания...
2. Батник это не секъюрно... можно туда что угодно написать...
3. Ты мне предлагаешь батник в цикле, вместо того что бы понять что на самом деле не так и разобраться почему падает проброс от plink... или найти ему достойную замену... не могу сейчас судить о том кто из нас больший "костылист"... :))
23.05.2017 15:13
OlegON
 
я не предлагаю батник, я предлагаю сам plink запускать в повторяющемся задании. и при повторном подвисании просто посмотри, есть ли что-то на той стороне от соединения, может, оно и так отвалится... сниффером на этой стороне тоже посмотри, надо разобраться, чем просто рубить.
23.05.2017 16:16
baggio
 
запускать батником не вариант и вот почему:

1. запускать его просто в консоли - бред... он может час\два\ сутки\двое отрабатывать нормально... висит и висит себе.. все работает....
через какое то время от 15 минут до нескольких суток что то происходит... вывода у plink - нет... ну вот нет... мало того понятно что это проблемы с сетью... где то на время рвется... и это не исправить... предполагается что каналы будут в том числе и плохими...
по факту... plink плохо держит соединение по ssh. это соединение нужно мониторить и при косяках перезапускать...
но проблема что сам plink не дает средств диагностики тоннеля... поэтому нужны костыли... и делать их с батнике не вижу смысла...

щя смотрю на MyEnTunnel... он поднимает точно такойже тоннель на plink... но крайне забавно его мониторит... помимо портов которые тебе нужно он еще пару своих пробрасывает... делает кольцо... порт от себя до сервера и этот же порт отсервера до себя на второй порт... и что бы вы думали? гоняет пинги через него периодически типа нет пингов столько то упал канал...
и после этого линусоиды мне про костыли рассказывают ))) ладно... я не про то...
сейчас вот прикручиваю MyEnTunnel... голый плинк к сожалению не справляется... или как то исходники править...
23.05.2017 16:24
OlegON
 
Это называется "несистемный подход". Зачем ты мечешься, причину бы выяснил или общую картину происходящего, нет, надо перебирать разный мусор... Кстати, а зачем тебе этот тоннель, еще и напостоянку?
23.05.2017 16:41
baggio
 
Цитата:
OlegON Это называется "несистемный подход". Зачем ты мечешься, причину бы выяснил или общую картину происходящего, нет, надо перебирать разный мусор... Кстати, а зачем тебе этот тоннель, еще и напостоянку?

трудно сказать системный или нет... не готов спорить...
просто причина лично мне ясна - это обрывы канала.
следствие тоже - в 90% плинк падает и его нужно поднимать с колен руками - батником по расписанию проверять...
в 10% случаев он не падает а "залипает" причин он не говорит ни в консоль ни "куда бы то ни было" еще... т.к. "ку дабы то ни было" не предусмотрено

причины мне ясны. последствия тоже.
мусор перебирать не хочу... хочу сделать службу - сказать ей вот эти порты - пробрось. и забыть - пусть она сама как хочет изворачивается но порты мне обеспечит... стабильно... надежно... НАВЕКА!!!))
и если есть готовое решение которое с этим справится а не заставит меня писать километры тупого кода в батниках... а писатель батников я еще тот... т.е. никакущий... я буду примного благодарен....
23.05.2017 17:13
OlegON
 
Цитата:
baggio "ку дабы то ни было" не предусмотрено
а plink --help ты пробовал? запусти с параметром -v свое соединение, будет много интересного, что посмотреть
Цитата:
baggio причины мне ясны
а мне вот совсем не ясны
Цитата:
baggio если есть готовое решение
я готов помочь и побороться, если ты скажешь, с чем...

мне пока зависание воспроизвести не удается... дергаю сетку - plink отваливается...
23.05.2017 18:07
baggio
 
Цитата:
OlegON мне пока зависание воспроизвести не удается... дергаю сетку - plink отваливается...
мне это тоже не удавалось воспроизвести первые суток трое... потом пришел пушной зверек...
23.05.2017 18:09
OlegON
 
Так лови зверька с -v, а там посмотришь, на чем лог кончился.
23.05.2017 18:32
baggio
 
можно его с -v заставить писать в файл? я так понимаю нет....
23.05.2017 19:36
Павел Сосновских
 
временно, для диагностики можно и на батниках его заставить писать в файл. нужно 2 батника.
1.cmd:
Код:
@echo off
SET LOG_FILE=install.log
call 2.cmd >> %LOG_FILE% 2>&1
IF %ERRORLEVEL% NEQ 0 GOTO error

echo SUCCESS:
pause
exit 0

:error
echo ERROR:
echo         Check %LOG_FILE% for detailes

pause
exit 1
2.cmd:
Код:
@echo off

plink -v ...
IF %ERRORLEVEL% NEQ 0 GOTO error

exit /B 0
GOTO end

:error

exit /B 1
:end
23.05.2017 19:40
baggio
 
Попробую на каком-нибудь хосте хотя вроде нашел сторонке решение...
Но для академической точности попробую...
23.05.2017 20:12
OlegON
 
Цитата:
baggio можно его с -v заставить писать в файл?
Упрощая вариант с батниками, любое консольное приложение можно перенаправить в файл
Код:
plink -v >> файл_журнала 2>&1
>> - дописывать в файл обычный вывод
2>&1 - stderr (вывод ошибок) перенаправлять в обычный вывод
ты почитай, там еще и в другую программу можно перенацеливать через | в общей сложности это все дает офигительную гибкость системы.
25.05.2017 15:03
baggio
 
Цитата:
Павел Сосновских временно, для диагностики можно и на батниках его заставить писать в файл
[/CODE]
Looking up host "serverip_adress"
Connecting to serverip_adress port 22
Server version: SSH-2.0-OpenSSH_7.1
Using SSH protocol version 2
We claim version: SSH-2.0-PuTTY_Release_0.63
Using Diffie-Hellman with standard group "group14"
Doing Diffie-Hellman key exchange with hash SHA-1
Host key fingerprint is:
ssh-rsa 2048 28:4d:11:51:50:8c:b6:f6:98:52:52:85:95:f7:09:7f
Initialised AES-256 SDCTR client->server encryption
Initialised HMAC-SHA-256 client->server MAC algorithm
Initialised AES-256 SDCTR server->client encryption
Initialised HMAC-SHA-256 server->client MAC algorithm
Using username "vnc".
Attempting keyboard-interactive authentication
Server refused keyboard-interactive authentication
Sent password
Access granted
Requesting remote port 25001 forward to localhost:5900
Remote debug message: Forwarding listen address "localhost" overridden by server GatewayPorts
Remote port forwarding from 25001 enabled
Received remote port 25001 open request from my_ip_adress:64643
Attempting to forward remote port to localhost:5900
Forwarded port opened successfully
Forwarded port closed
Received remote port 25001 open request from my_ip_adress:42487
Attempting to forward remote port to localhost:5900
Forwarded port opened successfully
Forwarded port closed
Received remote port 25001 open request from my_ip_adress:52928
Attempting to forward remote port to localhost:5900
Forwarded port opened successfully
Forwarded port closed
Received remote port 25001 open request from my_ip_adress:42570
Attempting to forward remote port to localhost:5900
Forwarded port opened successfully
Forwarded port closed
Received remote port 25001 open request from my_ip_adress:46787
Attempting to forward remote port to localhost:5900
Forwarded port opened successfully
Forwarded port closed
Received remote port 25001 open request from my_ip_adress:47741
Attempting to forward remote port to localhost:5900
Forwarded port opened successfully
Forwarded port closed
Initiating key re-exchange (timeout)
Using Diffie-Hellman with standard group "group14"
Doing Diffie-Hellman key exchange with hash SHA-1
Initialised AES-256 SDCTR client->server encryption
Initialised HMAC-SHA-256 client->server MAC algorithm
Initialised AES-256 SDCTR server->client encryption
Initialised HMAC-SHA-256 server->client MAC algorithm
Initiating key re-exchange (timeout)
Using Diffie-Hellman with standard group "group14"
Doing Diffie-Hellman key exchange with hash SHA-1
Initialised AES-256 SDCTR client->server encryption
Initialised HMAC-SHA-256 client->server MAC algorithm
Initialised AES-256 SDCTR server->client encryption
Initialised HMAC-SHA-256 server->client MAC algorithm
Received remote port 25001 open request from my_ip_adress:56442
Attempting to forward remote port to localhost:5900
Forwarded port opened successfully
Forwarded port closed
Received remote port 25001 open request from my_ip_adress:49080
Attempting to forward remote port to localhost:5900
Forwarded port opened successfully
Forwarded port closed
Initiating key re-exchange (timeout)
Using Diffie-Hellman with standard group "group14"
Doing Diffie-Hellman key exchange with hash SHA-1
Initialised AES-256 SDCTR client->server encryption
Initialised HMAC-SHA-256 client->server MAC algorithm
Initialised AES-256 SDCTR server->client encryption
Initialised HMAC-SHA-256 server->client MAC algorithm
Received remote port 25001 open request from my_ip_adress:59317
Attempting to forward remote port to localhost:5900
Forwarded port opened successfully
Network error: Software caused connection abort
FATAL ERROR: Network error: Software caused connection abort
25.05.2017 15:37
OlegON
 
ну и отвалилось после этого... почему его твой сервис не перезапустил непонятно...
25.05.2017 15:59
baggio
 
Цитата:
OlegON ну и отвалилось после этого... почему его твой сервис не перезапустил непонятно...
что ты подразумеваешь под сервис? я запустил батник которой мне дали с выводом... упало написал тут и лог приложил...

но факт что иногда соединения нет... а plink висит в процессах как ни в чем не бывало....
25.05.2017 16:16
OlegON
 
тут висел? если нет, то это не тот лог :)
25.05.2017 18:23
baggio
 
Цитата:
OlegON тут висел? если нет, то это не тот лог :)
нет не висел... не поймал пока... говорю же очень как то ... спонтанно... может что провайдер начинает резать.. хз..
запустил еще.. ждем...
прошлый раз до падения продержался часов 8....
26.05.2017 18:49
baggio
 
Looking up host "server_ip"
Connecting to 185.42.229.74 port 22
Server version: SSH-2.0-OpenSSH_7.1
Using SSH protocol version 2
We claim version: SSH-2.0-PuTTY_Release_0.63
Using Diffie-Hellman with standard group "group14"
Doing Diffie-Hellman key exchange with hash SHA-1
Host key fingerprint is:
ssh-rsa 2048 28:4d:11:51:50:8c:b6:f6:98:52:52:85:95:f7:09:7f
Initialised AES-256 SDCTR client->server encryption
Initialised HMAC-SHA-256 client->server MAC algorithm
Initialised AES-256 SDCTR server->client encryption
Initialised HMAC-SHA-256 server->client MAC algorithm
Using username "vnc".
Attempting keyboard-interactive authentication
Server refused keyboard-interactive authentication
Sent password
Access granted
Requesting remote port 25001 forward to localhost:5900
Remote debug message: Forwarding listen address "localhost" overridden by server GatewayPorts
Remote port forwarding from 25001 enabled
Received remote port 25001 open request from myip:56441
Attempting to forward remote port to localhost:5900
Forwarded port opened successfully
Forwarded port closed


а кто нить знает что это такое? все работает просто странно есообщение стало появлятся...
26.05.2017 19:05
OlegON
 
Это параметр конфига такой, вот, посмотри:
30.05.2017 10:48
baggio
 
короче проблема по ходу всё таки в этом...
Forwarding listen address "localhost" overridden by server GatewayPorts

ситуация... делаю...
plink.exe -v -ssh -N -R 25001:localhost:5900 -R 35001:localhost:10050 -R 45001:localhost:8080 -L 55001:localhost:55001 -P 22 -pw 111 -l vnc -batch serverip


Код:
Looking up host "serverip"
Connecting to serverip port 22
We claim version: SSH-2.0-PuTTY_Release_0.67
Server version: SSH-2.0-OpenSSH_7.1
Using SSH protocol version 2
Doing Diffie-Hellman group exchange
Doing Diffie-Hellman key exchange with hash SHA-256
Host key fingerprint is:
ssh-rsa 2048 28:4d:11:51:50:8c:b6:f6:98:52:52:85:95:f7:09:7f
Initialised AES-256 SDCTR client->server encryption
Initialised HMAC-SHA-256 client->server MAC algorithm
Initialised AES-256 SDCTR server->client encryption
Initialised HMAC-SHA-256 server->client MAC algorithm
Using username "vnc".
Attempting keyboard-interactive authentication
Server refused keyboard-interactive authentication
Sent password
Access granted
Local port 55001 forwarding to localhost:55001
Requesting remote port 25001 forward to localhost:5900
Requesting remote port 35001 forward to localhost:10050
Requesting remote port 45001 forward to localhost:8080
Remote debug message: Forwarding listen address "localhost" overridden by server GatewayPorts
Remote port forwarding from 25001 refused
Remote debug message: Forwarding listen address "localhost" overridden by server GatewayPorts
Remote port forwarding from 35001 refused
Remote debug message: Forwarding listen address "localhost" overridden by server GatewayPorts
Remote port forwarding from 45001 refused
такое впечатление что порты заняты... но нет.. на сервере они не заняты... и такая петрушка только пока с 1-2 хостами - остальные нормально работают...
30.05.2017 22:26
baggio
 
хм... падает все одно сцуко...
блин... говову сломал...

завернул все тоннели в один... думаю ну может тут чтото устаканится...
конструкция примерно следующая...
srvany запускает plink как службу...
Код:
-v -ssh -N -R 25004:localhost:5900 -R 35004:localhost:10050 -R 45004:localhost:8080 -L 55004:localhost:55004 -P 22 -pw 111 -l vnc -batch serverip
последний тоннель сделал для мониторинга. т.е. думаю я своей тупой башкой что если порт 55004 живой.. т.е. я проверяю его доступность... то и остальные тоннели живые... и если не доступен порт... понятно дело всё пропало - нужно ребутать службы...
гуй...
сегодня после падения инета у клиента наблюдаю отвалившиеся 5 компов.. лезу смотреть...
55004 телнетится т.е. порт доступен... остальные порты хер....
лезу на сервер и с сервера телнечу порты... хер...
55004 на клиенте телнетится... бред... т.е. отвалились все тоннели кроме одного? а plink радостно висит в памяти с коннектом на 22 порт сервера... начинаю злится...

Внимание вопрос: может кто знает как сделать.

1. делаем -L 55004:localhost:22 т.е. пробрасываем локальный порт 55004 на 22 сервака.
2. делаем проверку которая подключается к локальному порту 55004, авторезуется, и выполняет удаленную команду на сервере, т.е. проверяет жизнеспособность портов 25004, 35004, 45004 со сторону сервера...
т.е. выполнить удаленную команду d ssh сервера а вывод получить в командную строку винды клиента...
30.05.2017 22:46
baggio
 
воткнул на сервере
Код:
ServerAliveInterval 100
ServerAliveCountMax 2
will se...
31.05.2017 06:46
EugeneT
 
baggio, А может распишешь условия задачи? Бьешься с plink, а вероятно копеешный роутер типа микротика вполне способен решить ее не напрягаясь, без необходимости велосипедостроения и костылей на сервере и компах?
31.05.2017 07:04
OlegON
 
Хм, я тоже немного удивлен, что по строке судя, ты не мелкий костыль собрал, а что-то прямо серьезное. На винде и putty при плохой связи это не делают.
Судя по всему, на этом конце отваливается плинк, а srvany перезапускает его так быстро, что с той стороны ssh не успевает закрыться и закрыть использованные порты (про запуск через планировщик я тебе говорил). Попробуй лучше OpenVPN тогда...
31.05.2017 10:44
baggio
 
Цитата:
baggio воткнул на сервере
Код:
ServerAliveInterval 100
ServerAliveCountMax 2
will se...
не спасает сегодня еще 10 отвалились...

видимо придется городить костыли по проверке тоннеля со стороны сервера...


Опции темы


Часовой пояс GMT +3, время: 00:41.

 

Форум сделан на основе vBulletin®
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.