:: Главная bs0dd.net :: Гостевая книга :: FAN-сайт Nokia Phones :: :: Электроника МК :: Архив Nokia 92xx :: Kannel для Windows :: Новость №7СПИСОК WAP 1.x: НастройкаВ этой заметке описывается процесс настройки WAP-шлюза (Kannel) и Dial-in сервиса для
осуществления WAP-соединения на старых телефонах с браузером стандарта WAP 1.x.
1. Немного WAP теорииДля чего же нужны такие серверные заморочки? Рассмотрим общую схему WAP соединения для CSD телефона (WAP over CSD):Как видно, телефон не способен получать данные напрямую с HTTP(S) сервера, на котором находятся страницы формата WML (хотя поздние WAP 1.x телефоны имели подержку и полноценных HTML страниц). Для начала ему, конечно, нужен Dial-in сервер с GSM модемом, с которым, посредством технологии CSD (Circuit Switched Data), телефон устанавливает соединение (звонит по номеру) и получает доступ в Интернет. Ранее такие "номера доступа" были у самих операторов (c оплатой за время пользования), однако сейчас (конец 2023 года) у большинства операторов Dial-in сервера отключены. Более того, в некоторых случаях оператор и вовсе отключает поддержку CSD в сети (при попытке позвонить звонок тут же сбрасывается), требуя подключения отдельной услуги (платной или бесплатной). В наиболее худшем случае у оператора и вовсе может не быть информации о CSD в его сети. Одно можно сказать точно - для организации своего Dial-in сервера необходима поддержка CSD со стороны вашего оператора сети - подробности по этому поводу нужно уточнять у него. В случае с телефоном, имеющим поддержку GPRS (WAP over GPRS) ситуация резко меняется в лучшую сторону. Из цепи исключается Dial-in сервер: Однако, в обоих случаях не исчезает необходимость во втором (и, пожалуй, основном) сервере. Речь о WAP-шлюзе. По сути, его задача выполнять всю "грязную" работу вместо мобильника. Первые телефоны с WAP были достаточно слабы, поэтому основную нагрузку по работе с DNS запросами, HTTP(S) сервером и компиляцией файлов WML/WMLScript в бинарный формат (для экономии трафика и оперативной памяти телефона, а также упрощения механизма парсинга в браузере устройства) возложили на шлюз. Как и Dial-in сервера, шлюзы ранее также присутствовали у операторов, а у некоторых имеются и до сих пор, но могут требовать использования специального APN профиля, трафик по которому стоит сильно дороже обычного GPRS. 2. Настройка WAP-шлюза Kannel: WindowsНастраивать свой сервер, конечно, не обязательно. Существуют бесплатные независимые WAP-шлюзы, для пользования которыми достаточно вписать их IP-адрес в профиль телефона. Список доступен на bs0dd.net/gateway_ru.Однако, для надежности и уверенности всегда полезно иметь свой сервер (необходим разве что публичный ("белый") IP адрес). Программное обеспечение WAP-шлюза в большинстве случаев было платным, стоило недешево и рассчитано было на операторов сотовой сети, окупавших шлюз средствами рядовых пользователей конечно же. Здесь выгодно отличается шлюз Kannel (www.kannel.org) с открытым исходным кодом. Пожалуй, единственный бесплатный шлюз. Он идеально подходит для нашего случая. К сожалению, официально Kannel не имеет сборки для Windows, поэтому пришлось собрать комплект самому. Скачать можно на подсайте winkannel.bs0dd.net. Для загрузки рекомендуется версия 1.4.5. Установка достаточно проста. Распаковываем архив в любое место. Нас интересует скрипт startwap.bat, он запускает модули Bearerbox (модуль-ядро) и Wapbox (WAP-модуль). Базовая конфигурация уже записана в файл kannel.conf. Более тонко шлюз можно настроить по инструкции на официальной странице: www.kannel.org/userguide.shtml. Запускаем скрипт и видим перед собой две консоли. Kannel запущен и готов к работе. 3. Настройка WAP-шлюза Kannel: LinuxВ совместимых с Debian дистрибутивах ситуация обстоит еще проще - Kannel доступен для загрузки через пакетый менеджер APT. Достаточно вписать:
* если команда выполняется не от имени пользователя root. Что касаемо других дистрибутивов - в их пакетных менеджерах наличие Kannel я не проверял. Возможно вам придется собрать его самому. Я полагаю, что пользователь, использующий дистрибутив Linux, отличный от Debian-совместимого, имеет достаточно опыта для сборки приложений и ручной настройки для работы с присутствующей в дистрибутиве системой управления сервисами. 4. Ограничение доступа к приватным ресурсамПоскольку все запросы к HTTP(S) серверам выполняются от имени Kannel, пользователь WAP-шлюза будет иметь доступ к устройствам в локальной сети, что может быть очень нежелательно, особенненно для шлюзов, организованных в домашней сети (мало кто хочет, чтобы через шлюз можно было зайти, например, в настройки роутера).Поэтому рекомендуется запретить шлюзу HTTP и HTTPS доступ к внутренней сети. Cделать это можно с помощью "ремаппинга" (remapping) URL на невалидный адрес:
Если необходимо разрешить доступ к локальному серверу - добавляем "исключение" (внимание на косую черту в конце, она нужна для корректного парсинга строки):
5. Проверка шлюза с помощью эмулятора (в Windows)Проверить работу можно с помощью эмулятора Nokia 3410, с работающим WAP-браузером.Скачать можно здесь: archive.org/details/nokia-3410-sdk. Заходим в "Услуги" (это и есть WAP-браузер) -> "Настройки" -> "Настройки связи" -> "Java DWL" (первый профиль). Задаем домашнюю страницу и IP адрес (локальный 127.0.0.1, если шлюз запущен на этом компьютере, или адрес сервера со шлюзом в локальной сети). Теперь открываем домашнюю страницу ("К себе"). Если со шлюзом все в порядке - страница откроется, а в логах модулей шлюза будет отображаться различная отладочная информация. 6. Проброс порта для шлюзаДля доступа с настоящего телефона необходимо открыть публичный доступ к шлюзу, сделав в роутере проброс порта 9201 на протоколе UDP (шлюз предоставляет свои функции по UDP на портах 9200-9208, но телефоны, как правило, используют порт 9201 и не везде это значение возможно изменить).Настройка проброса зависит от конкретного роутера, поэтому нужно уточнять этот момент в справке к роутеру. 7. Настройка профиля и выход в WAP на реальном телефоне с GPRSЗапущенного WAP-шлюза достаточно для выхода в WAP на телефонах с GPRS (однако недостаточно для CSD, но об этом позднее). Так что можно приступить к конфигурации WAP профиля.Постараюсь дать наиболее общее определение, поскольку у каждого телефона свой браузер и по своему выглядят настройки WAP профиля. В сумме, настройки у профиля должны быть такие:
Если шлюз работает, проброс порта включен и профиль настроен правильно - страница должна открыться. 8. Вниманию пользователей Siemens (Загрузка Java по WAP)Если при попытке загрузить JAR приложение через WAP происходит ошибка:Хотя WAP профиль настроен правильно и страницы открываются - убедитесь, что вы настроили Java профиль. Телефон, по какой-то причине, производит скачивание JAR файлов через прямые HTTP запросы серверу, а потому не использует шлюз и WAP профиль. После настройки убедитесь, что данный профиль выбран по умолчанию для протокола HTTP. Теперь загрузка должна работать корректно. 9. Настройка Dial-in сервиса: подготовкаНастройка Dial-in - дело гораздо более сложное и требовательное. Помимо поддержки CSD звонков на уровне оператора (это нетрудно проверить методом, описанным ниже), необходимо иметь:
В целом, в качестве модема можно использовать даже Nokia 5110, проверено. Если вы все же собираетесь использовать телефон с поддержкой 3G, рекомендуется переключить его в режим принудительного 2G во избежание проблем с приемом CSD звонков. Теперь необходимо убедиться, что ваш оператор не ограничивает CSD звонки в своей сети. Наиболее быстрый способ проверить - создать профиль-"заглушку" в которой указать домашнюю WAP страницу, тип соединения (желательно ISDN, но если не работает можно проверить и аналоговый), любой IP адрес и ваш номер, который установлен в GSM модеме. Если телефон поддерживает HSCSD (14400 бит/с), он позволит выбрать и скорость. Можно попробовать выбрать 14400, но даже в то время далеко не все операторы поддерживали HSCSD, поэтому скорее всего звонок не удастся, тогда ставим 9600 (обычный CSD). Теперь пробуем зайти на домашнюю страницу. Телефон попробует совершить звонок с передачей данных (data call), если на стороне оператора нет никаких ограничений, телефон-модем должен зазвонить, при этом с пометкой, что это звонок с передачей данных. Если так и получилось - вам крупно повезло, можно продолжать настройку Dial-in сервиса. Ну а если звонок не удается, то, к сожалению, на стороне оператора что-то не так, придется выяснять этот вопрос с ним (как я и писал в начале заметки). 10. Настройка Dial-in сервиса: WindowsПрежде всего необходимо установить драйвер для вашего телефона.В моем случае это драйвер для телефонов Nokia. Теперь подключаем телефон. При установке драйверов среди функций телефона появится модем. Он то нам и понадобится. Открываем "Сетевые подключения" -> "Создание нового подключения". "Установить прямое подключение к другому компьютеру" -> "Принимать входящие подключения" -> Выбираем наш модем -> "Запретить виртуальные частные подключения". Теперь создаем пользователя, чьи данные (логин и пароль) будут использоваться для авторизации звонящего в системе. Я создам пользователя "csd" с паролем "123". Здесь необходимо вписать диапазон адресов для сети между компьютером и звонящими клиентами. У нас всего одна телефонная линия, поэтому достаточно диапазона из двух адресов (для сервера и звонящего ему телефона-клиента). Однако тут есть небольшой нюанс... По правильному, нужно указать IP адреса, никак не связанные с сетями, к которым подключен сервер. Например, серверу выдан адрес 192.168.1.30 из сети 192.168.1.0, откуда есть доступ в Интернет. Тогда для Dial-in сети можно использовать, например, 192.168.10.1 и 192.168.10.2, если бы не одно "но"... Между Dial-in сетью и сетью с Интернетом не будет связи! Если на одном сервере находится и Dial-in сервис и WAP-шлюз, то это не проблема, он будет работать с двумя сетями получая и передавая WAP данные с одной и HTTP с другой. Но если нужно дать телефону доступ в Интернет, придется прибегнуть к "грязному" трюку. DHCP сервер роутера первой сети выдает устройствам адреса из диапазона 192.168.1.10 - 192.168.1.150. Т.е. места от 151 до 254 свободны. Там и расположим нашу Dial-in сеть, как бы объединив их вместе. Да, делать так не очень хорошо, но тогда не потребуется настраивать межсетевой роутинг (на несерверной Windows это трудновато). Конкретно у себя я взял адреса 192.168.1.161 и 192.168.1.162, для сервера и клиента соответственно. Теперь у нас есть входящее подключение и компьютер готов обслуживать звонящих на модем. 11. Настройка Dial-in сервиса: LinuxНастройка Dial-in на Linux более гибкая, но при этом гораздо более сложная чем в случае с Windows. Сложна она, главным образом, из за необходимости вписывать команды и править конфигурационные файлы. Никаких вам красивых интерфейсов, и не мечтайте.ВНИМАНИЕ: подразумевается, что все действия выполняются от имени пользователя root. Для начала подключаем телефон. Для большинства производителей USB драйвера к телефону уже интегрированы в систему, поэтому система должна определить наше устройство. Вписываем команду:
Как видно, телефон определился системой (подчеркнут красным цветом). Теперь нас интересует COM-порт, назначенный системой для модема телефона. В Linux портов в привычном нам понимании не существует. Есть лишь "файлы", при записи и чтении которых фактически идет работа с COM-портом. Назову их файл-портами. Обычно, в случае с телефонами на USB их модемам назначаются файл-порты /dev/ttyACM* или /dev/ttyUSB*, где * - цифра от 0. В случае с использованием телефона, имеющего COM кабель, его модем должен быть доступен (если это предусмотрено) на файл-порте реального COM, обычно /dev/ttyS* или /dev/ttyUSB* (если COM кабель подключен через USB адаптер). Проверим наличие порта:
Иногда для телефона создается больше одного файл-порта (остальные используются для сервисных функций), поэтому важно проверить, правильно ли выбран порт. Для этого пригодится терминальная программа minicom:
Используя информационные ATI команды можно окончательно убедиться, что это модем нашего телефона. Теперь можно приступить к настройке Dial-in. Для работы потребуются две программы - mgetty и pppd. Первая работает с модемом: ждет звонка, принимает его и передает управление второй программе. Вторая программа представляет из себя сервер протокола PPP. Соответственно она проводит с клиентом процедуру авторизации и, в случае успеха, обеспечивает связь с серверной машиной (и с локальной сетью, если настроен межсетевой роутинг). Установим интересующие нас программы:
Создаем файл Systemd сервиса для mgetty. С его помощью работой Dial-in сервиса можно управлять аналогично шлюзу Kannel.
В файл вставляем следующие строки:
Теперь настраиваем mgetty.
В конец добавляем следующее:
Теперь создаем файл с конфигурацией для конкретного модема:
Создаем пользователя для авторизации. По аналогии с Windows у меня он будет называтся "csd".
Назначаем ему пароль:
После ввода команды программа запросит пароль для пользователя (при этом он не виден на экране). Затем нужно повторно ввести его для подтверждения корректности. Редактируем настройки авторизации pppd:
Добавляем строку с данными нашего пользователя:
Обратите внимание, что пароль должен быть заключен в кавычки. Фактически, на этом настройка Dial-in закончена. Но если требуется прямой доступ в Интернет, нужно настроить межсетевой роутинг (шаг необязательный, можно пропустить его и перейти к запуску mgetty через систему Systemd). Включаем в системе поддержку роутинга. Для этого редактируем файл sysctl:
Нужно раскомменитировать эту строку:
Применяем изменения командой:
Теперь для роутинга нам понадобится фильтр пакетов - iptables (netfilter). Он и будет выполнять роутинг между сетями. Для начала переключим его в режим legacy.
Перед добавлением правила нужно прежде всего узнать название сетевого адаптера, через который мы подключены к Интернету. Вводим:
В моем случае интерфейс называется enp0s3. Создаем правило для iptables:
Проверяем наличие правила в iptables:
Правило, как и положено, находится в таблице POSTROUTING. Чтобы при каждом запуске не терять настройки iptables, можно установить пакет iptables-persistent.
В будущем, если потребуется внести какие-либо изменения в настройки - неободимо вручную сохранить их командой:
Для включения mgetty в список сервисов, автоматически запускаемых при старте системы воспользуемся командой:
В моем случае названием службы будет mgetty@ttyACM0. Для запуска службы используется ключевое слово start (и stop для остановки):
Сервис запущен и ждет звонков от клиентов! Пора настраивать WAP профиль для CSD. 12. Настройка профиля и выход в WAP на реальном телефоне с CSDИмея на сервере WAP-шлюз и Dial-in сервис, можно, наконец, выйти в WAP и на более старом телефоне с CSD.При этом, в данном случае совсем не обязательно настраивать публичный доступ к WAP-шлюзу, достаточно лишь указать внутресетевой адрес сервера (в моем случае 192.168.1.161 для Windows сервера и 192.168.10.1 для Linux сервера), при условии что шлюз запущен на той же машине. Примерные настройки профиля:
Обратите внимание, что в случае с Windows компьютер поднимет трубку на модеме не сразу, а после второго сигнала RING с модема телефона (это примерно 5 секунд). В случае с Linux трубка поднимается сразу по сигналу RING (настраивается параметром rings в этом месте). После установки соединения (в Windows) соответствующий значок появится во входящих подключениях: Если шлюз работает, Dial-in сервер и профиль в телефоне настроены правильно - страница должна открыться. 13. Вниманию людей, открывших свои публичные WAP-шлюзы и Dial-in сервисыЕсли вы организовали свой WAP-шлюз и/или Dial-in сервис и решили сделать его публичным, просьба связаться со мной по контактам на главной странице моего сайта.Сейчас составляется список актуальных WAP-шлюзов, планируется и список Dial-in сервисов (возможно даже открою свой, если появится нормальный USB модем). Буду рад каждому открытому публичному шлюзу и сервису CSD Dial-in. 03 Декабря 2023 года, 23:23:11 CET Комментарии
#1
|| Оставлен: ndevtools || Дата: 05 Июня 2024 года, 19:53:13 CEST |
|
Powered by COMPPAG 0.50 2022-2024 © Compys S&N Systems |