LINUX.ORG.RU
ФорумAdmin

Радиомодем+одноплатный комп с OpenWrt - как избавиться от лишнего NAT?

 


0

3

Есть радиомодем с интерфейсом USB. В компе может работать или с pppd или как сетевая карточка(QMI). Если втыкаем его в линуксовый комп то получаем IP от провайдера и сидим за провайдерским NAT. Сам по себе модем никакой маршрутизацией и трансляцией не занимается. Для примера вот есть Quectel EC25.

Но проблема в том,что USB плохо работает на расстояния больше полутора десятков метров. А модем бывает надо разместить и дальше и выше чтобы он хорошо принимал сигнал сотового оператора.

Возникает желание использовать ethernet,не имеющий таких проблем с дальностью. Берем любой подвернувшийся под руку одноплатный комп у которого есть usb и eth,втыкаем модем в него, соединяем витой парой с линуксовым компом,ставим на одноплатник OpenWRT и оно более-менее работоспособно. Вот только в OpenWRT образуется второй NAT,дополнительно к провайдерскому. Причем менее «умный». И это мне не нравится.

Возникает вопрос - что бы такого накрутить в OpenWRT чтобы второго NATа небыло? Судя по форумам - люди что-то мудрят с мостами (bridge) но я не нашел внятного описания как это работает. Куда какие адреса назначаются. Учитывая что провайдер выдает меняющийся адрес.

В самом OpenWRT вообще какая-то странная концепция - есть «devices» (eth0,wwan0,br-lan) и есть «interfaces»,названия которых не похожи на название интерфейсов устройств. Особенно «интерфейс модема» странно создается. В devices он виден как wwan0 и также его называет ifconfig,а в interfaces модем называется qmi-wwan0. Не получается понять идею,заложенную в это. Для чего так сделано.

Буду премного благодарен присутствующим опытным сетевикам за разъяснения и/или ссылки на какие-нибудь тексты по этой теме.



Последнее исправление: watchcat382 (всего исправлений: 1)
Ответ на: комментарий от NyXzOr

Естественно антенна внешняя. Но модем должен быть возле антенны чтобы длина кабеля с гигагерцовыми частотами была минимальна(пару десятков см.),ибо затухание на таких частотах значительное.

watchcat382
() автор топика
Ответ на: комментарий от Atlant

У меня модем это модем,а не роутер с встроенным модемом. Модем подключаем к одноплатному компу,пусть будет например RPi,но это не принципиально. На этот одноплатник ставим линукс в том или ином виде. Я вот OpenWRT поставил. Модем естественно в линуксе виден. И вот теперь основной вопрос - а как полученный с модема интернетный трафик отправить с одноплатника на основной комп,не используя NAT.

Пока что за ночь откопал несколько обсуждений на форумах про бриджи,но так ни у кого и не получилось. А еще откопал вот такую шутку https://usbip.sourceforge.net Позволяет передать usb-устройство на другую машину. Пишут что с мышами,флэшками и вебкамерами работает. Буду пробовать с модемом.

watchcat382
() автор топика

Аналогичный вопрос возникал, только я не заморачивался, но интересно послушать ответы.

Собрал я себе несколько лет назад резервную коробку вместо ADSL-модема на базе Малины 2B и модема Quectel EP06-E, поставил OpenWRT, поставил для Люси дополнения, реализующие «графический» функционал для мониторинга и управления модемом. И поставил саму коробку возле окна, напротив которого как раз расположены две «останкинские башни» в 300-х метров примерно. До кучи наколхозил импровизированное POE от 12-24В. Получилась отличная резервная «сопля» на случай отрубания основного канала. Тариф подбирал, чтобы и «есть не просил» и «мешки» с гигабайтами не пропадали. Включаю раз в три месяца и отправляю себе смс-ку, чтобы номер не пропал.

Сам модем имеет несколько режимов: MBIM, QMI, NDIS и вроде есть какая-то разница применительно к теме, но я уже не помню даже в каком режиме он работает у меня. Знаю, что создает он несколько виртуальных последовательных портов. Помню только, что зашивал IMEI от своего старого 4G аппарата и фиксировал TTL.

На ум приходят «удлинители» USB, но я с ними не работал, работал как-то с удлинителем RS232 MOXA N-Port, не знаю, есть ли подобное фирменное для USB…

yaba ★★★
()
Последнее исправление: yaba (всего исправлений: 2)
Ответ на: комментарий от VladMesh

Использовать USB-over-IP (USB/IP).

Спасибо! Использовал, модем «пропал» из OpenWRT на одноплатнике, и «появился» в настольном компе на Дебиане как будто туда и был воткнут. Minicom с портом ttyUSB общается,команды проходят. Значит как минимум в режиме PPP работать точно будет. Потом попробую еще и QMI настроить. Во всяком случае на команды qmicli модем отвечает. Не знаю зачем, потому как полтора десятка лет PPP-режимом пользуюсь,но почему бы и не попробовать…

