Как запустить собственную GSM-сеть за пять минут при помощи SDR

Приветствую всех!

Давным-давно я уже рассказывал про то, как в домашних условиях поднять GSM-сеть при помощи комплектующих, доступных любому школьнику. И в той статье я мельком упомянул, что идеальным в плане производительности вариантом будет запускать сети при помощи SDR, а не телефонов.

Как запустить собственную GSM-сеть за пять минут при помощи SDR

Итак, в сегодняшней статье поговорим о том, как быть владельцам SDR, желающим запустить свою GSM-сеть. Узнаем, какой софт нужен, чтобы заставить её работать в прямом смысле слова за пять минут. Попутно запустим GPRS и ненадолго побываем в 2007 году. Традиционно будет много интересного.

❯ Суть такова

Как запустить собственную GSM-сеть за пять минут при помощи SDR

Многие помнят тот поистине легендарный пост про то, как из двух телефонов и обычного компьютера собрать базовую станцию. Но всё же у той конфигурации был целый ряд недостатков, которых лишена БС на базе SDR. В свою очередь, единственным минусом того, что будет рассмотрено в данной статье, является высокая стоимость оборудования.Также на просторах Хабра был найден постпро Osmocom в Docker-контейнере, однако за десять лет софт порядком устарел, теперь есть куда более новые версии с большими возможностями и более стабильной работой.И вот в мои руки попал полнодуплексный SDR, а это значит, что самое время попробовать запустить сеть при помощи него и узнать, что же из этого выйдет.

❯ В чём преимущества сети на базе SDR?

В отличие от телефонов, мы будем избавлены от целого ряда проблем, неминуемо возникающих при попытке использовать подобное железо:

  • Диапазон частот. В телефонах используются фильтры, не позволяющие прослушивать входящий трафик. Моя БС работала исключительно из-за их неидеальности, лучшим же решением было бы заменить их, что доступно не каждому ввиду необходимости наличия оборудования и хороших навыков пайки, дабы не запороть плату телефона. SDR лишён этой особенности.
  • Генератор. Точности внутреннего генератора SDR с лихвой хватит, чтобы обеспечить корректную работу сети. В телефонах такого устройства нет, поэтому нам приходилось ловить тактовый сигнал от других коммерческих вышек.
  • Подключение к компьютеру. В случае с SDR не придётся заниматься ерундой типа пайки проводов, проверки заряда аккумулятора и тому подобными вещами, достаточно просто подключить его к ПК и больше не думать о том, что причины неработоспособности сети кроются где-то здесь.
  • Производительность. В отличие от телефонов, можно создать конфигурацию, где будут доступны сразу и звонки, и SMS, и интернет.
  • Стабильность. Сеть на базе SDR при правильной настройке не падает.
  • Поддерживаемые устройства. При запуске сети на базе телефонов я смог подключить к ней далеко не все устройства, какие у меня были. В частности, телефон от Nokia смог поймать её только один раз. В случае же с SDR все имевшиеся у меня телефоны, которые участвовали в испытаниях, подключались без проблем. Товарищ axilirator подсказал, что связано это с частотной характеристикой сигнала, так как телефон после попытки подключения к операторской сети ориентируется на неё, а лабораторную не видит. В моём случае эта проблема если и возникала, то устранялась банальной перезагрузкой трубки.

Таким образом, если у вас есть желание серьёзно заниматься исследованием устройства и работы сотовых сетей, приобретение полнодуплексного SDR должно стать вашим первым шагом.

❯ Обзор оборудования

Как запустить собственную GSM-сеть за пять минут при помощи SDR

А вот и SDR. Это USRP B200mini-i, которого для данных опытов хватает с избытком. Само собой, к нему понадобится и компьютер, который будет им управлять. Виртуалка или Raspberry не подойдёт.

Как запустить собственную GSM-сеть за пять минут при помощи SDR

Далее понадобятся телефоны, которые будут ловить сеть. В них должны быть симки, какие именно — неважно, лишь бы были. Вот, например, Samsung Galaxy M12, уже фигурировавший в опытах с LTE.

Как запустить собственную GSM-сеть за пять минут при помощи SDR

