larens53 Posted February 2, 2023 Share Posted February 2, 2023 Здравствуйте! Уже долго бодаюсь с одной задачей и это побудило меня написать сюда. Ситуация следующая: У меня есть устройство, удалённый модем, который посылает на белый адрес сервера по порту 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 Baud rate: 9600 Data bits: 8 Stop bits: 1 Parity: None Flow Control: None FIFO: Disable 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
Знайка Posted February 2, 2023 Share Posted February 2, 2023 Добрый день. Я завис уже на самом начале: "удалённый модем, который посылает на белый адрес сервера по порту tcp 2041 данные. Со стороны белого адреса находится mikrotik (192.168.1.2), который по этому же порту принимает данные и перенаправляет на MOXA NPort 5650-16 (192.168.1.99). На компьютере, куда мне нужно перенаправить эти данные, есть драйвер, который работает по COM-порту. В этом драйвере я обозначил COM15. Откуда тут взялся компьютер и зачем? Какой у него адрес? Если вы пытаетесь объединить данные, полученные от 2х разных хостов посредством NPort, то так работать не будет, разумеется. Нарисуйте, пожалуйста, схему, со всеми устройствами, адресами, портами и ожидаемыми направлениями течения данных для более полного понимания. Link to comment
larens53 Posted February 2, 2023 Author Share Posted February 2, 2023 Прошу прощения, вероятно запутанно описал. Как работает сейчас: Удалённый модем BitCord RS232, который через интернет передает данные на MikroTik. В модеме забит белый IP адрес маршрутизатора и порт, на который пересылать данные, это tcp 2041. MikroTik, который принимает с модема данные и с помощью правила в NAT передает далее на компьютер с IP адресом 192.168.1.47 На компьютере (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. Может я заблуждаюсь и такое в целом не получится сделать? Link to comment
Знайка Posted February 3, 2023 Share Posted February 3, 2023 Вот, так гораздо понятнее, спасибо! Так сделать можно, но на NPort 5650 придётся использовать 2 последовательных интерфейса. Например так: оба в режиме RS-232 115200-8-N-1, первый в режим TCP Server (и порт 2041 соответственно), второй в режиме RealCOM и к нему драйвер для виртуального COM на ПК. Между портами - перемычка, нуль-модемный кабель. На первый порт принимаем данные с модема, через перемычку получаем их же на второй, и оттуда - уже на ПК. Link to comment
larens53 Posted February 3, 2023 Author Share Posted February 3, 2023 Всё получилось, спасибо большое! До перемычки никогда бы не догадался, всё думал, что оно должно работать иначе. Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now