Bluetooth PAN и GNU/Linux

Материал из PDA Prime_wiki

По мотивам

Дома я использую PC под управлением Debian/GNU Linux, работающий 24 часа в сутки, вполне логично использовать "несчастного" для обновления информации о погоде и курсе валют на своем PPC (FS Loox 718), ну и естественно диванного серфинга. =)

В качестве транспорта я решил использовать технологию bluetooth, для моей скромной квартиры этого более чем достаточно, да и usb-bluetooth адаптор от Tekram - [TM-304] был уже давно заготовлен.

Как я и говорил моей каждодневной OS является Debian/GNU Linux, релиз, скажу коротко Unstable. Я использую ядро ветки 2.6 с www.kernel.org собранное с mh2 патчем, поддержкой bluetooth (bnep), USB, фильтрации ip-пакетов (network packet filtering), маршрутизации.

В случае с Debian последовательность действий примерно такова:

  1. Устанавливаем пакеты hotplug, bluez-utils и dhcpd, если предполагается использовать динамическое распределение ip-адресов.
    apt-get install hotplug bluez-utils (and dhcpd if you want autoconfiguration).
  2. Подключаем usb-bluetooth адаптор.
  3. Выполняем hciconfig -a, вывод команды будет примерно таким:
root@ssh2:/home/al# hciconfig -a
hci0:   Type: USB
        BD Address: 00:0B:0D:05:FD:92 ACL MTU: 120:20 SCO MTU: 64:0
        UP RUNNING PSCAN ISCAN
        RX bytes:379 acl:0 sco:0 events:17 errors:0
        TX bytes:319 acl:0 sco:0 commands:17 errors:0
        Features: 0xff 0xff 0x05 0x38 0x18 0x18 0x00 0x00
        Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
        Link policy: RSWITCH HOLD SNIFF PARK
        Link mode: SLAVE ACCEPT
        Name: 'ssh2.usernet'
        Class: 0x3e0100
        Service Classes: Networking, Rendering, Capturing
        Device Class: Computer, Uncategorized
        HCI Ver: 1.2 (0x2) HCI Rev: 0x0 LMP Ver: 1.2 (0x2) LMP Subver: 0x757
        Manufacturer: Silicon Wave (11)
  1. Попробуем найти BlueTooth устройства, hcitool scan:
root@ssh2:/home/al# hcitool scan
Scanning ...
        00:09:2D:23:1E:3A       Pocket LOOX
        00:13:FD:6D:E4:0A       Nokia 8800

В первом столбце указан mac-адрес устройства, а во втором, его имя заданное пользователем.

  1. Отредактируем /etc/default/bluetooth,
    опцию PAND_ENABLED установим в 1,
    определим следующие опции для PAND_OPTIONS: “--listen --role NAP --encrypt --auth”
  1. Добавим в /etc/network/interfaces:
allow-hotplug bnep0
iface bnep0 inet static
address 192.168.126.1
netmask 255.255.255.0
up /etc/init.d/dhcp restart
up /sbin/iptables -t nat -A POSTROUTING -s 192.168.126.0/24 -d 0.0.0.0/0 -j MASQUERADE
down /sbin/iptables -t nat -D POSTROUTING -s 192.168.126.0/24 -d 0.0.0.0/0 -j MASQUERADE
  1. Изменим /etc/defaults/dhcp, добавив в директиву “INTERFACES”, bluetooth интерфейс - bnep0:
# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
#       Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACES="bnep0"

"Поправим" /etc/dhcpd.conf:

subnet 192.168.126.0 netmask 255.255.255.0 { 
server-identifier 192.168.126.1;
server-name “ssh2”;
range 192.168.126.100 192.168.126.200;
option domain-name-servers insert-your-ns-here;
option routers 192.168.126.1; 
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.126.255;
default-lease-time 600; 
max-lease-time 7200;
}
  1. В /etc/bluetooth/hcid.conf, раскомментировав директивы “auth enable;" и “encrypt enable;"
# Authentication and Encryption (Security Mode 3)
auth enable;
encrypt enable;
  1. В файл /etc/bluetooth/pin необходимо внести pin-код, который в дальнейшем будет использован для сопряжения с другими устройствами:
echo -n "553399" > /etc/bluetooth/pin
  1. Перезапустим сервис /etc/init.d/blues-utils restart
  2. Выполним:
 
echo 1 > /proc/sys/net/ipv4/ip_forward

И отредактируем /etc/sysctl.conf, для автоматической установки этого параметра при загрузке.

##############################################################3
# Functions previously found in netbase
#
...
# Uncomment the next line to enable packet forwarding for IPv4
#net/ipv4/ip_forward=1
  1. Осуществим сопряжение устройств, создадим подключение и начнем работать!