LINUX.ORG.RU
решено ФорумAdmin

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

 


2

5

Есть радиомодем с интерфейсом 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)
Ответ на: комментарий от watchcat382

На сколько я понимаю, работать оно должно как точка доступа wifi в локалке, только в обратную сторону. Сама точка может иметь любой произвольный адрес (для админки), а вот клиент получает уже свободный адрес из локалки при подключении к ней, как будто клиент физически подключен через етхернет в этой сети.

Тут должно быть тоже самое, адрес одноплатника это для админки, а вот «дозвон» (поднятие ppp0, но тут я использовал вендовые термины) должен происходить с десктопа.

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

Грозоащита для кабелей ethernet продается даже на Озоне,в отличие от usb. Так что это еще один аргумент в пользу использования именно эзернета как удлинителя для модема.

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

На сколько я понимаю, работать оно должно как точка доступа wifi в локалке, только в обратную сторону.

Как раз всякие комплекты оборудования для доступа к мобильному интернету обычно предполагают модем и роутер с wifi. Что плохо сразу по двум причинам. Первая это уже упомянутый двойной NAT,а вторая это то,что в условиях слабого сигнала от сотового оператора работающий поблизости передатчик wifi мешает приему ухудшая соотношение сигнал-шум в эфире. Так как wifi мне не нужен вообще то я использую провода.

поднятие ppp0, но тут я использовал вендовые термины) должен происходить с десктопа.

Пока я только так могу придумать как получить провайдерский адрес в свой настольный комп и избежать двойного NAT.

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

Вы меня неправильно поняли, я не призываю использовать wifi, я просто провел аналогию с таким устройством, как точка доступа wifi и как она работает. А вам требуется наоборот. Адрес одноплатника будет из диапазона адресов вашей локалки, просто как какой-то хост. А интернетить вы будете через ppp0 на десктопе, только вот как все это устроить - я понятия не имею. Возможно надо изучить режимы модема + то, что писали выше. Ведь провайдер проводной (на начало 00-х) у меня работал подобным образом. Выдавал локальный адрес 10.10.х.х. привязанный на мой мак, а дальше я устанавливал pppoe-соединение, где выдавался адрес и маршрут.

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

Двойной NAT нужен только в том случае если требуется одновременный доступ в интернет с нескольких компов через один модем. Если доступ только с одного компа то двойной NAT не нужен.

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

ты так себя загоняешь?

Я не «загоняю»,а занимаюсь своим хобби,которым являются эксперименты с линуксом. Линукс это у меня любимая компьютерная игрушка уже три десятка лет. А самое главное - оказалось всё просто,надо лишь usbip установить и проблема двойного NAT легко решается.

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

Возможно вы пытаетесь заколотить гвозди микроскопом, есть удлинители usb работающие через витуху. Пассивные до 150ft стоят копейки. Активные емнип уже дорогие.
А в вашем варианте кажется usbip это то, что вы хотите.

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

будете через ppp0 на десктопе, только вот как все это устроить - я понятия не имею.

Всё оказалось очень просто - выше уже подсказали что существует usbip которое делает в точности то что нужно.

я устанавливал pppoe-соединение

У сотовых операторов pppoe не предлагается.

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

есть удлинители usb работающие через витуху.

Почитайте тему с начала. Я упоминал что удлинители,оба имеющихся у меня, дальше полутора десятков метров не работают. Причем у одного в рекламе было заявлено 30 метров,у другого 60. Шестидесятиметровый у меня вот такой https://www.avito.ru/moskva/audio_i_video/aktivnyy_usb-udlinitel_do_60_metrov_3327725802

в вашем варианте кажется usbip это то, что вы хотите.

Да, оно работоспособно и пока я не обнаружил проявления недостатков. Хотя пока на небольшое расстояние подключал.

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

Вот этот ответ регулярно попадается на форумах но без пояснений куда какие ip-адреса назначать.