Три легенды кнопочных телефонов — Nokia 3310, Siemens CX75, Sony Ericsson K750i.

Как запустить собственную GSM-сеть за пять минут при помощи SDR

Nokia E90, крутейший девайс, совмещающий в себе кнопочный телефон, коммуникатор на Symbian и клавиатурный КПК.

❯ Софт

Как и в прошлых опытах с SDR, использовать будем дистрибутив DragonOS. Там уже есть все необходимые компоненты для запуска сети, достаточно лишь слегка поменять настройки. Уже не придётся ни собирать софт из исходников, ни искать примеры файлов конфигурации.

Как и в прошлых статьях, ссылки на всё необходимое я оставлю в конце.

❯ Конфигурация

Теперь, когда ОС загружена, можно приступать к настройке.Открываем папкуosmo-nitb-scripts(ярлык на неё есть в меню «Пуск» в разделе «Other»), а в ней — папкуconfigs. Нас интересует файл openbsc.cfg.

Как запустить собственную GSM-сеть за пять минут при помощи SDR

Вообще, сеть будет работать и с тем файлом, что есть по умолчанию, однако SMS не будут ходить из-за неправильной настройки таймслотов и протокола SMPP. Так что приводим файл к следующему виду:

! ! OpenBSC configuration saved from vty gprs mode none | phys_chan_config SDCCH8 ! ! password foo ! line vty no login ! e1_input e1_line 0 driver ipa network network country code 250 mobile network code 10 short name MaFrance long name MaFrance auth policy accept-all location updating reject cause 13 encryption a5 0 neci 1 rrlp mode none mm info 1 handover 0 handover window rxlev averaging 10 handover window rxqual averaging 1 handover window rxlev neighbor averaging 10 handover power budget interval 6 handover power budget hysteresis 3 handover maximum distance 9999 subscriber-keep-in-ram 0 bts 0 type sysmobts band GSM900 cell_identity 1087 location_area_code 13415 training_sequence_code 7 base_station_id_code 56 ms max power 30 rxlev access min 0 periodic location update 1000 cell reselection hysteresis 14 cell reselection offset 120 temporary offset 0 penalty time 20 channel allocator ascending rach tx integer 9 rach max transmission 7 ip.access unit_id 1801 0 oml ip.access stream_id 255 line 0 gprs mode none trx 0 rf_locked 0 arfcn 25 nominal power 34 max_power_red 20 rsl e1 tei 0 timeslot 0 phys_chan_config CCCH+SDCCH4 hopping enabled 0 timeslot 1 phys_chan_config TCH/H hopping enabled 0 timeslot 2 phys_chan_config TCH/H hopping enabled 0 timeslot 3 phys_chan_config TCH/H hopping enabled 0 timeslot 4 phys_chan_config TCH/H hopping enabled 0 timeslot 5 phys_chan_config TCH/H hopping enabled 0 timeslot 6 phys_chan_config TCH/H hopping enabled 0 timeslot 7 phys_chan_config TCH/H hopping enabled 0 nitb assign-tmsi subscriber-create-on-demand random 100 199 smpp local-tcp-port 2775 system-id OSMO-SMPP policy accept-all esme OSMPP password 1234 osmocom-extensions

Коротко пройдёмся по параметрам.

  • ARFCN — самый важный. Это номер канала, на котором будет работать наша вышка. Необходимо воспользоваться приложением по типу Net Monitor, чтобы узнать, на каких каналах работают вышки в округе и выбрать незанятый.
  • LAC. Код зоны, использующийся для определения местоположения. Вообще, он не влияет на работу, но некоторые телефоны могут не подключаться, если он равен 0 или 1.
  • CID. Код соты. Выбирается аналогично LAC.
  • MCC — код страны. Для России это 250. Можно выбрать другой, но стоит учитывать, что не все телефоны смогут подключиться к такой сети.
  • MNC — код сети. Нужно открыть список сотовых операторов (он есть, например, тут или тут)
  • Long name и Short name. Это, как нетрудно догадаться, имя сети, отображаемое в строке состояния на телефоне. Устанавливается любое желаемое.

