В данной статье освещаются сетевые аспекты профессиональной инсталляции контроллера на производственных и коммерческих объектах.

Выбор сетевой комплектации контроллера

Контроллеры Wiren Board 6 поставляются с разным набором сетевых устройств. Необходимо понять, в каких условиях будет эксплуатироваться контроллер и какая комплектация будет оптимальной.

Минимальная комплектация

Контроллеры Wiren Board 6 в любой комплектации имеют два Ethernet-интерфейса 100 Мбит/с (eth0, eth1) на борту.

Расширенные возможности

Опционально контроллеры поставляются с Wi-Fi-интерфейсом (wlan0) (802.11bgn 2.4G), с 3G-модемом (WCDMA/HSPA, GSM/GPRS/EDGE) или 2G-модемом (GPRS). С помощью любого из них вы можете подключить контроллер к интернету, а с помощью Ethernet и Wi-Fi — еще и к локальной сети. 3G-модем реализован на чипе SIMCom SIM5300E, 2G-модем реализован на чипах SIMCom SIM800 или Neoway M660A, Wi-Fi — на чипе Realtek 8723BU.

Заводская конфигурация сетевых устройств

Ethernet

В заводской конфигурации в контроллере настроены оба Ethernet-интерфейса и Wi-Fi и loopback. Файл сетевых настроек — /etc/network/interfaces. Интерфейсы eth0/1 не имеют фиксированного адреса и получают сетвые настройки по DHCP.

Wi-Fi

На Wi-Fi интерфейсе wlan0 по умолчанию поднята открытая точка доступа, с фиксированным адресом 192.168.42.1, клиенты получают адреса по DHCP, которые раздает демон dnsmasq, в диапазоне 192.168.42.50 — 192.168.42.150. SSID беспроводной сети контроллера формируется из префикса “WirenBoard-” и серийного номера контроллера, нанесенного на боковой наклейке. В беспроводной сети контроллер имеет не только IP-адрес, но и DNS-алиасы для удобства подключения, wiren, wiren.local, wiren_board, wirenboard.local, wirenboard.

GPRS

Подключение к сети передачи данных сотовых операторов не включено по умолчанию и требует настройки. Контроллер имеет да разъема для установки СИМ-карт, но в настоящее время программно поддерживается только первый.

Опционально контроллер комплектуется 3G или 2G-модемами (модемы несъемные и распаиваются на плате на производстве).

3G-модем

Модем представлен в системе двумя устройствами: /dev/ttyGSM (линк на один из консольных портов ttymxc), подключенного к UART-интерфейсу чипа модема, и составного USB-устройства /dev/ttyACM0-6, для коммуникации используется ttyACM0. Ограничения UART-порта не позволяют реализовать весь потенциал скорости передачи данных в 3G-сетях (теоретически до 7,2 Мбит/с на приём и до 5,76 Мбит/с на передачу). Порт ttyACM0 ограничен только скоростью передачи данных интерфейса USB2.0 (теоретически — до 280 Мбит/с).

Наличие двух интерфейсов позволяет одновременно использовать первое устройство (/dev/ttyGSM) для отправки AT-команд (узнать уровень сигнала сотовой связи, отправить SMS, USSD-запрос баланса и проч.) через программы minicom или gammu, а второе (/dev/ttyACM0) — для сетевой коммуникации.

В контроллере доступна аппаратное управление включением/выключением модема через его вход PWRKEY, состояние которого управляется одним из GPIO процессора. Для пользователя интерфейс управления питанием модема предоставляет команда wb-gsm с опциями on, off, reset, restart_if_broken.

2G-модем

Максимальная скорость передачи данных в GPRS составляет 85,6 кбит/с, чего явно недостаточно для передачи больших объемов данных. GPRD-канал может использоваться для доступа к интерфейсу командной строки (ssh) или для отправки SMS. 2G-модемы представлены в системе одним устройством, /dev/ttyGSM. Одновременная передача данных и AT-команд в 2G-модеме не реализована.

GSM-антенны

Контроллер опционально комплектуется одной из двух GSM-антенн: выносной, на кабеле 2,5м, с коэффициентом усиления 3,5 дБ, или короткой штыревой антенной, навинчивающейся прямо на SMA(female)-разъем контроллера. При монтаже контроллера в металлических боксах следует использовать выносную антенну. Штатные антенны контроллера обеспечивают связь в условиях хорошего приема. В сложных радиоусловиях необходимо приобретать антенны с бóльшим коэффициентом усиления или направленные антенны. Диапазон частот 3G-антенн — 1900-2100 МГц, 2G — 900/1800 МГц. Разъем кабеля антенны — SMA(male).

Настройка сетевых интерфейсов

Настройка Ethernet-интерфейсов

Часто возникает необходимость, чтобы контроллер имел постоянный адрес в локальной сети. Это достигается либо настройками DНCP-сервера (привязкой IP-адреса к MAC-адресу сетевого интерфейса контроллера), либо явным указанием IP-адреса в сетевых настройках.

Рассмотрим более подробно, как задать фиксированный адрес на Ethernet-интерфейсе.

Для настроек статического адреса задайте следующую конфигурацию:

       
 auto eth0
 iface eth0 inet static
 address 192.0.2.7
 netmask 255.255.255.0
 gateway 192.0.2.254
 hostname Wirenboard


По умолчанию, если адрес статический, используются DNS-сервера, перечисленные в файле /etc/resolv.conf, символическая сыылка на /mnt/data/etc/resolv.conf.