На интерфейсы модема и сервера, в который он воткнут, никаких адресов назначать не нужно. На интерфейс, который соединен с интерфейсом сервера назначаются те сетевые настройки, которые в норме назначаются интерфейсу модема

Загвоздка в том, что как здесь сказали, у этого модема нет номального ethernet интерфейса. Соответственно, в бридж его не засунешь. Я так много раз делал с lte модемами йоты, в которых при втыкании появляется обычный езернет и бридж прекрасно работает.

В таком случае можно поднять vpn или сокс-прокси на сервере с модемом и мультиисп (через tun2proxy) на клиентском компьютере. Вариант получается немного замутным, но универсальным, пользоваться таким шлюзом без двойных натов можно вообще откуда угодно, не обязательно из внутренней сети.

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

На интерфейсы модема и сервера, в который он воткнут, никаких адресов назначать не нужно.

А что, интерфейс вообще может работать без адреса?! Никогда не видел таких конфигураций.

Загвоздка в том, что как здесь сказали, у этого модема нет номального ethernet интерфейса. Соответственно, в бридж его не засунешь.

Если модем использовать не в режиме PPP как обычно делается,а в QMI,то он образует сетевой интерфейс который как минимум веб-конфигуратором openwrt засовывается в бридж. Ну,говорит что засовывается, будет ли оно реально так работать - не проверял.

Неприятность другая - если на eth одноплатника куда воткнут модем не назначать никакой адрес то и по ssh туда будет не зайти (если оно вообще без адреса работать будет!). А вот с usbip всё работает удобно - и выданный провайдером адрес на настольном компе и на одноплатник по ssh зайти можно.

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

У меня длинковый работал на все десятки метров, порядка 60м легко. Но он крайне неудобный. Приложение только под windows, только в одном сегменте, поскольку общается через броадкаст. Может зависнуть, особенно если подключить устройство с двух хостов сразу.

usbip у меня работает через vpn поверх провайдерских каналов, хрен знает сколько км, возможно через америку. Но по итогу я отказался от него, ибо может внезапно заглючить вплоть до необходимости ребута обоих машин.

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

А что, интерфейс вообще может работать без адреса?! Никогда не видел таких конфигураций.

Да видел, конечно, просто не задумывался. Оглянись, наверняка где то рядом коммутатор висит с кучей портов. Какие адреса у этих эзернетов? Бридж, это тот же самый свич L2, просто внутри компьютера.

QMI,то он образует сетевой интерфейс который как минимум веб-конфигуратором openwrt засовывается в бридж.

Советую временно собрать схему. Нужно два компьтера (или ноутбука) с линуксом (достаточно флешка ventoy с systemrescuelinux ).

1 Компьютеры соединяешь друг с другом езернетом. 
2 В один комп (сервер) втыкаешь модем
3 В другой комп (клиент) ничего не втыкаешь, пункт просто для названия 

На сервере запускаешь свой модем, поднимаешь интерфейс между компами (ip link set eth0 up)

  1. Смотришь выхлоп ip link и ip addr, проверяешь, есть ли макадрес у интерфейса модема и сетевые настройки. Работает ли интернет. Запоминаешь сетевые настройки модема - адрес, маску, шлюз.

  2. удаляешь сетевые настройки с интерфейса модема и у сетевого интерфейса между компами (там его по идее и не должно быть, dhcp же нет)

  3. создаешь через brctl бридж на сервере и включаешь в него его инетрфейс между компами и модема

  4. Нак клиенте интерфейсу между компами (по идее он там один) через ip addr и ip r add default via назначаешь сетевые настройки из пункта 1. Не забудь ip link eth0 set up

5 Проверяешь ip addr что адрес модема с маской теперь на эзернете клиента, ip r что маршруты на месте

  1. Удостоверяешься что интернет на клиенте работает.

  2. Препарируешь полученное знание в настройки oprnwrt

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

Бридж, это тот же самый свич L2, просто внутри компьютера.