Инструкции тут: https://openwrt.org/docs/guide-user/services/usb.iptunnel https://habr.com/ru/articles/504338/

watchcat382
() автор топика
Последнее исправление: watchcat382 (всего исправлений: 1)
Ответ на: комментарий от watchcat382

Гонять USB-фреймы по сети — большие накладные расходы. Для скоростей а-ля 5 Мбит/с, наверное, не принципиально, но не думаю, что можно сильно больше.

Я бы на вашем месте написал хуки для DHCP-клиента, чтобы он:

  1. Получал IP-адрес от провайдера
  2. Перенастраивал DHCP-сервер на выдачу этого адреса
  3. Добавлял запись в таблицу маршрутизации этого адреса на интерфейс локальной сети

Криво-косо, но нормального иного выхода на уровне маршрутизации не особо вижу.

Наверное, под линукс существуют L2TP-серверы, пробрасывающие PPP-фреймы к удалённому серверу. Если найдёте такой, можно настроить через него. Может, accel-ppp умеет.

ValdikSS ★★★★★
()
Ответ на: комментарий от anonymous

Активный usb кабель.

Работает не больше чем на полтора десятка метров при заявленных в рекламе 60м. Пробовал на 27м от дома до сарая - сыплет ошибками и устройство не работает. Хотя это был очень мало потребляющий конвертор usb-rs485.

watchcat382
() автор топика
Ответ на: комментарий от ValdikSS

Гонять USB-фреймы по сети — большие накладные расходы.

Сеть 100 мегабит, а модем подключенный локально качает не более 1100 килобайтов в секунду. Так что не думаю что накладные расходы будут мешать.

L2TP-серверы, пробрасывающие PPP-фреймы к удалённому серверу.

Так ведь тоже накладные расходы.

Добавлял запись в таблицу маршрутизации этого адреса на интерфейс локальной сети

Вот как раз это никто толком и не решил судя по прочитанным за ночь форумам. В смысле - чтобы стабильно работало. Как оказалось, тема довольно много обсуждается применительно к втыканию usb-модемов в роутеры,из-за чего тоже образуется двойной NAT. Хотя если за роутером комп только один то NAT явно лишний.

watchcat382
() автор топика

Попутно выяснилось что через usbip модем Quectel EC25 на команды qmicli отвечает нормально,а воткнутый локально Huawei E3372 выдает ошибку

qmicli --device=/dev/cdc-wdm1 --dms-get-revision
 [/dev/cdc-wdm1] Device revision retrieved:
        Revision: 'EC25EFAR02A08M4G'

qmicli --device=/dev/cdc-wdm0 --dms-get-revision
 -Warning ** [/dev/cdc-wdm0] couldn't detect transport type of 
 port: unexpected driver detected: huawei_cdc_ncm
 error: couldn't open the QmiDevice: Cannot automatically select 
 QMI/MBIM mode

watchcat382
() автор топика
Ответ на: комментарий от watchcat382

Сколько усилителей на нем было? Через сколько метров они стояли? Было ли доп питание? У меня метров на 15 есть с одним усилителем на конце, спокойно держит пассивный хаб с 2 rtl-sdr например.

anonymous
()

Проще пареной репы. Надо создать бридж и включить в него два интерфейса - модема и дальнейшего ethernet. Все.

PS

Зачем использовать убогие системы типа openwrt, которые к тому же не знаешь, отдельный вопрос. Любой orange pi zero с обычным armbian будет делать оное не хуже и проще.

usermod
()
Ответ на: комментарий от watchcat382

e3372 с ndis эмулирует тебе сетевую карту, отправляешь AT команду на подключение интернета в порт, а потом dhcp клиентом получаешь айпишник. Можно и просто модеммэнеджер использовать. qmi для квалкомов.

Merionet
()
Ответ на: комментарий от anonymous

У меня кабель был в виде двух коробочек между которыми подключается витая пара. И на дальнем конце еще гнездо для 5 вольт питания. Вот именно что метров на 15 и работает. А в рекламе заявлено 60 :)

watchcat382
() автор топика
Ответ на: комментарий от BOOBLIK

У меня модем работает на линии 20м+ от антенны.

Если усиление антенны больше чем затухание в кабеле то как-то работать будет. Вот таблица с затуханием в разных кабелях. На двадцать метров - минус примерно 5 дБ

https://kroks.ru/tests-and-reviews/comparison-of-attenuation-of-the-cable-50-and-75-ohm-for-frequency-2-28-hz/

