Jump to content
Форум по продукции MOXA

Перенаправление через NPort на локальный компьютер


Recommended Posts

Здравствуйте!
Уже долго бодаюсь с одной задачей и это побудило меня написать сюда. Ситуация следующая: У меня есть устройство, удалённый модем, который посылает на белый адрес сервера по порту tcp 2041 данные. Со стороны белого адреса находится mikrotik (192.168.1.2), который по этому же порту принимает данные и перенаправляет на MOXA NPort 5650-16 (192.168.1.99).
На компьютере, куда мне нужно перенаправить эти данные, есть драйвер, который работает по COM-порту. В этом драйвере я обозначил COM15.

В NPort Administrator я объединил два порта 15ый и 16ый со следующими настройками:

COM15 (port2) и COM16 (port3) Serial Settings 

  1. Baud rate: 9600
  2. Data bits: 8
  3. Stop bits: 1
  4. Parity: None
  5. Flow Control: None
  6. FIFO: Disable
  7. Interface: RS232

COM15 (port2) Operating Settings  - работает в режиме Real COM Mode, остальные параметры без изменений.

COM16 (port3) Operating Settings - работает в режиме TCP Server Mode, параметр Local TCP Port 2041, Command Port 968, остальное по умолчанию.

В MikroTik, на который приходят из интернета пакеты, прописаны следующие правила NAT:

Правило 1:
chain: dstnat, protocol: tcp, port: 2041, dst.address list: WAN (три белых IP в списке)
action: netmap, to-address: 192.168.1.99, to-ports: 2041

Правило 2:
chain: srcnat, dst-address: 192.168.1.99, protocol: tcp,  dst-port: 2041, action:src-nat, to-address: 192.168.1.2

Получается, как я вижу, что COM15 сэмулировал, как физический, прописал его в драйвере. Объединил COM15 с COM16 в программе и обозначил его, как TCP Server с портом 2041, на который должны попадать пакеты и после чего, COM15 передавать их должен в драйвер. По MikroTik вижу, что пакеты он передает, но на компьютере в драйвере события не появляются, то есть NPort не передает их, или передает неверно. 
Сейчас вся эта же схема работает на программе VSPE, где просто эмулируется COM-порт, делается Bridge с TCP Server, на котором прописал порт 2041, в MikroTik проброс порта напрямую на компьютер, всё работает, а через NPort не хочет по аналогичной схеме.

Пробовал подключать похожее устройство локально, напрямую кабелем в NPort, присвоил COM14, режим RealCom, прописал его в драйвере - всё работает.

Через WireShark посмотрел, вроде как что-то прилетает с портов 952 и 968, но с ошибками 0x014 (RST, ACK)


 

 

Link to comment

Добрый день. Я завис уже на самом начале: "удалённый модем, который посылает на белый адрес сервера по порту tcp 2041 данные. Со стороны белого адреса находится mikrotik (192.168.1.2), который по этому же порту принимает данные и перенаправляет на MOXA NPort 5650-16 (192.168.1.99). На компьютере, куда мне нужно перенаправить эти данные, есть драйвер, который работает по COM-порту. В этом драйвере я обозначил COM15.

Откуда тут взялся компьютер и зачем? Какой у него адрес? Если вы пытаетесь объединить данные, полученные от 2х разных хостов посредством NPort, то так работать не будет, разумеется. Нарисуйте, пожалуйста, схему, со всеми устройствами, адресами, портами и ожидаемыми направлениями течения данных для более полного понимания.

Link to comment

Прошу прощения, вероятно запутанно описал.
Как работает сейчас: 

  1. Удалённый модем BitCord RS232, который через интернет передает данные на MikroTik. В модеме забит белый IP адрес маршрутизатора и порт, на который пересылать данные, это tcp 2041.
  2. MikroTik, который принимает с модема данные и с помощью правила в NAT передает далее на компьютер с IP адресом 192.168.1.47
  3. На компьютере (192.168.1.47) работает служба, которая с помощью драйвера обрабатывает полученные данные. К сожалению этот драйвер работает только с COM портами, в его настройках нельзя ничего указать кроме COM.  И чтобы драйвер смог работать, была установлена программа Virtual Serial Port Emulator(VSPE), в которой создан виртуальный COM-порт (COM32), и Bridge Connector, внутри которого соединены COM32 и TCP-Server (с указанным портом 2041).

Таким образом между модемом BitCord и маршрутизатором MikroTik существует постоянно соединение, по которому летят пакеты данных, что следуют на компьютер, на виртуальный COM-порт, который указан в драйвере и обрабатывается им.

Что в итоге мне нужно:
Я хочу обойтись без программы Virtual Serial Port Emulator (VSPE)  и с помощью NPort 5650 реализовать то же самое, что делает эта программа VSPE. Может я заблуждаюсь и такое в целом не получится сделать?

Без имени-1.jpg

Link to comment

Вот, так гораздо понятнее, спасибо! Так сделать можно, но на NPort 5650 придётся использовать 2 последовательных интерфейса. Например так: оба в режиме RS-232 115200-8-N-1, первый в режим TCP Server (и порт 2041 соответственно), второй в режиме RealCOM и к нему драйвер для виртуального COM на ПК. Между портами - перемычка, нуль-модемный кабель. На первый порт принимаем данные с модема, через перемычку получаем их же на второй, и оттуда - уже на ПК.

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...