Однако смею заметить что хотя у входящих в бридж eth адресов и нет,но у самого br0 адрес есть. Поэтому я и удивился что без адреса он может работать.

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

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

Однако смею заметить что хотя у входящих в бридж eth адресов и нет,но у самого br0 адрес есть.

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

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

Причем у одного в рекламе было заявлено 30 метров

У меня парочка разных, но на обоих расстояние в футах написано, по максимуму не проверял.

Шестидесятиметровый у меня вот такой https://www.avito.ru/moskva/audio_i_video/aktivnyy_usb-udlinitel_do_60_metrov...

Какая-то «девушка без адреса», так и я могу написать хоть километр.

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

Я бы добавил в /etc/ppp/ip-up проверку, что интерфейс называется ppp0 или переименование ppp-интерфейса, чтобы знать где сломалось, если ядро выдало имя ppp1.

Зачем такие сложности если можно сразу прописать название интерфейса (например ppp123) ?

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

Боже, сколько пердолинга из-за страха перед двойным NAT. Чем тебя он не устраивал, что ты так себя загоняешь?

Хорошее замечание.
2ТС Подумайте, ведь подавляющее большинство пользователей проводного инета сидит за двойным натом и как-то не страдает. Пользователи раздающие инет со своих мобилок в режиме AP тоже сидят за двойным натом и тоже не особо страдают.

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

Если сеть есть, что странно включать NAT через комп, вам же электричество экономить надо. Но, ваше дело.

По поводу ppp-интерфейса без адреса. Если без всяких мостов, тунелей и пр., то всё просто. Из ppp-интерфейса приходит пакет, там никакого ARP нет, независимо от того, есть на принимающей стороне ip-адрес или нет, пакеты будут приходить. Одноплатник смотрит, что dst-адрес пакет не его, значит нужно маршрутизировать. Ну и отправляет пакет по прописаному маршруту на комп.

Как-бы всё просто, но rp_filter и рубка марсианских пакетов могут в каких-то конфигурациях мешать. Это я по поводу того, что на каких-то форумах у кого-то такая схема могла не заработать.

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

При чем тут страх? Если интерфейс используется только как клиент, то двойной нат обычно не страшен. Но если он используется как сервер, то дело сильно осложняется.

  1. Двойной нат можно обойти только через пропуск трафика через сервер с белым ip, в то время как для одинарного ната уже есть варианты.

  2. Даже если купить белый ip у провайдера, что само по себе может стоит довольно дорого, так еще и не везде возможно, второй нат останется и в сложных случаях будет осложнять жизнь, требуя особых alg, dnat и snat кучи портов и прочая-прочая.

  3. Зачастую соединение нужно на роутере который в центре сети и в безопасном месте, а антенна с модемом должны быть на вышке, открыты всем ветрам. Возможность прокинуть прямое соединение на роутер это великий гуд. Я был счастлив, когда прокинул по витой паре усбшную йоту с улицы прямо на роутер. Работало прекрасно. И даже лишней витой пары не требовало, работало через vlan по кабелю локалки, который там и так был.

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

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

Если интерфейс используется только как клиент, то двойной нат обычно не страшен. Но если он используется как сервер, то дело сильно осложняется.

Дядь, прочитайте что написано в теме:

сидим за провайдерским NAT.

и после этого разверните свою мысль «используется как сервер» это кто и как?

Даже если купить белый ip у провайдера, что само по себе может стоит довольно дорого

У ОПСОС-ов на эту тему вообще темный лес.

Зачастую соединение нужно на роутере который в центре сети и в безопасном месте, а антенна с модемом должны быть на вышке, открыты всем ветрам. Возможность прокинуть прямое соединение на роутер это великий гуд. Я был счастлив, когда прокинул по витой паре усбшную йоту с улицы прямо на роутер. Работало прекрасно. И даже лишней витой пары не требовало, работало через vlan по кабелю локалки, который там и так был.

