Раздача интернета через bluetooth

Купил я давеча себе ноутбук. А поскольку интернет у меня исключительно проводной (LAN), то сразу же встал вопрос о том, как же подключить ноутбук (от моего десктопа до ADSL роутера тянется провод длиною метров 20). wifi адаптера у меня на десктопе тоже нет, но зато есть bluetooth адаптер Tekram TM-304.

Для настройки адаптера понадобятся пакеты bluez-libs и bluez-utils. Основной конфигурационный файл /etc/bluetooth/hcid.conf. Приведу его содержимое после настройки (изначально файл подробно документирован, а в случае возникновения вопросов можно обратиться по адресу man hcid.conf):
options {

autoinit yes;
security auto;
pairing multi;
passkey “123456″;
}

device {
name “BlueZ (%h)”;
class 0×00010c;

discovto 0;
iscan enable; pscan enable;

lm accept;
lp rswitch,hold,sniff,park;
}

Запустим bluetooth демон (в Archlinux перед этим надо запустить dbus): /etc/rc.d/bluetooth start (в Archlinux вызов демона в rc.conf должен быть после запуска dbus).
Теперь при вызове hciconfig -a можно увидеть свой адаптер и его MAC адрес. Он должен быть UP и RUNNING. Подобную операцию проделаем и на лаптопе. Теперь при запуске hcitool scan можно будет увидеть оба компьютера. Установив, например, kdebluetooth можно побаловаться передачей файлов с одной машины на другую. Но этого мало - нужен интернет. Для этого требуется настроить NAP (Network Access Point) с помощью PAN (Personal Area Network).
На десктопе запускаем: pand –listen –role NAP
На лаптопе: pand –connect DESKTOP_MAC_ADDRESS, где DESKTOP_MAC_ADDRESS - MAC адрес десктопа.
Теперь надо настроить интерфейс передачи данных. В случае bluetooth соединения он называется BNEP (Bluetooth Network Encapsulation Protocol).
Выполняем на десктопе: ifconfig bnep0 10.0.0.1
На лаптопе: ifconfig bnep0 10.0.0.2
Теперь можно удостовериться, что оба компьютера видят друг друга, например: ping 10.0.0.1 находит лаптоп. Осталось лишь разрешить направление пакетов с десктопа на лаптоп. Для этого в Archlinux надо записать в /etc/sysctl.conf:
net.ipv4.ip_forward=1
Теперь установим iptables, если этот пакет ещё не установлен. Сделаем такое правило:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Сохраним его: /etc/rc.d/iptables save, запустим iptables:
/etc/rc.d/iptables start

Вот и всё, теперь пинги проходят, а пост этот я пишу с ноута, который через bluetooth выходит в сеть.
Конечно, есть ещё куда стремиться: подключаться дома можно к разным компьютерам, десктоп может иногда выключаться, каждый раз писать руками несколько строчек утомительно. Но над этим я поработаю попозже. Пока есть сеть, а это главное.

Полезные ссылки:

5 коммент. to “Раздача интернета через bluetooth”

  1. Roman Lagunov Says:

    @Igor:

    Статья интересная и полезная, в том смысле, что bluetooth я настраивал, для связи со смартфоном, а вот сеть на BT - ни разу.

    Только вот у меня с моим bluetooth донглом какие-то перманентные проблемы:
    То сетевушка dma потеряет, то вообще при загрузке дойдет до usb и встанет.
    Сейчас я его отключил, и сразу все проблемы исчезли.

  2. Igor Says:

    Автоматизация довольно проста: записываем в /etc/conf.d/bluetooth параметры PAND (что он запускается при старте демона bluetooth и опции запуска, естественно, разные для сервера и клиента). А в /etc/bluetooth/pan/dev-up можно записать поднятие интерфейса (например, на сервере):
    #!/bin/sh
    ifconfig bnep0 10.0.0.1 up

    Этот скрипт выполняется, когда интерфейс bnep0 уже готов к запуску (смотрите man pand). На клиенте я предпочитаю выполнять поднятие интерфейса руками.

  3. Alexandr Says:

    Спасибо, конечно, большое. Только у меня нет ноутбука, а есть наладонник iPAQ а на нем естественно, родной Виндоус от производителя, как бы ему раздать интернет, под ХР это просто - через АктивСинк например. А как быть под Лин?

  4. Igor Says:

    Наладонника я даже в руках никогда не держал, но говорят, что перед операциями с pand надо ввести
    sdptool add NAP, потом запустить pand на сервере, подключиться на КПК (как - не знаю =), по идее уже можно добавить сервер как bluetooth-соединение), потом ifconfig на сервере и настройка IP на КПК…

  5. Igor Says:

    если видно, что при запуске демон не может считать настройки файла hcid.conf (у меня это выражалось в том, что по умолчанию не был доступен ISCAN и имя было по умолчанию, BlueZ (0)), то рекомендуется удалить /var/lib/bluetooth и перезапустить демон.

Ответить