Ayao "Alqualos" Kuroyuki (ayao) wrote,
Ayao "Alqualos" Kuroyuki
ayao

Настройка доступа к Интернет в FreeBSD через GPRS МТС и Bluetooth

Сколько ругательных слов в сабже этого поста, просто душа не нарадуется. Поскольку эта информация не очень-то лытдыберная - под кат её, под кат!

Сначала требовалось добиться работоспособности устройства. Для этого пришлось загрузить модуль ядра ng_ubt. Чтобы это делалось автоматически, добавляем соответствующую строчку в /boot/loader.conf, как и для любого другого модуля:
ng_ubt_load="YES"

Теперь втыкаем девайс и любуемся dmesg:
ubt0: Broadcom Corp BCM2045A, rev 2.00/1.12, addr 2
ubt0: Broadcom Corp BCM2045A, rev 2.00/1.12, addr 2
ubt0: Interface 0 endpoints: interrupt=0x81, bulk-in=0x82, bulk-out=0x2
ubt0: Interface 1 (alt.config 5) endpoints: isoc-in=0x83, isoc-out=0x3; wMaxPacketSize=49; nframes=6, buffer size=294

Отлично. Девайс на месте. Теперь надо найти телефон:
[root@void alqualos]# hccontrol -n ubt0hci inquiry
Inquiry result, num_responses=1
Inquiry result #0
        BD_ADDR: 00:17:b0:69:12:d4
        Page Scan Rep. Mode: 0x2
        Page Scan Period Mode: 00
        Page Scan Mode: 00
        Class: 52:02:04
        Clock offset: 0x3e89

Теперь осталось убедиться, что это именно он:
[root@void alqualos]# hccontrol -n ubt0hci remote_name_request 00:17:b0:69:12:d4
Could not execute command "remote_name_request". Operation timed out
[root@void alqualos]# hccontrol -n ubt0hci remote_name_request 00:17:b0:69:12:d4
BD_ADDR: 00:17:b0:69:12:d4
Name: Yuki no Nokia

Почему-то на запрос имени он среагировал только со второго раза. Ну и ладно. Не то что бы мы этим постоянно собирались заниматься.
Теперь неплохо бы дать ему локальное имя, а то с этими мак-образными адресами как-то неприятно работать. Пишем в /etc/bluetooth/hosts:
00:17:b0:69:12:d4       yukia

Отлично. Теперь надо нам спарить ноут с телефоном, чтобы между ними автоматически устанавливалось шифрованное соединение. Рисуем в /etc/bluetooth/hcsecd.conf:
device {
        bdaddr 00:17:b0:69:12:d4;
        name "Yuki no Nokia";
        key nokey;
        pin "123";
}

PIN можно выбрать любой какой нравится. С PIN SIM-карты он ничего общего не имеет. Затем рисуем в /etc/rc.conf:
hcsecd_enable="YES"

И запускаем
[root@void alqualos]# /etc/rc.d/hcsecd start

Теперь лезем в телефон, ищем там функцию спаривания, выбираем в списке доступных устройств ноут и набираем заданный PIN. Телефон должен радостно сообщить о том, что соединение установлено. Если в телефоне этой функции нет, то надо как-то со стороны ноута спаривание инициировать, Хрен его знает как. Короче, после того, как у нас всё спарено, начинается самое противное - настройка PPP. Рисуем в /etc/ppp/ppp.conf примерно следующее:
mts:
        # Хрен его знает что это, срисовал с примера. Кажется, это надо чтобы set dial работало.
         enable force-scripts
         # force dial script execution
         # Эта бодяга получилась путём срисовывания с примера и подстановки алхимических знаков, найденных на сайте МТС в информации по настройкам Windows XP
         # Подставить пришлось internet.mts.ru только, вроде бы
         # Кто когда-нибудь работал с модемом через терминал должен понимать, что это всё не так страшно и к GPRS не имеет почти никакого отношения
         # Ну правильно, PPP придумали ещё когда мобильников не было, наверное!
         set dial "ABORT BUSY \"\" \
           ATE1 OK AT+CGDCONT=1,\\\"IP\\\",\\\"internet.mts.ru\\\" OK \
           ATD*99***1# CONNECT"
         # set kyivstar APN in dial script
         # Не слушайте той фигни, что тут понаписана, эта строчка нам нужна как кот маслу! Ой, то есть... Ну, нужна короче!
         enable dns   # if you're on local network and don't like ppp overwriting your
                      # resolv.conf every time you connect, comment this out
         # Эта бодяга тоже с сайта МТС
         set authname mts
         set authkey  mts
         # То что ниже закомментировано - из примера, а то что строчкой выше - я слизал из man ppp, где написано, что это зашифрованное "А Хрен его знает, какой IP мне выдаст провайдер"
         set ifaddr 10.0.0.1/0 10.0.0.2/0 0.0.0.0 0.0.0.0
         # set ifaddr 0 0 255.255.255.0
         # Восклицательный знак нужен, чтобы маршрут добавился даже если он уже есть. У меня он по умолчанию нацелен на локальную сеть, а тут его надо заместить.
         add! default HISADDR

Так, теперь осталось уладить два вопроса. Что делать с маршрутизацией, когда соединение с Интернет закроется, и что делать тогда же с /etc/resolv.conf. Мне мой маршрут в локалку сердцу дорог, а локальный DNS - ещё дороже, так что я создаю файл /etc/ppp/ppp.linkdown следующего содержания:
mts:
	resolv restore
	delete default
	add default 192.168.17.1

То есть: восстановить исходные настройки DNS, удалить маршрут по умолчанию и добавить вместо него 192.168.17.1 - мой локальный маршрутизатор. Да-а, а можно было, наверное, и тут "add!" написать вместо этих двух строчек... Так даже лучше, наверное - мало ли, а вдруг маршрут не добавился, что же мы тут удалять тогда будем? Ну неважно, работает и ладно. Итак, гемор закончен, теперь запускаем ppp:
[root@void alqualos]# rfcomm_pppd -a yukia -C DUN -l mts

DUN - это dial-up networking, способ установки соединения. Остальное вроде всё понятно. Наслаждаемся доступом в Интернет. Как насладились, убиваем ppp:
[root@void alqualos]# killall ppp

Ну а чтобы жизнь была ещё лучше, добавляем в ~/.bashrc примерно следующее:
alias iup='sudo rfcomm_pppd -a yukia -C DUN -l mts'
alias idown='sudo killall ppp'
alias bstop='sudo /etc/rc.d/bluetooth stop ubt0'

При этом не забываем настроить sudo, и получаем, что соединение устанавливается командой "iup" и закрывается командой "idown". А "bstop" - это то, что рекомендуется делать перед выдёргиванием адаптера из USB. Как видим, всё очень просто, кроме, пожалуй, настройки PPP, тут она ещё покруче, чем при диалапе.

На очереди - настройка соединения с локалкой через Bluetooth. Там, кажется, придётся ещё какой-то сервер настраивать.
Tags: it, unix
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 12 comments