Вы вот это сейчас к чему написали?

Судя по вашему выхлопу складывается впечатление, что у вас или раннее утро или ещё вечер не закончился.

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

подавляющее большинство пользователей проводного инета сидит за двойным натом и как-то не страдает

Подавляющее большинство пользователей еще и в виндах сидит. Надеюсь вы не станете мне предлагать страдать еще и от виндов:) Я уж как-нибудь буду наслаждаться линуксом и отсутствием двойного ната.

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

что странно включать NAT через комп

NAT в сеть требует крайне редко. Для ползания по интернету я использую отдельный специально маложручий комп. Его и для многих других задач хватает,так что всё остальное не каждый день включается.

у кого-то такая схема могла не заработать.

Ну если usbip будет работать плохо то попробую и такой вариант. Сейчас жду когда приедут переходники для антенн. В моем случае подключение хорошей антенны это обязательное условие для дальнейших экспериментов. Без антенны интернета просто нет.

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

и после этого разверните свою мысль «используется как сервер» это кто и как?

Например у меня есть маленький домашний сайт,в смысле физически расположенный на подключенном к интернету домашнем компе. Доступен когда я за компом сижу,а сижу я довольно много. Забраться на сайт можно вот так:

http://www.ipv6proxy.net/go.php?u=http%3A%2F%2Ffreeenergy.mooo.com&b=0&f=norefer

Работает через туннель,умеющий пробивать провайдерский NAT.

Зачастую соединение нужно на роутере который в центре сети и в безопасном месте, а антенна с модемом должны быть на вышке

Вы вот это сейчас к чему написали?

К тому,что проблема существует и нуждается в решении(-ях). Видно что уважаемый коллега реально был в таких же условиях как я,когда единственно возможный способ подключения к интернету это радиомодем от сотового оператора с его специфическими и весьма неудобными особенностями. В сельской местности это чаще всего только так. Понятно что обитатели городов с кабельными провайдерами не сталкиваются с этой проблемой.

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

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

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

Итак - докладываю. Посредством usbip успешно запустил модем

Quectel
EC25
Revision: EC25ECGAR06A04M1G

Причем он работает и в ppp и в qmi режимах. Speedtest.net в обоих случаях показывает одинаково около 16 рекламных мегабитов. Это примерно на четверть-треть быстрее чем Huawei E3372 воткнутый прямо в комп через специальный usb-удлинитель из двух коробочек,соединенных витой парой.

Обраружилось что дебиановский dhclient не может получать адрес с модема потому что не умеет работать с raw_ip интерфейсами. Ему надо 802-3. А вот udhcpc работает и адрес получает. Поэтому не получилось прописать интерфейс wwan0 в дебиановский /etc/network/interfaces - там dhclient используется. Так что запускаю самодельным скриптом.

Пока непонятно что будет при обрывах связи и как вообще в qmi режиме за этим следить и перезапускать. Или модем сам будет переустанавливать связь? Посмотрим. Тут у нас бывают дни когда связь рвется чуть ли не каждые полчаса - видимо помехи в эфире.

Не получилось запустить программу mdma под wine. С Хуавеем я ее работать заставлял,уровень сигнала показывает. А тут приходится командой at+csq смотреть из терминала или через qmicli. Кстати, с теми же двумя моими антеннами с которыми Хуавей показывал -83…-85 dBm, этот показывает -77.

qmicli -d /dev/cdc-wdm0 --nas-get-signal-strength
[/dev/cdc-wdm0] Successfully got signal strength
Current:
        Network 'lte': '-77 dBm'
RSSI:
        Network 'lte': '-77 dBm'
ECIO:
        Network 'lte': '-2.5 dBm'
IO: '-106 dBm'
SINR (8): '9.0 dB'
RSRQ:
        Network 'lte': '-8 dB'
SNR:
        Network 'lte': '14.0 dB'
RSRP:
        Network 'lte': '-103 dBm'

