Настройка беспроводной сети в FreeBSD с использованием Bluetooth [2008]
Введение, или что заставило меня заниматься подобным извращением
Приобрел я себе ноутбук ThinkPad T60, включаю - на нем Виста. Бизнес. "Это не тру", подумал я - "на моем ноутбуке должна быть правильная ось". Беру диски со свежим дистрибутивом FreeBSD 7.0, устанавливаю. Встала как родная, и все оборудование определила. Так, теперь нужно перенести все конфиги с домашнего компьютера на ноутбук, создать привычное себе окружение, да и музыку скинуть неплохо. Достаю метровый кусок cross-over'а, соединяю машины, ifconfig на ноутбуке, ifconfig на десктопе. Что? У тебя нет сетевого интерфейса rl0? А куда он делся? Так... Все понятно... Сетевая карта в десктопе отъехала в иной мир. Ноутбук может общаться с внешним миром с помощью Wi-Fi, Ethernet'a, Bluetooth'a и IrDA. Десктоп теперь имеет Bluetooth и IrDA. Значит дружить устройства придется с помощью Bluetooth.
Теоретическая часть
Устройство Bluetooth может предоставлять следующие сервисы (это упрощенный список, строго говоря их 30) 1 Bluetooth Serial Port 2 Dial-Up Networking 3 Fax Service 4 File Transfer 5 Information Exchange 6 Information Synchronization 7 Network Access 8 Advanced Audio Distribution 9 Headset Profile 10 Hardcopy Cable Replacement 11 Human Interface Device 12 Basic Image 13 Service Dicovery
На текущий момент во FreeBSD реализована поддержка 1, 2, 4, 5, 7, 11 и 13 сервиса из этого списка. Функционирование 1, 2, 7 осуществляется посредством утилиты rfcomm_pppd, 4 и 5 - утилитой obexapp, за 11 отвечает демон bthidd. Для того чтобы клиентские устройства могли обнаружить работающие сервисы, дожен быть запущен демон sdpd, отвечающий за базовый, 13 сервис. Нас в данный момент интересует сервис Network Access, запуском которого сейчас мы и займемся. Согласно ману, rfcomm_pppd является оберткой для работы ppp, и может запускаться как в режиме клиента, так и сервера. Так как соединение по факту устанавливается при помощи ppp, то необходимо отредактировать файл ppp.conf на будущем клиенте и сервере, создав в ppp.conf разделы серверого и клиентского подключения соответственно. Практическая часть
1 На десктопе и ноутбуке в rc.conf добавляю запуск демона работы с PIN-кодом, и демона обнаружения сервисов.
hcsecd_enable="YES" sdpd_enable="YES"
2 На десктопе и ноутбуке в loader.conf добавляю запуск поддержки стека Bluetooth.
ng_ubt_load="YES"
3 В десктопном ppp.conf создаю раздел под именем lan-server, содержимое раздела я взял из мануала rfcomm_pppd, секция "RFCOMM Server"
lan-server:
set timeout 0
set lqrperiod 10
set ifaddr 10.0.0.110.0.0.2255.255.255.0
enable lqr
accept lqr
accept dns
disable pap
deny pap
disable chap
deny chap
4 В ноутбучном ppp.conf создаю раздел lan-client, содержимое раздела - man rfcomm_pppd, секция "RFCOMM Client"
lan-client
enable lqr
accept lqr
set dial
set timeout 0
disable iface-alias
set ifaddr 10.0.0.1/010.0.0.2/0255.255.255.00.0.0.0
deny pap
disable pap
deny chap
disable chap
5 На десктопе запускаю rfcomm_pppd в режиме сервера командой:
rfcomm_pppd -s -a 00:0c:78:34:3e:73 -C LAN -l lan-server
6 На ноутбуке запускаю rfcomm_pppd как клиент:
rfcomm_pppd -c -a 00:0c:78:34:3e:73 -C LAN -l lan-client
В результате этих манипуляций поднимается интерфейс tun0, и машины начинают видеть друг друга.