Не очень понятно зачем сначала платить за дорогую антенну с большим усилением и потом за дорогой кабель с малым затуханием, половину этого усиления поглощающий. Как оказалось - проброс usb по эзернету вполне работает.

watchcat382
() автор топика
Ответ на: комментарий от usermod

Проще пареной репы. Надо создать бридж и включить в него два интерфейса - модема и дальнейшего ethernet. Все.

Вот этот ответ регулярно попадается на форумах но без пояснений куда какие ip-адреса назначать. И те кто пытался - регулярно терпели неудачи. Не работает это так,особенно учитывая что адрес на модеме динамический. Ну допустим что получится заставить одноплатник назначать выданный провайдером ip-адрес на свой eth0. А дальше? Как это поможет подключению компа? Какой адрес назначать на его сетевую карточку,что писать в таблице роутинга? Сотовые операторы выдают не сеть,а ОДИН ip адрес. И хочется иметь его на настольном компе,а не на одноплатнике где модем. Как оказалось - usbip как раз это и позволяет сделать.

Зачем использовать убогие системы типа openwrt

Потому что всякие халявные одноплатные компы нередко бывают на MIPS,а не на ARM. Хочется иметь возможность и их использовать. Да и не сказал бы я что openwrt чем-то «убогое». Линукс как линукс. Из командной строки конфигурируется точно также. Некоторая сложность там только если из веб-конфигуратора пытаться настраивать - ну так это дело не обязательное.

watchcat382
() автор топика

переводишь модем в QMI, на owrt делаешь bridge между интерфейсом модема и eth портом, на второй стороне кабеля от eth порта у тебя wan

Kolins ★★★★★
()
Ответ на: комментарий от watchcat382

Драйвер QMI, NCM и MBIM создаёт на линуксе интерфейс типа point-to-point, у него нет MAC адреса, и сбриджевать его с ethernet интерфейсом роутера/одноплатника невозможно. usermod поторопился с пареной репой.

usb-over-ip должен сработать. К тому же он даст возможность управлять модемом и наблюдать за ним с писюка (вводить PIN код SIM карты, смотреть AT-командами списки базовых станций и силу сигнала, передавать SMS, и т.д.)

iliyap ★★★★★
()
Ответ на: комментарий от Merionet

qmi для квалкомов.

Да, с этим разобрался, спасибо. Оказывается этих вариантов подключения больше чем я думал.

C e3372 в режиме NDIS другая проблема - плохая работа в условиях слабого сигнала. Если в варианте c PPP демон pppd сам следит за наличием связи перезапускает линк,то в режиме NDIS надо модем обвешивать скриптами который будут пинговать дальний конец линка и перезапускать если перестал идти трафик. Поэтому e3372 я уже десяток лет использую в режиме PPP. А вот у EC25 производитель обещал всякие дполнительные возможности в режиме QMI,вот и захотелось пощупать,просто из любопытства.

watchcat382
() автор топика
Ответ на: комментарий от iliyap

usermod поторопился с пареной репой.

Не он один. В точности таких советов довольно много на англоязычных форумах.

сбриджевать его с ethernet интерфейсом роутера/одноплатника невозможно.

Веб-конфигуратор openwrt позволяет написать такой конфиг. Но это не работает. Кстати, ifconfig показывать MAC для модемного wwan0 интерфейса:

wwan0: flags=4098<BROADCAST,MULTICAST>  mtu 1500
        ether 12:43:ae:4d:de:06  txqueuelen 1000  (Ethernet)
watchcat382
() автор топика
Ответ на: комментарий от iliyap

usb-over-ip должен сработать.

И таки работает. Уже попробовал. С интернетом пока через это не соединялся,но общение с самим модемом проходит,и через AT-команды и через qmicli.

он даст возможность управлять модемом и наблюдать за ним с писюка

Да. И это еще один аргумент против использования бриджа.

вводить PIN код SIM карты

Проще один раз вставить модемную симку в телефон и запрос PIN-кода отключить. Что я всегда и делаю.

списки базовых станций

А вот это умеют немногие модемы. А для базовых станций LTE - совсем очень немногие. Мне пока только один такой умеющий попадался - он был встроенный в маршрутизатор microtik причем «промышленный» и дорогущий.

передавать SMS

С смсками под линуксом весьма не очень,да и не сильно надо. Хуже что тоже «не очень» с USSD-запросами которые нужны чтобы следить за оставшимися деньгами и мегабайтами. Но у российского Мегафона то и другое можно на их сайте в «личном кабинете» смотреть,чем и пользуюсь.

watchcat382
() автор топика
Ответ на: комментарий от Merionet

С modemmanager он сам не переподключается?

Сочетание NDIS + modemmanager я не пробовал. У меня нету его на машине так как при PPP-соединении не нужен,всё и так переподключается настройками демона.

watchcat382
() автор топика