Bsdadmin.ru

Записки администратора FreeBSD

Путь на сайте

Домашняя FreeBSD Доступ FreeBSD к интернету через 3G

Доступ FreeBSD к интернету через 3G

При включении  модема во FreeBSD, необходимо сменить  режим "Zero-CD" на режим Modem. 
Задача решается   с помощью  camcontrol+devd или usb_modeswitch.
Будем использовать  - camcontrol+devd.
 Драйвер u3g  загрузим посредством /boot/loader.conf или пересоберем ядро с его поддержкой.
Модем обнаружен как umass0. Однако возможно  обнаружение и как ugen0.
u3g_load="YES"
umass_load="YES"
 
Перезагрузим систему, или загрузим модули используя kldload.
Подключив модем к  системе и использовав  команду usbdevs для просмотра модема,Вы обнаружите строку принадлежащую вашему модему.
# usbdevs -v
 
port 1 addr 3: full speed, power 100 mA, config 1, USB MMC Storage(0x1000), Qualcomm, Incorporated(0x05c6), rev 0.00
 
Из этой строки необходимо получить идентификатор производителя и продукта, в данном случае  это vendor = 0x05c6 и product = 0x1000.
 Затем используйте команду camcontrol devlist.
# camcontrol devlist
<option ... > at scbus1 target 0 lun 0 (da1,pass1)
 
Модем обнаружился как Option ICON 2.31, в последней части строки как (da1, pass1), нам необходимо использовать значения "Option" и "pass1".
 Создайте папку в /etc с именем devd, /etc/devd. в этой папке создайте файл с любым именем,например option.conf.
В файле option.conf, разместите следующее:
 
attach 100 {
match "device-name" "umass[0-9]+";
match "vendor" "0x05c6";
match "product" "0x1000";
match "devclass" "0x00";
action "sleep 3; /sbin/camcontrol cmd `/sbin/camcontrol devlist | /usr/bin/grep Option | /usr/bin/awk '{match($10, /pass[0-9]+/);
print substr($10, RSTART, RLENGTH) }'` -c '01 00 00 00 00 00' -i 1 i1 > /dev/null";
};
Замените идентификаторы vendor и product на соответствующие вашему модему.
 
В строке action необходимо поменять несколько вещей:
/usr/bin/grep Option <- заменить выводом camcontrol devlist,  это Option
$10 <- $10 это значение 10-го результата строки camcontrol devlist, у меня это значение pass1.
Пример:
</option><option ... > at scbus1 target 0 lun 0 (da1,pass1)
$1 = </option>$2 = ICON
$3 = 2.31>
$4 = at
$5 = scbus1
$6 = target
$7 = 0
$8 = lun
$9 = 0
$10 = (da1,pass1)
/pass[0-9]+/ <- замените последнее значение соответствующим их вашего вывода camcontrol devlist, если у вас это cd1 здесь должно бы /cd[0-9]+/
 
Сохраните  option.conf. Отключите ваш модем и выполните перезапуск /etc/rc.d/devd для перезагрузки новой конфигурации devd.
#/etc/rc.d/devd restart
Stopping devd.
Starting devd.
 
Подключите снова свой модем и если всё  будет хорошо вы получите сообщение:
umass1: detached
ucom0: <option ... > on uhub2
ucom0: configured 3 serial ports (U0.%d)
 
Если данноего сообщения нет,  повторите включение несколько раз.
Отключение модема в ручную, не используя devd:
# camcontrol devlist
</option><option ... > at scbus1 target 0 lun 0 (da1,pass1)
# camcontrol cmd pass1 -c "01 00 00 00 00 00" -i 1 i1
Если всё нормально, ucom0 поднялся, тогда u3g создаст /dev/cuaU0.0, если вы будете использовать ubsa, то будет создан /dev/cuaU0. Мы будем использовать /dev/cuaU0.0 в ppp.conf.
 
Вот выборка ppp.conf для Malaysia Celcom 3G ISP.
 
# MaUi^ (Jun, 21, 2009)
# 3G (HSDPA/UTMS) /etc/ppp/ppp.conf (FreeBSD)
# This file should be in put in /etc/ppp/
# IMPORTANT! every line IN A LABEL (label:) should start with a space!!
# word "#" infront of line tell ppp not to read the line
# to start dialing. run --> ppp -ddial label (or any label you add)
default:
# add default gateway when connected
# шлюз по-умолчанию
add default HISADDR
# ------------------------------
# to enable NAT for sharing internet with other pc
#Включаем NAT
nat enable yes
# ------------------------------
# enable dcc send from client behind the gateway
nat same_ports yes
nat use_sockets yes
# ------------------------------
# to see connection error/link/speed : tail -f /var/log/ppp.log
# Логи для изучения ошибок
set log phase tun connect
# ------------------------------
# auto update with the isp nameserver in /etc/resolv.conf
# Пользуемся сервером DNS
enable dns
# or used other dns server
# set dns 127.0.0.1
# ------------------------------
# 3G Celcom.
# if using ubsa, ucom0 = cuaU0
# if using u3g, ucom0 = cuaU0.0
# Настройка самого модема
3g:
set device /dev/cuaU0.0
set dial "ABORT BUSY ABORT NO\sCARRIER TIMEOUT 5 \"\" ATZ OK-ATZ-OK AT+CGDCONT=1,\\"IP\\",\\"celcom3g\\" OK \dATD\T
TIMEOUT 40 CONNECT"
# dial number are *99# or *99***1
#Набрать номер,логин и ключ аунтификации
set phone "*99***1#"
set authname ""
set authkey ""
# Установить IP адреса с маской  на интерфейсе
set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0 0.0.0.0
enable lqr
# запретить работу по IPV6
disable ipv6cp
 

Домашняя FreeBSD Доступ FreeBSD к интернету через 3G