Можете добавлять свои DNS-сервера по аналогии:

 nameserver 192.168.0.1
 nameserver 8.8.8.8
 nameservеr 8.8.4.4

Эти сервера использует сервис dnsmasq, который обслуживает локальные DNS-запросы на контроллере. Чтобы понять, какие именно upstream-сервера используются dnsmasq в настоящий момент, выполните команды

 service dnsmasq stop
 dnsmasq --no-daemon --log-queries
 ^C
 service dnsmasq start  

Программа dnsmasq выведет в консоль, какие сервера используются, например:

 dnsmasq: using nameserver 192.168.0.1#53
 dnsmasq: using nameserver 8.8.8.8#53
 dnsmasq: using nameserver 8.8.4.4#53

Настройка Wi-Fi

Параметры точки доступа определяет демон hostapd (файл настроек /etc/hostapd.conf). Чтобы подключаться к контроллеру по Wi-Fi по защищенному каналу, допишите в конец файла /etc/hostapd.conf следующую конфигурацию:

wpa=2
wpa_passphrase=your_password
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP CCMP
rsn_pairwise=TKIP CCMP

Перезапустите hostapd: /etc/init.d/hostapd restart, после чего подключение к контроллеру по Wi-Fi будет возможно только с паролем your_password.

Пример настройки Wi_Fi адаптера для подключения к локальной сети можно найти в нашей wiki.


Настройка PPP

На контроллере предустановлен демон pppd, который используется для создания подключения к сети провайдера через 3G/2G-модем. Демон pppd создает при подключении сетевой интерфейс ppp (ppp0 по умолчанию). В заводской конфигурации настройки порта ppp0 закомментированы, и установления соединения с провайдером сотовой связи не происходит. В нашей Wiki мы рекомендуем использовать следующие настройки для интерфейса ppp0 в файле /etc/network/interfaces:

 auto ppp0
 iface ppp0 inet ppp
 provider mts
 #Рестартуем модем, если он завис
 pre-up wb-gsm restart_if_broken  
 #Затем ждем, пока он загрузится и найдет сеть.
 pre-up sleep 10

Даже если модем находится в зависшем или отключенном состояниии, команда pre-up wb-gsm restart_if_broken перед началом установления соединения перезагрузит его и модем будет гарантированно доступен. Десятисекундной задержки ( pre-up sleep 10) перед установлением соединения обычно хватает, чтобы сетевое соединение установилось с первого раза.

Строка provider заставляет pppd искать файл настроек для конкретного провайдера в директории /etc/ppp/peers, в нашем случае это файл /etc/ppp/peers/mts. В целях совместимости в качестве устройства модема в заводской настройке в этом файле указано использовать устройство /dev/ttyGSM. Если на вашем контроллере установлен 3G-модем, замените это устройство его на более быстрое /dev/ttyACM0.

Чтобы при обрыве соединения контроллер не прекращал бы попытки установить связь, в файле провайдера /etc/ppp/peers/ должны быть раскомментированы опции

persist
maxfail 0

Параметры протокола пакетной передачи данных и номера для соединения для каждого провайдера хранятся в директории /etc/chatscripts. В большинстве случаев ничего менять в этих файлах не придется.

PPP — основной и резервный выход в интернет

Проще всего обеспечить выход в интернет, если ppp0 — единственный WAN-интерфейс. Интерфейс ppp0 настраивается, как это написано выше, и затем подключение к интернету через сеть сотового оператора устанавливается командой ifup ppp0 .

Сложности начинаются, когда контроллер подключен к Ethernet и имеет шлюз по умолчанию в одной сети, а также подключается к сети сотовой передачи данных.

В такой конфигурации мы сталкиваемся со следующей особенностью: протокол PPP обеспечивает соединение точка-точка и не предполагает шлюза по умолчанию.

В случае подключения по PPP, когда ни одного шлюза по умолчанию нет (например, мы не подключили Ethernet-кабель), pppd в качестве шлюза по умолчанию добавит в таблицу маршрутизации в системе IP-адрес ppp-партнера. Если шлюз по умолчанию уже задан, то в таблицу маршрутизации новый шлюз по умолчанию не добавляется. И тогда при падении основного Ethernet-канала выход в интернет теряется, несмотря на активное соединение. В этом случае необходимо добавить второй шлюз по умолчанию через интерфейс ppp0. Метрика любого нового шлюза должна отличаться от метрик имеющихся, поэтому мы явно указываем метрику при создании нового шлюза по умолчанию.

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

Для интерфейса eth0, который мы будем считать основным для выхода в интернет, создается шлюз по умолчанию с метрикой 0 в таблице маршрутизации. Зададим для шлюза по умолчанию через интерфейс ppp0 метрику 100 (или любой, отличной от 0). Для выполнения команд после инициализации любого ppp-интерфейса pppd демон использует директорию /etc/ppp/ip-up.d. В качестве параметров командной строки скрипту передается и имя ppp-интерфейса (в нашем случае такой интерфейс один — это ppp0).

Создадим скрипт add_routes в директории /etc/ppp/ip-up.d и сделаем его исполняемым:

#!/bin/sh

route del default dev ppp0 2>/dev/null
route add default dev ppp0 metric 100 2>/dev/null

Первая команда удаляет шлюз по умолчанию, на случай, если он был создан с метрикой 0. Вторая — добавляет шлюз по умолчанию с метрикой 100 для интерфейса ppp0. Таким образом мы имеем два шлюза по умолчанию с разными метриками: