Введение
Данный пост был написан потому, что информации на просторах интернета мало и она разрознена, пришлось собирать по строкам из различных источников. Постараюсь в этом руководстве свести все воедино. Предполагается, что базовые знания о сборке pfSence у вас уже есть и вы можете зайти в консоль.
Версия системы:
[2.0.3-RELEASE][admin@pfsense.office]/root(1): uname -a
FreeBSD pfsense.office 8.1-RELEASE-p13 FreeBSD 8.1-RELEASE-p13 #0: Fri Apr 12 10:47:01 EDT 2013 root@snapshots-8_1-i386.builders.pfsense.org:/usr/obj.pfSense/usr/pfSensesrc/src/sys/pfSense_SMP.8 i386
Почему Huawey E392?
Данный модем был выбран из-за наличия устойчивого приема в местах, где не ловят обычные модемы. Так же, к нему можно подключить внешнюю антенну и вынести ее на внешнюю стену здания.
Роутер уже был в наличии, давно и успешно работал, и не хотелось из-за смены провайдера менять еще и дополнительное оборудование. Покупка нового роутера от Yota нежелательно, ибо всяческие плюшки, типа блокировки сайтов и шейпинг канала в нем недоступны.
Перевод модема в режим модема
По умолчанию модем находится в режиме usbdisk + CD-ROM для установки драйверов под Windows. Драйвера находятся прямо на нем. Нам этот режим малоинтересен, нужно перевести его в режим модема.
Проверяем, что модем увиделся в системе командой dmesg. Должны быть вот такие строчки:
da3: Attempt to query device size failed: NOT READY, Medium not present
Root mount waiting for: usbus4
ugen4.3: <Huawei Technologies> at usbus4
umass1: <Huawei Technologies HUAWEI Mobile, class 0/0, rev 2.00/0.00, addr 3> on usbus4
umass1: SCSI over Bulk-Only; quirks = 0x0000
Root mount waiting for: usbus4
umass1:1:1:-1: Attached to scbus1
Trying to mount root from ufs:/dev/ad6s1a
WARNING: / was not properly dismounted
(probe0:umass-sim1:1:0:0): TEST UNIT READY. CDB: 0 0 0 0 0 0
(probe0:umass-sim1:1:0:0): CAM status: SCSI Status Error
(probe0:umass-sim1:1:0:0): SCSI status: Check Condition
(probe0:umass-sim1:1:0:0): SCSI sense: NOT READY asc:3a,0 (Medium not present)
cd0 at umass-sim1 bus 1 scbus1 target 0 lun 0
cd0: <HUAWEI Mass Storage 2.31> Removable CD-ROM SCSI-0 device
cd0: 40.000MB/s transfers
cd0: Attempt to query device size failed: NOT READY, Medium not present
Проверяем, какие idVendor и idProduct установлены по-умолчанию командой usbconfig -d 4.3 dump_device_desc, значение параметра -d смотрим из вывода dmesg (ugen4.3: <Huawei Technologies> at usbus4
):
ugen4.3: <HUAWEI Mobile Huawei Technologies> at usbus4, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON
bLength = 0x0012
bDescriptorType = 0x0001
bcdUSB = 0x0200
bDeviceClass = 0x0000
bDeviceSubClass = 0x0000
bDeviceProtocol = 0x0000
bMaxPacketSize0 = 0x0040
idVendor = 0x12d1
idProduct = 0x1505
bcdDevice = 0x0000
iManufacturer = 0x0003 <Huawei Technologies>
iProduct = 0x0002 <HUAWEI Mobile>
iSerialNumber = 0x0000 <no string>
bNumConfigurations = 0x0001
Поскольку в редакции FreeBSD pfSence отсутствуют /usr/ports, то ставить пакет для изменения конфигурации модема будем напрямую из официального репозитория по прямой ссылке
Нам нужен скомпилированный пакет usb_modeswitch.
pkg_add -r ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8-stable/Latest/usb_modeswitch.tbz
Данный пакет хранит конфигурацию в файле /usr/local/etc/usb_modeswitch.conf и скрипт запуска /usr/local/sbin/usb_modeswitch
После установки правим конфигурационный файл, внося в него idVendorи idProduct:
DisableSwitching=0
EnableLogging=1
DefaultVendor= 0x12d1
DefaultProduct= 0x1505
TargetVendor= 0x12d1
TargetProduct= 0x140c
TargetClass= 01
DetachStorageOnly=0
HuaweiMode=0
MessageEndpoint= not set
MessageContent="55534243000000000000000000000011060000000000000000000000000000"
NeedResponse=0
ResponseEndpoint= not set
В результате мы получаем замену DefaultProduct 0x1505 на TargetProduct 0x140c.
Для этого исполняем скрипт, подставляя ему конфиг:
/usr/local/sbin/usb_modeswitch -H -c /usr/local/etc/usb_modeswitch.conf
Проверяем usbconfig -d 4.3 dump_device_desc, нас устраивают значения idProduct 0x1506 и 0x140c.
Проверяем dmesg, должны получить следующие строчки на выходе:
ugen4.3: <Huawei Technologies> at usbus4
u3g0: <Huawei Technologies HUAWEI Mobile, class 0/0, rev 2.00/0.00, addr 3> on usbus4
u3g0: Found 4 ports.
Но этого недостаточно, при перезагрузке наш модем снова вернется к своим настройкам, и подключение сбросится. Чтобы этого не произошло, добавим в файл /etc/devd.conf проверку при запуске, в нужной ли конфигурации находится наше устройство, и запуск скрипта, если оно в режиме USBmass
attach 10 {
device-name "ugen[0-9]+";
match "vendor" "0x12d1";
match "product" "0x1505";
action "/usr/local/sbin/3G.sh";
};
Создаем файл /usr/local/sbin/3G.sh и делаем его исполняемым. Содержимое файла:
#!/bin/sh
sleep 3
/usr/local/sbin/usb_modeswitch -H -c /usr/local/etc/usb_modeswitch.conf
sleep 12
/usr/local/sbin/usb_modeswitch -H -c /usr/local/etc/usb_modeswitch.conf
Настройка подключения к провайдеру
Для создания подключения к Yota заходим в верхнем меню Interfaces -> (assign) и выбираем вкладку PPPs.
Добавляем новое подключение, тип PPP, указываем Link (/dev/cauU0.3) телефонный номер*99#, адрес точки доступа yota.ru.
В дополнительных опциях необходимо указать, что подключение будем поднимать по запросу – Включить опцию Dial on Demand.
После этого новый интерфейс появится на вкладке Interface assignments.
Включаем его через верхнее меню Interfaces -> OPT1 и включаем его, выбирая в типе интерфейса PPP, в телефонном номере *99# и APN yota.ru.
Добавляем оборудование в личный кабинет
Под занавес, вам нужно зарегистрировать оборудование в личном кабинете на сайте Yota.ru и привязать устройство к вашему личному кабинету. Это можно сделать с любой машины, в качестве ID оборудования указывайте ID номер на sim-карте из 10 цифр (010100xxxx). Без этого ходить вы сможете только до сайта yota.ru
Заключение
На этом настройка завершена, можем пользоваться. Для других модемов данная конфигурация так же справедлива, вам необходимо всего лишь уточнить параметры idVendor и idProduct, требуемые для работы оборудования в режиме модема и подставить их в конфигурацию.
Автор: Дмитрий Барсуков, будет благодарен за инвайт, если статья этого достойна, а так же за указания на возможные недочеты и ошибки. Спасибо!
Автор: Arheus