Дали мне на работе задачу: настроить MTS connect и ИнтерКом (http://www.intercom.odessa.ua/). Никогда не имел дело с USB-модемами, а тем более под фряхой :). В этой статье расскажу как можно настроить USB модем. Все ниже сказанное проводилось на FreeBSD 8.1 i386, модем 3G-CDMA 450 (модем с разъёмом USB-mini), а так же модем в виде флешки AnyData ADU-510A, Novatel U720
Настройка модема от МТС (AnyData ADU-510A).
1) Подготовка.
Вставляем USB модем в свободный USB порт. В логах (можно смотреть в /var/log/messages, можно через dmesg) должны увидеть такое сообщение:
Sep 27 11:00:46 kernel: ugen0.3: <AnyDATA Corporation> at usbus0
Sep 27 11:00:46 kernel: u3g0: <Data Interface> on usbus0
Sep 27 11:00:46 kernel: u3g0: Found 3 ports.
Если записи присутствуют, значит всё в порядке и приступаем непосредственно к настройкам.
2) Предварительная настройка.
Для начала необходимо подгрузить необходимые USB-драйвера для нормальное работы модема. Для этого прописываем такие строчки в /boot/loader.conf:
ucom_load="YES"
umodem_load="YES"
Иногда нужно подгружать и третий драйвер (ubsa_load=”YES”), но у меня он оказался уже в ядре. Эти строки отвечают за подгрузку драйверов в момент загрузки системы. Если у вас FreeBSD 7.X то в /boot/loader.conf нужно добавлять такие (вместо тех, которые описаны выше):
u3g_load="YES"
umass_load="YES"
Для нормальной работы (включение работы демона USB) USB устройств добавим такую строчку в /etc/rc.conf:
usbd_enable="YES"
После этого желательно перегрузиться или перечитать /etc/rc.conf и подгрузить модули для usb модема вручную – кому как больше нравиться.
3) Настройка подключения.
Подключение будет осуществляться через соединение PPPoA (PPP через ATM). В handbook’e есть выдержка по поводу этого момента:
Поддержка PPPoA для этого устройства в FreeBSD поставляется в виде порта, поскольку встроенное программное обеспечение поставляется под лицензионным соглашением Alcatel и не может свободно распространяться с основной системой FreeBSD. Для установки этой программы, просто используйте коллекцию портов. Установите порт net/pppoa и следуйте инструкциям.
Но я прочёл это уже после того, как всё настроил. Если вам хочется опробовать рекомендации из handbook’a – можете следовать им. Я же опишу, классическое подключение через pppoa. Так же не маловажным моментом будет упомянуть о “Сравнение версии pppd, входящей в дистрибутив FreeBSD, c обычной версией”
И так, открываем файл /etc/ppp/ppp.conf и пишем туда следующее:
mtsconnect:
set log Phase Chat LCP IPCP CCP tun command
ident user-ppp VERSION (built COMPILATIONDATE)
set device /dev/cuaU0.0
set speed 115200
set ctsrts off
set phone "#777"
set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \"\" AT OK-AT-OK ATE1Q0 OK \\dATD\\T TIMEOUT 40 CONNECT"
set login
set timeout 0
set authname "mobile"
set authkey "internet"
set ifaddr 0.0.0.0/0 0.0.0.0/0 0.0.0.0/0
add default HISADDR
set ipcpretries 10 5
enable dns
ВНИМАНИЕ! ВСЕ СТРОКИ, КРОМЕ ПЕРВОЙ (mtsconnect:) ДОЛЖНЫ НАЧИНАТЬСЯ С ОТСТУПА
Опишу параметры, которые использовал. Первые 2 строки описывают логгирование. Далее указывается само устройство (/dev/cuaU0.0) и скорость (115200). Что касается опции ctsrts, то вот пояснение, взятое из handbook’a:
Если у вас выделенная линия и нет необходимости устанавливать соединение, выключите контроль передачи данных CTS/RTS командой set ctsrts off. Это обычно необходимо при подключении к поддерживающим PPP терминальным серверам, когда PPP прерывается при попытке записать данные в ваше соединение, и ожидает сигнала CTS, или Clear To Send, который не появляется. Если вы используете этот параметр, используйте также параметр set accmap, который может быть необходим для устранения зависимости от оборудования путем пропускания определенных символов через соединение, обычно XON/XOFF. Обратитесь к странице справочника ppp(8) за более подробной информацией по этому параметру и его использованию.
Далее идёт номер дозвона (#777), команды модему и параметры авторизации. Что касается логина/пароля, так это стандартные для всех модемов MST connect. Строка add default HISADDR отвечает за установку шлюза по умолчанию, полученного от провайдера (в данном случае от MTS). Если не хотите использовать DNS провайдера, уберите строку enable dns.
Теперь осталось добавить строки запуска демона в /etc/rc.conf:
ppp_enable="YES"
ppp_mode="ddial"
ppp_nat="YES"
ppp_profile="mtsconnect"
ppp_user="root"
После этого запускаем подключение (при этом на модеме должен гореть зелёный индикатор Busy, НЕ МИГАТЬ, а именно гореть):
#/etc/rc.d/ppp start
Получим такие сообщения:
Sep 27 13:04:11 gate kernel: mtsconnect
Sep 27 13:04:11 gate kernel: Loading /lib/libalias_cuseeme.so
Sep 27 13:04:11 gate kernel: Loading /lib/libalias_ftp.so
Sep 27 13:04:11 gate kernel: Loading /lib/libalias_irc.so
Sep 27 13:04:11 gate kernel: Loading /lib/libalias_nbt.so
Sep 27 13:04:11 gate kernel: Loading /lib/libalias_pptp.so
Sep 27 13:04:11 gate kernel: Loading /lib/libalias_skinny.so
Sep 27 13:04:11 gate kernel: Loading /lib/libalias_smedia.so
Sep 27 13:04:11 gate kernel: Warning: No default entry found in config file.
Теперь можно посмотреть в файл /var/log/ppp.log и если там нет ошибок и сообщений вида “hangup” значит всё работает и можно проверить получили ли мы адрес и добавился ли шлюз по умолчанию:
$ifconfig tun0
tun0: flags=8051 metric 0 mtu 1500
options=80000
inet 77.52.25.238 --> 80.255.77.9 netmask 0xffffffff
Opened by PID 483
$netstat -rn | grep default
default 80.255.77.9 UGS 0 22785 tun0
4) Послесловие
В нормальном состоянии на модеме должны гореть 2 индикатора синим цветом: PWR и IDLE. Когда модем не активен – индикатор Busy не горит, в момент передачи данных – горит постоянно зелёным, в момент подключения мигает зелёным. Если никакие данные не передаются индикатор Busy не горит.
ADU-510A: В режиме ожидания горит зелёный индикатор, в режиме обмена данными – синий. При первом включении нужно дождаться стабильного синего индикатора.
PS. USB модем можно вставлять в любой порт при настройке, описанной выше.
Настройка модема от Интерком (Novatel U720).
1) Подготовка.
Вставляем USB модем в свободный USB порт. В логах (можно смотреть в/var/log/messages, можно через dmesg) должны увидеть такое сообщение:
Nov 10 12:15:10 kernel: ugen1.2: <Novatel Wireless Inc.> at usbus1
Nov 10 12:15:10 kernel: u3g0: <Data Interface> on usbus1
Nov 10 12:15:10 kernel: u3g0: Found 3 ports.
2) Предварительная настройка.
Данный модем использует драйвер u3g, поэтому проверьте присутствие его в системе:
# kldstat -v | grep u3g
305 uhub/u3g
Если у вас его нет, то можно либо вкомпилировать в ядро, а можно подгрузить и модулем:
#kldload /boot/kernel/u3g.ko
3) Настройка подключения.
Открываем файл /etc/ppp/ppp.conf и пишем туда следующее:
itc:
ident user-ppp VERSION (built COMPILATIONDATE)
set log PHase Chat LCP IPCP CCP tun command
set device /dev/cuaU0.0
set phone "#777"
set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \"\" AT OK-AT-OK ATE1Q0s7=60 OK \\dATDT\\T TIMEOUT 40 CONNECT"
set login
set timeout 0
set authname "IT"
set authkey "IT"
add default HISADDR
ВНИМАНИЕ! ВСЕ СТРОКИ, КРОМЕ ПЕРВОЙ (itc:) ДОЛЖНЫ НАЧИНАТЬСЯ С ОТСТУПА
Иногда могут потребоваться такие строки:
set speed 1920000
set ifaddr 0.0.0.0/0 0.0.0.0/0 0.0.0.0/0
Теперь осталось добавить строки запуска демона в /etc/rc.conf:
ppp_enable="YES"
ppp_mode="ddial"
ppp_nat="YES"
ppp_profile="itc"
ppp_user="root"
После этого запускаем подключение:
#/etc/rc.d/ppp start
Теперь можно посмотреть в файл /var/log/ppp.log и если там нет ошибок и сообщений вида “hangup” значит всё работает и можно проверить получили ли мы адрес и добавился ли шлюз по умолчанию:
$ifconfig tun0
tun0: flags=8051 metric 0 mtu 1500
options=80000
inet 95.111.XX.XX --> 195.128.XX.XX netmask 0xffffffff
Opened by PID 483
$netstat -rn | grep default
default 195.128.XX.XX UGS 0 22785 tun0
Собственно всё.