Настройка подключения к Internet через bluetooth в Mandriva Linux.

Исходные данные

bluetooth-адаптер orient-b303

Привлёк внимание тем, что на упаковке был нарисован tux(верный признак того, что устройство не заточено исключительно под windows), и кучей дисков с мультимедиа-контентом впридачу. :-)

Мобильный телефон nokia-3250

Аппарат с поддержкой bluetooth и gprs

Оператор сотовой связи МТС.

+ не самый дешевый для использования gprs, хоть и внутрикорпоративный тариф стандарт

Дистрибутив mandriva 2006.

Уже довольно старенький, но прекрасно себя зарекомендовавший дистрибутив, который я не скоро решусь поменять на какой-то другой (прецеденты обратного перехода уже были)1)

Установка и настройка ПО для сопряжения телефона и компьютера.

Установка пакетов

Для сопряжения компьютера и телефона через bluetooth-адаптер нам понадобятся все пакеты, начинающиеся на bluez. Их и установим

root#urpmi -a bluez-((для Debian надо через apt-get поставить все пакеты, начинающиеся на //bluez-//))

Запустим службу bluetooth

root#/etc/init.d/bluetooth restart

Определение адреса телефона и номера канала.

Включим у телефона поддержку bluetooth и дадим (если еще не дали) ему имя nokia-3250.

Определимся с адресом телефона.

bash$ hcitool scan

scanning ...

        00:19:4f:e3:73:b6       nokia-3250

Проверим, есть ли у телефона поддержка dial-up networking, и на каком канале

[r-asian@localhost ~]$ sdptool browse 00:19:4f:e3:73:b6

browsing 00:19:4f:e3:73:b6 ...

Далее вываливается списов всех служб, которые поддерживает телефон. Из всего многообразия нас интересует вот эта:

service name: dial-up networking

service rechandle: 0x10002

service class id list:

  "dialup networking" (0x1103)

protocol descriptor list:

  "l2cap" (0x0100)

  "rfcomm" (0x0003)

    channel: 2

language base attr list:

  code_iso639: 0x454e

  encoding:    0x6a

  base_offset: 0x100

profile descriptor list:

  "dialup networking" (0x1103)

    version: 0x0100

То, что нас интересует висит на 2-м канале.

Создание генератора pin-кода

Генератор pin-кода это просто скрипт, который генерирует последовательность вида PIN:{пароль}, например такой

#!/bin/bash

echo "PIN:1234";

Сохраним его в файле /usr/local/bin/bluepin.helper и не забудем дать ему права на исполнение

#chmod +x /usr/local/bin/bluepin.helper

Настройка демона hcid

Его настройка производится правкой файла /etc/bluetooth/hcid.conf.

options {

         autoinit yes;

         security auto;

         pairing multi;

         pin_helper /usr/local/bin/bluepin.helper;

 }

 device {

         name "11:11:11:11:11:11";

         class 0x3e0100;

         iscan enable; pscan enable;

         lm accept;

         lp rswitch,hold,sniff,park;

         auth enable;

         encrypt enable;

 }

Настройка сопряжения.

Его настройка производится правкой файла /etc/bluetooth/rfcomm.conf. В нём мы прописываем к какому файлу устройства в /dev будет соответствовать gprs- модем. В нащем случае определим его как /dev/rfcomm0

rfcomm0 {

         bind yes;

         # Адрес телефона

         device 00:19:4f:e3:73:b6;

         # Номер канала на котором поддерживается dial-up networking

         channel 2;

         comment "dial-up networking gateway";

}

Проба модема.

Перезапустим демон hcid

root#/etc/init.d/bluetooth restart

Проверим наличие файла-устройства /dev/rfcomm0

$ ls /dev|grep rfcom

rfcomm0

Пошлём на телефон команду инициализации, выведя её в файл /dev/rfcomm0

$ echo "atz">/dev/rfcomm0

Телефон ожил и спросил разрешения принять запрос от «11:11:11:11:11:11»? Ну и чудесно.

Настройка подключения к провайдеру.

Для дозвона могут быть использованы самые разные программы-звонилки. Например kppp, или можно попробовать настроить pppd вручную. Лично мне нравится textbfwvdial. В поставку моего дистрибутива он входит.

#urpmi wvdial

Расмотрим настройку подключения к провайдеру на примере МТС, для других операторов сотовой связи необходимую информацию по номеру телефона, имени пользователя и паролю можно найти на их сайтах.

Создадим файл настройки /etc/wvdial.conf.mts следующего содержания

[DIALER DEFAULTS]
; Устройство модема
modem = /dev/rfcomm0
; Скорость передачи
baud = 115200
; Инициализация модема
init = ATZ
; Вторая строка инициализации, берётся на сайте опреатора
init2 = AT+CGDCONT=1,"IP","internet.mts.ru"
; Тип модема
modem type = analog modem
; Тоновый набор номера
dial command = ATDT
; Номер телефона
phone = *99#
; Логин и пароль
username = mts
password = mts

Дозвон и соединение.

Запустим, дозвон, указав, из какого файла брать параметры

$wvdial --config /etc/wvdial.conf.mts

Если всё в порядке, то видим следующее:

--> wvdial: internet dialer version 1.54.0
--> initializing modem.
--> sending: atz
atz
ok
--> sending: at+cgdcont="1","ip","internet.mts.ru"
at+cgdcont="1","ip","internet.mts.ru"
ok
--> modem initialized.
--> sending: atdt*99#
--> waiting for carrier.
atdt*99#
connect
~[7f]}#@!}!} } }2}#}$@#}!}$}%\}"}&} }*} } g}%~
--> carrier detected.  waiting for prompt.
~[7f]}#@!}!} } }2}#}$@#}!}$}%\}"}&} }*} } g}%~
--> ppp negotiation detected.
--> starting pppd at wed nov 21 21:47:42 2007
--> pid of pppd: 5807
--> using interface ppp0
--> pppd: connect: ppp0 <--> /dev/rfcomm0
--> pppd: pap authentication succeeded
--> local  ip address 172.28.164.233
--> remote ip address 10.6.6.6
--> primary   dns address 195.209.229.37
--> secondary dns address 10.84.125.2

Ну, в общем-то и всё.

Резюме.

  1. устанавливаем пакеты для работы с bluetooth;
  2. определяем адрес телефона и номер канала, по которому поддерживается dial-up networking;
  3. создаём генератор pin-кода;
  4. настроим демон hcid;
  5. настроим сопряжение;
  6. проверим работу модема;
  7. установим ПО для дозвона до провайдера;
  8. настроим соединение с провайдером;
  9. дозваниваемся.

Интернет без навязчивой рекламы или минимальная настройка Squid под Mandriva, Debian, Ubuntu

В Mandriva 2008 PowerPack(как и во многих дистрибутивах, например Debian или Ubuntu) есть пакет squid.

Squid — распространенный http-проси, который позволит нам:

  • кэшировать содержимое сайтов, зрительно увеличивая скорость интернета;
  • блокировать http-запросы к контенту явно рекламного содержания.

Установка и настройка SQUID

Ставится он следующим образом(для Mandriva):

#urpmi squid
Либо (для Debian и Ubuntu)
$sudo apt-get install squid

Либо пакетным менеджером с графическим интерфейсом

Далее в /etc/squid/squid.conf, пишется следующее содержимое:

# Назначаем IP и порт на котором будет работать SQUID
http_port 192.168.0.253:3128
# Назначаем каталог для кэша
cache_dir ufs /var/spool/squid 800 16 256
access_log /var/log/squid/access.log squid

# Определяем глобальную подсеть
acl all src 0.0.0.0/0.0.0.0
# Определяем диапазон локальной сети
acl localnet src 192.168.0.0/255.255.255.0

# Определяем регулярные выражения для рекламных ссылок
# Назначаем IP и порт на котором будет работать SQUID
http_port 3128
visible_hostname 192.168.0.253

# Назначаем каталог для кэша
cache_dir ufs /var/spool/squid 800 16 256
cache_mem 100 MB
cache_swap_high 95
cache_swap_low 95
maximum_object_size 4096 KB
minimum_object_size 0 KB

# Определяем глобальную подсеть
acl all src 0.0.0.0/0.0.0.0
# Определяем диапазон локальной сети
acl localnet src 192.168.0.0/255.255.255.0

# Определяем регулярные выражения для рекламных ссылок
acl adv url_regex -i ^.*click.*$
acl adv url_regex -i ^.*adv.*$
acl adv url_regex -i ^.*banner.*$
acl adv url_regex -i ^.*baner.*$
acl adv url_regex -i ^.*sb.google.*$
acl adv url_regex -i ^.*.swf.*$
acl adv url_regex -i ^.*top\.list\.ru.*$
acl adv url_regex -i ^.**counter.yadro.ru.*$
acl adv url_regex -i ^.*sindi.*$
acl adv url_regex -i ^.*sex.*$
acl adv url_regex -i ^.*top\.list\.ru.*$
acl adv url_regex -i ^.*google\-analytics.*$
acl adv url_regex -i ^.*dw\.jsp.*$

# Несколько правил для резки баннеров
acl adv url_regex -i ^.*88x31.*gif.*$
acl adv url_regex -i ^.*88x31.*GIF.*$
acl adv url_regex -i ^.*100x80.*gif.*$
acl adv url_regex -i ^.*100x80.*GIF.*$
acl adv url_regex -i ^.*100x100.*gif.*$
acl adv url_regex -i ^.*100x100.*GIF.*$
acl adv url_regex -i ^.*120x60.*gif.*$
acl adv url_regex -i ^.*120x60.*GIF.*$
acl adv url_regex -i ^.*179x69.*gif.*$
acl adv url_regex -i ^.*193x72.*gif.*$
acl adv url_regex -i ^.*468x60.*gif.*$

# Запретить рекламу
http_access deny adv
# Дать доступ из локальной сети
http_access allow localnet
# Запретить доступ из глобальной сети
http_access deny all

В данном примере я использую такой IP адрес, потому что через комп интернет получает ещё и ноутбук с IP 192.168.0.54. Сам комп имеет в локальной домашней сети IP 192.168.0.253

Изначально там лежит гораздо более объёмный файл, но он садержит всевозможные настройки(о которых пытливый ум может узнать из любого поисковика), какие только могут быть. Нам же надо просто кэшировать контент и резать рекламу.

Вышеприведённый настроечный файл, универсален, точно работает на Debian Etch и Lenny, и думаю будет работать не только на Linux.

После создания конфига запустим

#squid -z

Эта строчка создаст файловую структуру кэша.

Запускаем сервер, который после запуска начинает слушать порт 3128 на предмет подключений по http.

# /etc/init.d/squid restart

Настройка браузера

Чтобы всё это счастье заработало, браузер необходимо настроить на подклчение через прокси с IP 192.168.0.253 и портом 3128.

Проверено на одноглаззниках — рассаднике навязчивой рекламы. Работает на 5+ :-)

Данный конфиг был использован как шаблон и модернизирован при настройке домашнего шлюза