Если вам попал в руки роутер с USB портом на который можно установить прошивку OpenWRT, то это можно сказать практически универсальный мобильный роутер для небольшого офиса.
В статье расскажу, как настроить раздачу интернета на примере модемов AnyData ADU500 от MTS и Novatel U720 от Интертелекома.
Тестовый стенд: роутер Linksys 160NL, Asus WL-500gP V2 (для этой модели прочтите Примечание для Asus) OpenWRT , с ядром 2.6.30.10-1
0) Введение.
Основное описание будет происходить для модема ADU500. Если настройки будут различаться – будет указана отдельно конфигурация для Novatel. Естественно, что при настройке модема Novatel в конфигурации используем не имя mts, а например, itc.
1) Подготовка.
Для того, что бы наш роутер увидел USB-устройство, нужно установить наборы драйверов и утилит для работы с USB-устройствами:
Примечание:
для роутера Asus WL-500gP вместо пакета kmod-usb-ohci нужно использовать пакет kmod-usb-uhci
#ipkg install kmod-usb-core kmod-usb-ohci kmod-usb-serial kmod-usb-storage kmod-usb2 libusb
После этого вставляем наш модем и смотрим:
# cat /proc/bus/usb/devices
T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=480 MxCh= 1
B: Alloc= 0/800 us ( 0%), #Int= 0, #Iso= 0
D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=01 MxPS=64 #Cfgs= 1
P: Vendor=1d6b ProdID=0002 Rev= 2.06
S: Manufacturer=Linux 2.6.32.10 ehci_hcd
S: Product=Atheros AR91xx built-in EHCI controller
S: SerialNumber=ar71xx-ehci
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 4 Ivl=256ms
T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=12 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=16d5 ProdID=6502 Rev= 0.00
S: Manufacturer=AnyDATA Corporation
S: Product=AnyDATA CDMA Products
C:* #Ifs= 3 Cfg#= 1 Atr=80 MxPwr=500mA
I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=usbserial_generic
E: Ad=81(I) Atr=03(Int.) MxPS= 16 Ivl=128ms
E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=usbserial_generic
E: Ad=84(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=04(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=usbserial_generic
E: Ad=85(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=05(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
Если у вас похожий вывод, значит ваш модем увиделся и можно переходить к настройке.
2) Настройка.
Подключение будем осуществлять через ppp, поэтому, у вас должен быть установлен пакеты kmod-ppp, ppp, chat.
Что бы иметь возможность работать с нашим устройством, редактируем файл /etc/modules.d/60-usb-serial. Приводим его к такому виду:
usbserial vendor=0x16d5 product=0x6502
где, параметры vendor и product берём из вывода выше (красная строка).
Конфигурируем ppp. Создаём файл /etc/ppp/peers/mts такого содержания:
hide-password
noauth
connect "/usr/sbin/chat -v -f /etc/ppp/chatscripts/mts"
debug
115200
defaultroute
noipdefault
user "mobile"
demand
usepeerdns
/dev/ttyUSB0
logfile /dev/nulls
Примечание:
При настройке Novatel скорость указывать не надо.
Если подключение не происходит то нужно убирать опцию demand.
и файл /etc/ppp/chatscripts/mts:
ABORT BUSY ABORT 'NO CARRIER' ABORT VOICE ABORT 'NO DIALTONE' ABORT 'NO DIAL TONE' ABORT 'NO ANSWER' ABORT DELAYED
'' ATZ
OK-AT-OK "ATDT#777"
CONNECT \d\c
Добавляем пару логиy/пароль в файл /etc/ppp/chap-secrets:
mobile * internet *
Примечание:
Для модема используется тип шифрования только PAP, поэтому логин и пароль (у Интертелекома используется логи/пароль=IT/IT заглавными) нужно добавлять именно в файл /etc/ppp/pap-secrets:
IT * IT *
В противном случае будет появляться сообщение:
rcvd [CHAP Failure id=0x1 "Account disabled"]
Стартовый скрипт /etc/init.d/pppd для запуска выглядит так:
#!/bin/sh /etc/rc.common
START=99
start() {
/usr/sbin/pppd call mts
}
Делаем его исполняемым и создаём симлинк в папке /etc/rc.d:
#chmod +x /etc/init.d/pppd
#ln -s /etc/init.d/pppd /etc/rc.d/S99pppd
Примечание для Asus
Для модели Asus WL-500gP V2 доступно только ядро 2.4, и с ним связана одна особенность: автоматически не создаётся файл /dev/ttyUSB0, но зато создаются файлы /dev/usb/tts/Х. Попытка прописать в конфиг ppp вместо /dev/ttyUSB0 правильный путь – приводит к ошибке. Поэтому я решил сделать так: немного изменить стартовый скрипт для запуска ppp, о чём свидетельствовали строки
OpenWrt user.info kernel: usbserial.c: Generic converter now attached to ttyUSB0 (or usb/tts/0 for devfs)
В итоге наш скрипт /etc/init.d/pppd должен выглядеть так:
START=99
start() {
ln -s /dev/usb/tts/0 /dev/ttyUSB0
sleep 30
/usr/sbin/pppd call its
}
Такая задержка нужна потому, что usb драйвера подгружаются не сразу (пока не выяснил почему так).
3) Настройка интернета.
Для раздачи интернета нужен пакет kmod-ipt-nat-extra:
#ipkg install kmod-ipt-nat-extra
Теперь добавляем соответствующее правило трансляции NAT в файервол:
#iptables --table nat --append POSTROUTING --out-interface ppp0 -j MASQUERADE