Антенны высоко стоят,далеко глядят :)

Кстати,нашел хорошие объяснения что значат все эти буквы и цифры - вдруг кому из читающих интересно будет: https://help.venntelecom.com/support/solutions/articles/44001930601-how-to-interpret-ec-io-sinr-rssi-rscp-rsrp-rsrq-parameters-in-2g-3g-lte-routers

Вобщем - мне понравилось как это работает. Разве что одноплатник ,в котором модем, долго загружается. Его надо сначала включить,потом уже комп включать. Иначе usbip не прицепится - оно само не умеет,и при перезагрузке одноплатника клиент сам тоже не восстанавливает соединение. Но для стационарного использования всё это не критично. Один раз включил и на несколько часов. Если конечно виснуть и глючить модем не будет. Но не должен - он же промышленным считается.

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

Использовать USB-over-IP (USB/IP). Стандартный модуль ядра Linux

Благодарю за полезный совет. Я им воспользовался и вот уже неделю оно работает именно так как и хотелось - изображает что модем воткнут в настольный комп,хотя на самом деле он подключен к одноплатнику на чердаке дома. Каких-то особых нареканий на работу модуля usbip нет. Ну кроме того что надо не забывать «отмонтировать» модем перед перезагрузкой компа,иначе демон работающий на одноплатнике считает модем занятым и не дает повторно подключиться.

Но есть такая мелочь - на настольном компе ядерный модуль всё время сыплет в лог вот такими сообщениями:

Mar 26 22:39:58 kernel: vhci_hcd: unlink->seqnum 305737
Mar 26 22:39:58 kernel: vhci_hcd: urb->status -131
Mar 26 22:39:58 kernel: vhci_hcd: unlink->seqnum 305738
Mar 26 22:39:58 kernel: vhci_hcd: urb->status -131
Mar 26 22:39:58 kernel: vhci_hcd: unlink->seqnum 305739
Mar 26 22:39:58 kernel: vhci_hcd: urb->status -131
Mar 26 22:39:58 kernel: vhci_hcd: unlink->seqnum 305740
Mar 26 22:39:58 kernel: vhci_hcd: urb->status -131
Mar 26 22:39:58 kernel: vhci_hcd: unlink->seqnum 305741
Mar 26 22:39:58 kernel: vhci_hcd: urb->status -131
Mar 26 22:39:58 kernel: vhci_hcd: unlink->seqnum 305742
Mar 26 22:39:58 kernel: vhci_hcd: urb->status -131
Mar 26 22:39:58 kernel: vhci_hcd: unlink->seqnum 305743
Mar 26 22:39:58 kernel: vhci_hcd: urb->status -131
Mar 26 22:39:58 kernel: vhci_hcd: unlink->seqnum 305744
Mar 26 22:39:58 kernel: vhci_hcd: urb->status -131
Mar 26 22:39:58 kernel: vhci_hcd: unlink->seqnum 305745
Mar 26 22:39:58 kernel: vhci_hcd: urb->status -131
Mar 26 22:39:58 kernel: vhci_hcd: unlink->seqnum 305746
Mar 26 22:39:58 kernel: vhci_hcd: urb->status -131

Раз в несколько секунд примерно,интервал не постоянный. Не знаете ли вы,ну или кто-нибудь еще из присутствующих, что оно пытается этим сказать? Что значит статус -131 ? При этом всё хорошо работает,судя по speedtest.net скорость аж 16 рекламных мегабитов. Заодно выяснил что нет разницы в скорости между режимом работы модема через QMI или через PPP.

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

А зачем NAT если всё отлично работает без NAT? Насколько мне удалось нагуглить - вышеупомянутые сообщения в логе это какая-то отладка которую забыли выключить. Есть даже патч к usbipd от 2024 года,эти сообщения убирающий,но когда он еще до линуксовых дистрибутивов дойдёт.

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

NAT лучше в плане надёжности и производительности по сравнению с USB/IP.

А 1:1 NAT отображает внутренний адрес на внешний целиком, так что ты этого ната не ощутишь. Все нужные порты будут пробрасываться.

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

NAT лучше в плане надёжности и производительности по сравнению с USB/IP.

Утверждение как минимум нуждается хоть в каких-то доказательствах. Вполне может быть что когда-то давно usbip могло плохо работать и это закрепилось в народной памяти.

Я уже пару недель использую usbip и не вижу чтобы у него было плохо ни с производительностью ни с надежностью. Уже успел сравнить работу одного и того же модема и с nat и через usbip,а также сам модем включал как qmi и как ppp. Как минимум speedtest.net во всех случаях показывает одинаковые 16 рекламных мегабитов с этим модемом. Я вообще-то офигел слегка когда такую огромную цифру увидел. Длинные файлы качает на примерно 1300 килобайтов в секунду(wget,curl). Недостаток у usbip пока нашел только один и тот несущественный. Если забыть «отмонтировать» порт и перезагрузить настольный комп,то повторно подключиться не получится - будет говорить что порт уже занят. Ну и при обрыве сети (кабель из разъема вывалился) соединение usbip само потом не восстанавливается. Возможно кстати у кого-то причина недовольства была в этом - если подключение куда-то далеко через нестабильный канал,а не через пару десятков метров локального кабеля как у меня.

Да,за пару недель модем раза три подвисал. В смысле что соединение как бы есть,а трафика нет. Сам модем при этом на AT-команды отвечает,но без его перезапуска соединение не восстановить. Но это явно особенности работы самого модема,никак не связанные с способом подключения его к компу. Используемый до того Huawei e3372 впадал в состояние «соединение есть а трафика нет» существенно чаще. Диагностика при этом показывала потерю регистрации в сотовой сети. Изредка регистрация восстанавливалась сама минут через N,но чаще требовался ручной «пинок». Подозреваю что это связано с «эфирной обстановкой»,с помехами. От моего дома до NATO всего полсотни км,это вполне может влиять. Телефоны тут тоже иногда регистрацию теряют,но они через минуту-другую восстанавливают сами(на экране при этом «поиск сети»).

Удобство же usbip в том,что всё управление модемом оказывается на настольном компе,как будето он в него и воткнут. Не надо лезть по ssh на одноплатник и рулить модемом там.

Самым же удобным способом установки соединения однозначно является pppd потому что имеет больше всего способностей по диагностике и обработке ошибок и обрывов. Всякие qmi,mbim,ndis - требуют или ручных действий или самостоятельного написания каких-то скриптов. При этом как минимум qmi никаких преимуществ в скорости не дает вопреки рекламным воплям продавцов(mbim и ndis скорость не измерял). Также в случае использования pppd нет никаких проблем с получением адреса,в отличие от режима «сетевой карточки» с которой не работает штатный дебиановский dhclient и надо опять писать скрипты.

Что еще можно будет попробовать - это ser2net,sredir,sercd чтобы модемный порт /dev/ttyUSB3 передать с одноплатника на настольный комп. И сравнить это с передачей портов через usbip.

Пожалуй единственным и при этом малоинтересным преимуществом использования модема в режиме qmi является возможность получить от сотового оператора IPv6 адрес. При использовании pppd такое не сделать. Но работает «операторский» IPv6 хуже чем получаемый через туннель teredo - Tor не соединяется,книжки с Флибусты тоже не качает. Через teredo - соединяется и качает.

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

PPP это не Ethernet, его не добавить в бридж. У него нет L2-слоя как такового.

Раскопал этот вопрос с бриджем - может информация вам пригодится если кого-то консультировать будете.

Так вот, модемы в режиме qmi могут использовать форматы пакетов или «802-3» (с eth-заголовками) или «raw-ip» без таковых. Особо дорогие модемы от Sierra умеют и так и так. У меня более старый и дешевый модем Quectel EC25,он умеет только raw-ip.

Далее, модуль в ядре тоже может использовать оба режима,переключается через echo в файлик в /sys. Чтобы работало - должен быть включен одинаковый режим в модуле и в модеме. Если в модуле включен 802-3 (а это по умолчанию после загрузки) то у модемного интерфейса будет mac адрес и его можно добавить в бридж. Но если модем 802-3 не умеет,как мой, то конечно ничего работать не будет. Если же модулю переключить режим на raw-ip то mac-адрес у него исчезает и в бридж его естественно не добавить. Понятно,что если модем умеет только raw-ip то сделать из него бридж не получится. А вот дорогие модемы от sierra могут,если их в режим 802-3 включить. Также,благодаря наличию более продвинутого режима 802-3 на дорогих модемах - с ними работает штатный дебиановский dhclient. Соответственно, можно прописать модемный интерфейс в /etc/network/interfaces и он будет сам подниматься при загрузке. С моим модемом так не получится потому что dhclient с ни не работает,а для автоподнятия используется именно он. Пришлось написать скрипт с использованием udhcpc,который умеет получать адрес с модема,работающего в режиме raw-ip, и поднимать интерфейс руками.

Выяснить что умеет модем - не так-то просто. У команды qmicli есть опция установки формата данных. И есть опция посмотреть текущую конфигруация. Так вот, попытка выставить 802-3 завершается для моего модема успешно,но если после этого посмотреть что там стоит то будет все равно raw-ip. Такой вот казус. На предмет согласования и установки форматов обмена данными между модемом и ядерным модулем можно почитать скрипт qmi-network в Дебиане(может и еще где-то он есть). Скрипт этот к сожалению плохо обрабатывает всякие ошибки,хотя при отсутствии ошибок связи исправно поднимает соединение.

Есть намного более продвинутый скрипт https://github.com/telit/tqmi-connect. В нем можно подсмотреть много интересных способов использования команды qmicli. На моем модеме он сработал и смог поднять dualstack соединение ipv4+ipv6. Но при этом не смог поднять ipv4 отдельно,без «операторского» ipv6. А я предпочитаю «туннельный» ipv6 - он лучше работает. Поэтому я этот скрипт использовать не стал.

И вообще собираюсь в ближайшее время эксперименты с режимом qmi закончить и вернуть более удобный pppd. Тем более что судя по измерениям speedtest разницы никакой нет. Что так 16 рекламных мегабитов показывает что эдак. Зато pppd хорошо обрабатывает ситуации обрыва связи и может сам перезапускать модем. А сделать из моего модема бридж всё равно невозможно.

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

Ты не пробовал использовать ModemManager + NetworkManager?

Не вижу смысла в них при простой конфигурации с единственным радиомодемом и единственным подключением - всё это отлично работает через pppd. У меня уже полтора десятка лет работает. В случае же использования модема в режиме сетевой карточки просто нет нормальных способов обработки обрывов связи. Потому что в случае глюков связи этот сетевой интерфейс не «ложится» как это делает pppd,а остается поднятым. Но связи нет. Соответственно работающие с сетью программы пытаются слать пакеты в никуда и в лучшем случае отваливаются по очень длительным таймаутам. А могут и образовываться подвисшие tcp-соединения даже если потом данные снова пойдут. Всех этих проблем просто нет если используется pppd. Вот уж что вылизано и работает отлично именно с нестабильными радиолинками. Просто те,кто пишет линуксовый софт, не живут в отдалённой сельской местности и не имеют возможности протестировать его работу в таких условиях. В городе, где вышку сотового оператора видно из окна, все вышеизложенные рассуждения не актуальны.

Да, реклама обещала что в режиме qmi модем будет работать быстрее. Реальные измерения посредством speedtest.net в условиях сельской местности показали что нет. Как через ppp показывает 16 рекламных мегабитов,так и через qmi тоже самое.

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