Discussion:
Проброс COM порта по сети
(слишком старое сообщение для ответа)
Maxim Gribanov
2014-11-27 12:15:44 UTC
Permalink
Привет, All!

Так сложилось что всё же Я решил настроить коммутируемый доступ на ноде, для
некоторых это актуально, но здесь друзья мне требуется Ваша помощь.

Hашёл Я свой старенький Dial-Up модем Acorp emsf2 c COM интерфейсом, запитал
его, поставил планку COM порта на сервер и подключил к материнской плате. Сама
нода у меня работает под управлением Debian Linux wheezy, развернутой в роли
гостевой ОС на сервере виртуализации. В качестве гипервизора для виртуалицации
используется Citrix XenServer 6.2. Понятно что нужно каким то образом
пробросить COM порт в виртуальную машину, но к сожалениюю Citrix XenServer
этого не умеет. С часик гугления привели к тому выводу что нормальных решений
нет, и единствееное возможно рабочее решение это проброс COM порта через сеть в
гостевую ОС.

В начале выбор пал на ser2net, и с серверной частью проблем не оказалось, чего
нельзя сказать о клиенской:
Для подключения к серверу в качестве клиента мой выбор пал на
cyclades-serial-client так как нам нужно передавать и управляющую информацию,
но как оказалось они вместе не дружат, хотя соеденяется клиент с сервером
нормально, может кто подскажет в чем дело.

Далее Я решил вместо ser2net использовать sredird. Это другая реализация
сервера RFC 2217. Он лучше совместим с клиентом cyclades-serial-client. Так
пишут.

Запускаю на хосте sredird на порту 23 с помощью netcat:

server# nc -l -p 23 -c '/usr/local/sbin/sredird /dev/ttyS0 sredird.lock'

Для проверке пробую подключиться телнетом, вот что выводит.

# telnet 192.168.x.x
Trying 192.168.x.x...
Connected to 192.168.x.x.
Escape character is '^]'.
sredird: RFC 2217 compliant serial port redirector
Version 2.2.2, 20 February 2004
This program should be run only by the inetd superserver
Usage: sredird [-i] [pollingterval]
-i indicates Cisco IOS Bug compatibility
Poll interval is in milliseconds, default is 100, 0 means no polling
Connection closed by foreign host.

Подскажите что это может значить. Что и как делал могу описать.

С наилучшими пожеланиями, Maxim.
Valentin Davydov
2014-11-28 14:49:15 UTC
Permalink
Date: Thu, 27 Nov 2014 15:15:44 +0300
Далее Я решил вместо ser2net использовать sredird. Это другая реализация
сервера RFC 2217. Он лучше совместим с клиентом cyclades-serial-client. Так
пишут.
server# nc -l -p 23 -c '/usr/local/sbin/sredird /dev/ttyS0 sredird.lock'
Для проверке пробую подключиться телнетом, вот что выводит.
# telnet 192.168.x.x
Trying 192.168.x.x...
Connected to 192.168.x.x.
Escape character is '^]'.
sredird: RFC 2217 compliant serial port redirector
Version 2.2.2, 20 February 2004
This program should be run only by the inetd superserver
Usage: sredird [-i] [pollingterval]
Usage: sredird [-i] <loglevel> <device> <lockfile> [pollingterval]

По-видимому, у тебя фидошный софт угловые скобочки съедает.
-i indicates Cisco IOS Bug compatibility
Poll interval is in milliseconds, default is 100, 0 means no polling
Connection closed by foreign host.
Подскажите что это может значить. Что и как делал могу описать.
У него три обязательных параметра, а ты задал всего два, да и то один из
них неправильно. Hу, и, наверное, лучше всё-таки через inetd запускать,
раз просит.

Вал. Дав.
Maxim Gribanov
2014-12-02 08:49:58 UTC
Permalink
Привет, Valentin!

28 ноя 14 17:49, Valentin Davydov -> Maxim Gribanov:


VD> Usage: sredird [-i] <loglevel> <device> <lockfile> [pollingterval]

VD> По-видимому, у тебя фидошный софт угловые скобочки съедает.
Post by Maxim Gribanov
-i indicates Cisco IOS Bug compatibility
Poll interval is in milliseconds, default is 100, 0 means no polling
Connection closed by foreign host.
Подскажите что это может значить. Что и как делал могу описать.
VD> У него три обязательных параметра, а ты задал всего два, да и то один
VD> из них неправильно. Hу, и, наверное, лучше всё-таки через inetd
VD> запускать, раз просит.

Спасибо, запустился командой nc -l -p 23 -c '/usr/local/sbin/sredird -i 1
/dev/ttyS0 sredird.lock'

А как его запустить через init.d? Я про то, что мне же его нужно на 23 порту
запустить.

С наилучшими пожеланиями, Maxim.
Valentin Davydov
2014-12-02 12:35:56 UTC
Permalink
Date: Tue, 02 Dec 2014 11:49:58 +0300
VD> У него три обязательных параметра, а ты задал всего два, да и то один
VD> из них неправильно. Hу, и, наверное, лучше всё-таки через inetd
VD> запускать, раз просит.
Спасибо, запустился командой nc -l -p 23 -c '/usr/local/sbin/sredird -i 1
/dev/ttyS0 sredird.lock'
Лок поправь на тот, который другие программы работы с портом ожидают.
Обычно это ${LOCKDIR}/LCK..ttys0
А как его запустить через init.d? Я про то, что мне же его нужно на 23 порту
запустить.
Ты не понял. Hе через init.d, а через inetd. Который, впрочем, в большинстве
линухов уже много лет как xinetd.

Вал. Дав.
Serguei E. Leontiev
2014-12-02 13:32:32 UTC
Permalink
Масим, привет,
Post by Maxim Gribanov
Спасибо, запустился командой nc -l -p 23 -c '/usr/local/sbin/sredird -i 1
/dev/ttyS0 sredird.lock'
А как его запустить через init.d? Я про то, что мне же его нужно на 23 порту
запустить.
В каталоге /etc/rc.d/init.d делаешь командный файл xxxx запускающий твой
собственный импровизированный демон, который обрабатывает аргументы
start/stop/restart/..., и делаешь на него символические ссылки
/etc/rc.d/rc[2345].d/S90xxxx и /etc/rc.d/rc[01].d/K10xxxx

Альтернатива - запуск из xinetd или активация по TCP порту systemd, в
зависимости от того, что на твоём Linux установлено. (Hачни с man или
Яндекса)
--
Успехов, Сергей Леонтьев, <http://www.cryptopro.ru> (NewsTap)
Maxim Gribanov
2014-12-02 13:54:14 UTC
Permalink
Привет, Serguei!

02 дек 14 16:32, Serguei E. Leontiev -> Maxim Gribanov:
А
Post by Maxim Gribanov
как его запустить через init.d? Я про
то, что мне же его нужно на
23 порту запустить.
SL> В каталоге /etc/rc.d/init.d делаешь командный файл xxxx запускающий
SL> твой собственный импровизированный демон, который обрабатывает
SL> аргументы start/stop/restart/..., и делаешь на него символические
SL> ссылки /etc/rc.d/rc[2345].d/S90xxxx и /etc/rc.d/rc[01].d/K10xxxx

SL> Альтернатива - запуск из xinetd или активация по TCP порту systemd, в
SL> зависимости от того, что на твоём Linux установлено. (Hачни с man или
SL> Яндекса)

Спасибо, запустил из xinetd

С наилучшими пожеланиями, Maxim.

Loading...