Настраиваем ККТ Штрих-М на работу с ОФД в ОС Linux
Поиск
  • Евгений

Настраиваем ККТ Штрих-М на работу с ОФД в ОС Linux

Как оказалось, многие ИТ-специалисты боятся использовать на рабочих местах кассира ОС Линукс. Основная проблема - непонимание того, как произвести настройку кассового оборудования, в частности, передачу данных о пробитых чеках в "налоговую", а точнее - в ОФД: оператору фискальных данных.


В этой статье я расскажу о том, как настроить кассу и операционную систему на работу с любым ОФД на примере ККМ фирмы Штрих-М.


Если на ККМ отсутствует порт LAN


Для начала, надо с использованием стандартной утилиты "Тест драйвера Штрих-М" подключиться к кассе и в таблицах включить режим работы по RNDIS.

Включаем режим RNDIS на кассе. Поле 9 в значение 1

После изменения параметра идём в таблицу "Сетевой адрес". Я рекомендую изменить настройки получения адреса с динамического (DHCP) на статический и, в обязательном порядке (по крайней мере на этапе настройки), указать жестко адрес DNS-сервера. В моём случае доверия заслуживает Google-DNS.


Прописываем сетевые настройки у кассы

После этих двух манипуляций необходимо ОБЯЗАТЕЛЬНО перезагрузить кассу (выкл-вкл). Т.к. только при старте она меняет режим работы интерфейсов.



Проверка интерфейса RNDIS в ОС Linux

Если всё сделано правильно, то после подключения ККМ к компьютеру переходим в root-консоль и смотрим, как у нас среагировала система на подключение USB-устройства.


Смотрим на последние строки, которые выдаст нам команда dmesg:

Если видим вот такое:

[60637.416033] usb 5-1: new full-speed USB device number 4 using uhci_hcd

[60637.609358] usb 5-1: New USB device found, idVendor=1fc9, idProduct=0083

[60637.609363] usb 5-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3

[60637.609367] usb 5-1: Product: VCOM Port

[60637.609371] usb 5-1: Manufacturer: NXP

[60637.609374] usb 5-1: SerialNumber: SHM001

[60637.615554] cdc_acm 5-1:1.0: ttyACM0: USB ACM device

значит касса продолжает работать в режиме простого USB-устройства. Возможно, забыли перезагрузить ККМ.


А вот если так:

[60883.188052] usb 5-1: new full-speed USB device number 5 using uhci_hcd

[60883.381720] usb 5-1: New USB device found, idVendor=18d1, idProduct=4ee4

[60883.381725] usb 5-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3

[60883.381729] usb 5-1: Product: RNDIS

[60883.381732] usb 5-1: Manufacturer: NXP

[60883.381736] usb 5-1: SerialNumber: SHM001

[60883.800820] usbcore: registered new interface driver cdc_ether

[60883.820295] rndis_host 5-1:1.0 eth0: register 'rndis_host' at usb-0000:00:1a.2-1, RNDIS device, 00:60:37:76:42:80

[60883.820436] usbcore: registered new interface driver rndis_host

[60883.951926] rndis_host 5-1:1.0 enx006037764280: renamed from eth0

[60884.326721] IPv6: ADDRCONF(NETDEV_UP): enx006037764280: link is not ready

значит система увидела RNDIS сетевую карту, сопоставила ей MAC-адрес и создала сетевой интерфейс с именем enx006037764280.


hexen@hdev:~$ ifconfig

enp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

inet 192.168.1.49 netmask 255.255.255.0 broadcast 192.168.1.255

inet6 fe80::113f:9580:f8ca:67db prefixlen 64 scopeid 0x20<link>

ether e0:cb:4e:79:b6:e1 txqueuelen 1000 (Ethernet)

RX packets 947700 bytes 1198300524 (1.1 GB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 572327 bytes 117697691 (117.6 MB)

TX errors 0 dropped 0 overruns 0 carrier 1 collisions 0


enx006037764280: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

inet6 fe80::7204:96be:b06b:1a05 prefixlen 64 scopeid 0x20<link>

ether 00:60:37:76:42:80 txqueuelen 1000 (Ethernet)

RX packets 17 bytes 736 (736.0 B)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 23 bytes 4921 (4.9 KB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0



Настройка маршрутизации

1. Отключаем переопределение DNS-сервера системы NetworkManager'ом

В ОС семейства Ubuntu / Mint и ряде других сетевыми настройками ведает NetworkManager. В частности, он перезаписывает файл /etc/resolv.conf, что не очень практично, на наш взгляд. Поэтому мы отключаем перезапись путём добавления опции в секцию main:


[main]

dns=none


После этого обязательно перезапускаем NM чтобы он применил настройки

service network-manager restart


2. Кофигурация итерфейсов в NetworkManager

Задаём сетевому интерфейсу осмысленное имя и присваиваем сетевой адрес. Данный адрес (сеть) установлен в качестве значения по-умолчанию в самой кассе.


3. Включение маршрутизации

Включаем маршрутизацию на уровне ядра.

Добавляем / раскомментируем строки в /etc/sysctl.conf


net.ipv4.ip_forward=1

net.ipv4.conf.default.forwarding=1

net.ipv4.conf.all.forwarding=1


Применяем параметры

sysctl -p


Настраиваем маскарадинг с помощью IPTables

$cat activateRNDIS.sh


#!/bin/sh


iptables --flush

iptables --table nat --flush

iptables --delete-chain

iptables --table nat --delete-chain


ETH_LAN="enp2s0"

ETH_RNDIS="enx006037764280"


iptables -A FORWARD -i $ETH_RNDIS -o $ETH_LAN -s 192.168.137.0/24 -m conntrack --ctstate NEW -j ACCEPT

iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

iptables -A POSTROUTING -t nat -j MASQUERADE



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

Демонстрация прекрасно работающей передачи данных по RNDIS на ККМ Штрих-М в Linux

Сохраняем правила, чтобы при перезапуске применились автоматом. Используется пакет Ubuntu/Debian iptables-persistent.


iptables-save > /etc/sysconfig/iptables chkconfig --add iptables chkconfig --level 345 iptables on service iptables start


Всё. На этом настройка RNDIS на OnLine кассах Штрих-М в Linux завершена.


Будут вопросы - обращайтесь и мы поможем!

Оставить заявку

Контакты

+7 928 270 13 19

Telegram        @hexen_61

WhatsApp     +79282701319

© 2019 ИП Князев Евгений Михайлович, ИНН 616113124378