суббота, 22 сентября 2007 г.

Раздача Интернета по Bluetooth между компьютером и другими устройствами в Ubuntu 7.04 c динамическим назначением IP адреса

Я решил раздать интернет с настольного компьютера по bluetooth другим устройствам. В моем случае интернет нужен на кпк, т.к. wi-fi точки дома у меня нет.

Итак, имеется настольный компьютер с ubuntu 7.04 и кпк FS Loox N560. Настройка до работоспособности у меня заняла минут 40, правда оставалась проблема с поднятием интерфейса при повторном соединении, поэтому еще минут 40 понадобилось понять как это исправить, поставить ifplugd и настроить его. Конфигурация универсальная, можно подключать коммуникаторы, ноутбуки и другие устройства поддерживающие сетевое подключение по bluetooth без каких либо усилий.

Устанавливаем следующие пакеты:

sudo apt-get install bluez-utils dhcp3-server ifplugd

Пакет ifplugd нужен для корректного отключения сетевого интерфейса при разъединении.

В файле /etc/bluetooth/hcid.conf устанавливаем passkey, для того чтоб компьютер автоматически выдавал код для спаривания. Это не обязательно, но так удобнее:
#Код может быть любым числом
passkey "0000";

Так же в этом же файле должны присутствовать строки:
options {
#.............................
autoinit yes;
security auto;
pairing multi;
#.............................
}

device {
#..............................
lm accept, master;
#..............................
}

В файле /etc/default/bluetooth должны присутствовать такие строки:
#Включение автоматической загрузки демона для поддержки сети и параметры его запуска
PAND_ENABLED=1
PAND_OPTIONS="--listen --role NAP --devup /etc/bluetooth/pan/dev-up"

В файле /etc/default/ifplugd должны присутствовать следующие строки:
HOTPLUG_INTERFACES="bnep0"
ARGS="-f -u0 -d10 -w -I"

Обратите внимание что в ARGS должен отсутствовать параметр "-q", иначе при отключении соединения ifplugd не будет срабатывать, и сетевой интерфейс будет считаться поднятым, поэтому при следующем подключении интерфейс не поднимется.

Далее создаем директорию /etc/bluetooth/pan:
mkdir /etc/bluetooth/pan

В этой директории создаем файл dev-up со следующим содержимым:
#!/bin/sh
#Разрешаем форвард пакетов
echo 1 > /proc/sys/net/ipv4/ip_forward
#Пауза
sleep 2
#Перезапуск dhcp сервера
/etc/init.d/dhcp3-server restart

Данный скрипт будет автоматом запускаться при установке соединения.

Ставим на этот файл права запуска:
chmod +x /etc/bluetooth/pan/dev-up

В файле /etc/network/interfaces добавляем следующее:
iface bnep0 inet static
#Адрес компьютера в сети bluetooth
address 10.0.254.1
#Маска подсети
netmask 255.255.255.240
#Настройка iptables для раздачи интернета
post-up iptables -t nat -A POSTROUTING -s 10.0.254.0/24 -j MASQUERADE
post-up iptables -A FORWARD -i bnep0 -o eth0 -j ACCEPT
post-up iptables -A FORWARD -o bnep0 -i eth0 -j ACCEPT
#При отключении останавливаем dhcp сервер
pre-down /etc/init.d/dhcp3-server stop

В файле /etc/dhcp3/dhcpd.conf меняем эти строчки на наши:
#Название сети
option domain-name "homenet.local";
#Адрес DNS сервера вашего подключения к Интернет
option domain-name-servers 192.168.0.1;

И туда же добавляем:
subnet 10.0.254.0 netmask 255.255.255.0 {
range 10.0.254.1 10.0.254.10;
#Адрес DNS сервера вашего подключения к Интернет
option domain-name-servers 192.168.0.1;
#Название сети
option domain-name "homenet.local";
option routers 10.0.254.1;
option broadcast-address 10.0.254.255;
default-lease-time 600;
max-lease-time 7200;
}

Перезапускаем bluetooth:
/etc/init.d/bluetooth restart

Спариваем устройства и подключаемся к сети и мы в интернете.
Для КПК нужно выбрать тип сети Internet.

Данную конфигурацию можно использовать для создания полноценной локальной сети, например, между ноутбуком и компьютером, понадобится только дополнительно установить samba и настроить.

2 комментария:

virens комментирует...

Очень полезная и интересная статья! Большое спасибо!
Интересно наладить таким образом сеть между ноутбуком и планшеткой N800, которая быстро дохнет от WiFi.

Виктор Скляр комментирует...

расскажите как сделать P900 + gnubox + Ubuntu