Теперь разберёмся с таймслотами. Каждый из них конфигурируется на определённый тип канала. Подробнее о них можно почитать тут.

Теперь, когда параметры изменены, запускаем нашу сеть:

sudo ./main.py

Если у вас не LimeSDR, а USRP, то запускать надо следующим образом:

sudo ./main.py -d uhd

Если всё было сделано правильно, то на экране должно будет появиться примерно следующее:

Как запустить собственную GSM-сеть за пять минут при помощи SDR

А через несколько секунд — вот это:

Как запустить собственную GSM-сеть за пять минут при помощи SDR

Всё, сеть работает. На всё ушло меньше пяти минут не считая времени загрузки ОС. Можно пробовать подключаться.

В этом окне отображаются IMSI абонентов, подключившихся к сети, а также их номера.

Как запустить собственную GSM-сеть за пять минут при помощи SDR

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

Как запустить собственную GSM-сеть за пять минут при помощи SDR
Как запустить собственную GSM-сеть за пять минут при помощи SDR

Запустились и две более новые легенды. Всё, можно звонить и отправлять SMS. Точно так же, как мы делали это при помощи телефонов.

❯ А что насчёт интернета?

Но, конечно, при помощи Osmocom можно поднять и GPRS. Причём в случае использования SDR можно получить полноценную сеть, где будут работать все составляющие: звонки, SMS, USSD и пакетные данные. В случае использования телефонов нам пришлось бы либо подключать дополнительные моторолы, либо потерять возможность звонить.

Ну что же, самое время попробовать запустить GPRS.

❯ GPRS и как он работает

И перед началом экспериментов традиционно разберёмся с тем, как пакетный трафик в 2G-сети перенаправляется во внешний мир.GPRS имеет свою опорную сеть. Она представляет собой расширение для сети GSM, добавляющее в неё возможность обмена пакетными данными.Итак, сеть с поддержкой GPRS дополнительно включает в себя следующие компоненты:

  • PCU (Packet Control Unit). Это устройство управления пакетами, позволяющее в паре с контроллером БС отправлять и принимать те самые данные.
  • SGSN (Serving GPRS Support Node). Этот узел отвечает за обслуживание абонентов — обмен пакетами, тарификацию, проверку APN (Access Point Name) точки доступа, распределение ресурсов.
  • GGSN (Gateway GPRS Support Node). Шлюз, соединяющий сотовую сеть с другими сетями передачи данных.

Для работы GPRS на телефоне должна быть создана точка доступа, включающая в себя APN, логи и пароль. Обычно она создаётся сразу при регистрации в сети оператора и участие пользователя в этом не требуется.

❯ Конфигурация

Как и в прошлом случае, для начала необходимо настроить сеть.

Как запустить собственную GSM-сеть за пять минут при помощи SDR

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

Теперь открываем opengts_egprs.cfg из папки configs. И приводим его к следующему виду:

! ! OpenBSC configuration saved from vty ! ! password foo ! line vty no login ! e1_input e1_line 0 driver ipa e1_line 0 port 0 no e1_line 0 keepalive network network country code 250 mobile network code 10 short name MaFrance long name MaFrance auth policy accept-all authorized-regexp .* location updating reject cause 13 encryption a5 0 neci 1 rrlp mode none mm info 1 handover 0 handover window rxlev averaging 10 handover window rxqual averaging 1 handover window rxlev neighbor averaging 10 handover power budget interval 6 handover power budget hysteresis 3 handover maximum distance 9999 subscriber-keep-in-ram 0 bts 0 type sysmobts band GSM900 cell_identity 7229 location_area_code 7619 training_sequence_code 7 base_station_id_code 63 codec-support fr efr amr ms max power 15 rxlev access min 0 periodic location update 1000 cell reselection hysteresis 14 cell reselection offset 120 temporary offset 0 penalty time 20 radio-link-timeout 32 channel allocator ascending rach tx integer 9 rach max transmission 7 channel-descrption attach 1 channel-descrption bs-pa-mfrms 5 channel-descrption bs-ag-blks-res 1 ip.access unit_id 1801 0 oml ip.access stream_id 255 line 0 gprs mode egprs gprs routing area 1 gprs cell bvci 1234 gprs nsei 1234 gprs nsvc 0 nsvci 1234 gprs nsvc 0 local udp port 23001 gprs nsvc 0 remote udp port 23000 gprs nsvc 0 remote ip 127.0.0.1 no force-combined-si trx 0 rf_locked 0 arfcn 100 nominal power 34 max_power_red 20 rsl e1 tei 0 timeslot 0 phys_chan_config CCCH+SDCCH4 hopping enabled 0 timeslot 1 phys_chan_config SDCCH8 hopping enabled 0 timeslot 2 phys_chan_config TCH/H hopping enabled 0 timeslot 3 phys_chan_config TCH/H hopping enabled 0 timeslot 4 phys_chan_config TCH/H hopping enabled 0 timeslot 5 phys_chan_config TCH/H hopping enabled 0 timeslot 6 phys_chan_config PDCH hopping enabled 0 timeslot 7 phys_chan_config PDCH hopping enabled 0 nitb assign-tmsi subscriber-create-on-demand random 100 199 smpp local-tcp-port 2775 system-id OSMO-SMPP policy accept-all esme OSMPP password 1234 osmocom-extensions

Здесь активирован GPRS, а также изменены два таймслота — теперь им выделены пакетные данные. Настройки, касающиеся сети (имя, канал, код...) остались те же самые, их также нужно изменить, как в прошлый раз.

Как запустить собственную GSM-сеть за пять минут при помощи SDR

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

sudo ./main.py -d uhd --gprs -i (тут ваше имя подключения)

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

Как запустить собственную GSM-сеть за пять минут при помощи SDR

Для проверки был взят всё тот же смартфон от Samsung. Подключаемся к сети, включаем сотовые данные, и в строке состояние появляется «EDGE». Отлично, работает.

Как запустить собственную GSM-сеть за пять минут при помощи SDR

У меня было много опасений, что интернет работать не будет. Во-первых, куча приложений, стремящихся дорваться до сети во что бы то ни стало, во-вторых, сам размер сайтов, не позволяющий пропихнуть их через канал, по скорости недалеко ушедший от модемного. Но легковесные сайты по типу old-dos.ru вполне открылись.

Как запустить собственную GSM-сеть за пять минут при помощи SDR

Далее я подключил и свой основной телефон. Он тоже отлично заработал и подхватил созданную сеть.

❯ Возвращаем свой две тысячи седьмой

Пожалуй, одна из немногих составляющих старого железа и «тех» времён в принципе, к которой я не испытываю ностальгии, — мобильный интернет.

По поистине конским тарифам (единицы рублей за мегабайт) предоставлялось весьма слабенькое соединение.

Мобильные версии сайтов тогда тоже сильно отличались от привычных нам. Существовало два протокола — WAP (созданный специально для GSM-сетей, работающий через шлюз поверх GPRS или SMS), в котором передавалиись страницы в формате WML, и обычный HTTP. Позднее префикс «wap.» получили вообще почти все сайты, адаптированные под сотовые телефоны.

Сайты эти тоже были весьма своеобразными — на типичной страничке было в наличии практически всё, от новостей и мобильного софта (с непременными разделами для J2ME, WM и Symbian) до знакомств и дешёвой эротики. Многие телефоны из использовавшихся в те времена до сих пор хранят на своих картах памяти картинки с котиками, скачанные по пять рублей за мегабайт.

Также существовал такой бич для баланса как «premium-rate сайты». Суть их заключалась в том, что при заходе на с виду обычный сайт абонент мог не только просадить весь свой баланс, но и уйти в глубокий минус — тарификация по ним была повышенной (вплоть до сотен рублей за мегабайт), отчего заход на такие страницы обходился во всех смыслах дорого (на безлимитных тарифах они всё равно списывали деньги). Не обходилось и без грязного SEO (в духе тех времён) в виде размещения на страницах элементов с вот таких вот сайтов по типу «невидимых» картинок и тому подобного материала.

К слову говоря...

Нечто подобное сейчас тоже существует, правда, в куда меньших масштабах (например, у Tele2 — на страницах ошибок по типу 404).Случайный жмяк по рекламе (которую ещё иногда делают картинкой в виде видеоплеера, чтобы кто-то намеренно нажал), и пользователь немедленно получает подписку за двадцать-тридцать рублей в сутки, отказаться от которой очень сложно.

Для работы полноценного WAP сейчас понадобится WAP-шлюз, поэтому в данной статье ограничимся только HTTP.

Как запустить собственную GSM-сеть за пять минут при помощи SDR

Увы, Siemens так и не смог загрузить ни один сайт. То ли что-то с настройкой точек доступа, то ли его браузер поддерживает только WML, но ничего больше унылой надписи «Соединение...» из него выжать не удалось.

Как запустить собственную GSM-сеть за пять минут при помощи SDR

Поэтому на помощь был призван Nokia E90, который смог загрузить вначале old-dos.ru…

Как запустить собственную GSM-сеть за пять минут при помощи SDR

… а потом и какой-то древний мобильный сайт.

Как запустить собственную GSM-сеть за пять минут при помощи SDR

А вот он же на экране Nokia N95.

Как запустить собственную GSM-сеть за пять минут при помощи SDR

Интересно, обновляются ли они? Или эти «обновления дня» остаются такими уже лет десять?

Как запустить собственную GSM-сеть за пять минут при помощи SDR

Отправляемся гуглить и находим список из всё ещё живых старых сайтов. А вот и ещё один экземпляр…

Как запустить собственную GSM-сеть за пять минут при помощи SDR

Забавно — программы для WM, а значок от Win8/WP…

Как запустить собственную GSM-сеть за пять минут при помощи SDR

lankost.net, один из крупнейших ныне живых.

Как запустить собственную GSM-сеть за пять минут при помощи SDR

wap.polifonia.ru.

Как запустить собственную GSM-сеть за пять минут при помощи SDR

А вот и WML-версия. Так выглядели сайты на заре мобильного интернета — просто белый фон, чёрный текст и синие ссылки.

Как запустить собственную GSM-сеть за пять минут при помощи SDR

Далее я попробовал открыть что-то из этих сайтов на Sony Ericsson. old-dos.ru открыть он не смог — после десяти минут напряжённой загрузки крякнул и выдал ошибку. А вот ранее показанные открылись без проблем.

Как запустить собственную GSM-сеть за пять минут при помощи SDR

Всё успешно работает.

Как запустить собственную GSM-сеть за пять минут при помощи SDR

Да, атмосферу «тех» годов удалось воссоздать практически полностью. Единственное отличие — платить за эти похождения уже не придётся, ведь работает всё через безлимитный домашний интернет.

❯ Вот как-то так

Как можно видеть, при помощи SDR сеть запускается буквально в несколько щелчков мышью.Увы, GPRS сейчас практически умер, как я верно заметил в посте про модемы, если сейчас на телефоне горит «E», то, по сути, интернета нет — ни один сайт не грузится, а приложения по типу Telegram выдают вечное «Waiting for network...». Сейчас GPRS используется по большей части для околопромышленного использования — через него работают кассовые аппараты и терминалы и передают телеметрию. Впрочем, даже в этих областях он вытесняется куда более новыми стандартами связи.

Такие дела.

И помните — война никогда не меняется.

Как запустить собственную GSM-сеть за пять минут при помощи SDR

Автор текста: MaFrance351

Больше интересных статей в нашем блоге на Хабре и телеграм-канале.

Хочешь стать автором (или уже состоявшийся автор) и есть, чем интересным поделиться в рамках наших блогов — пиши сюда.

4.9K4.9K показов
863863 открытия
6 комментариев

Пиздец, пойду грабить монобогдана

Ответить

И помните — война никогда не меняется.не пизди

Ответить

Высеры кодзимы за примеры не считаются.

Ответить

А как сделать так, чтобы телефон подключался к этому sdr, а не бс оператора?

Ответить

Сперва пикабу, теперь дтф... где в следующий раз тебя ждать?)

Ответить

Мы ещё на Хабре есть. :)

Ответить