From: fr33man <fr33man@fr33man.ru.>
Date: Mon, 28 Nov 2006 18:21:07 +0000 (UTC)
Subject: Подключение КПК к FreeBSD через Bluetooth для выхода в сеть.
Оригинал: http://www.lissyara.su/?id=1282
О чем эта статья?
Я написал эту статью после трех дней мучения и головоломания. Идея
была проста: у меня был КПК(HP hx4700) и два компьютера, один из
которых домашний(под управлением ОС Linux), а второй --
роутер(FreeBSD 5.4). Причем домашний выходил в инет через роутер.
Поэтому было решено подружить КПК и фрю. После часа изучения рунета я
понял, что связывать буду через bluetooth, соглачитесь -- не очень
приятно тоскать с собой крэдл ;) .
А с помощью bluetooth можно передвигаться, не завися от проводов.
Пришлось смотаться в ближайшую компьютерную лавочку и купить
USB-bluetooth(~10$).
Можно было приступать к спариванию устройств! :)
Подключения USB-bluetooth к роутеру(FreeBSD).
Работу с bluetooth-устройствами во FreeBSD осуществляет модуль
ng_ubt, который, кстати, написан нашим соотечественником Максимом
Евменкиным. За что ему -- огроменый респект! Итак, перед подключением
устройства нужно погрузить этот модуль:
# kldload ng_ubt
После этого можно смело вставлять bluetooth адаптор в usb-порт. Если
посмотреть /var/log/messages, то там будут записи типа таких:
Если у Вас примерно такие же записи, то все хорошо. Девайс определился
как ubt0. теперь нам нужно активировать интерфейс, чтобы мы смогли
работать с bluetooth-устройствами:
С помощью ppp, мы сможем соеденить КПК и роутер в сеть и
соответственно открыть КПК доступ в инет.
Для начала запустим сервер sdpd, который нужен для того, чтобы КПК
нашел наши службы:
Теперь можно перейти к составлению конфига /etc/ppp/ppp.conf:
rfcomm-server:
set timeout 0
set lqrperiod 10
enable lqr
accept lqr
set ifaddr 172.16.0.1 172.16.0.10 255.255.255.0
enable force-scripts
set dial "CLIENT CLIENTSERVER"
accept dns
disable pap
deny pap
disable chap
deny chap
Такой простенький конфиг. Обо всех опциях можно почитать в мане. Я
остановлюсь только на одной:
set ifaddr. Первый аргумент -- ip-адрес шлюза, второй -- адрес,
который будет выдан клиенту, ну и третий -- маска сети.
Теперь все работает и можно переходить к тестированию. Но так как моей
задачей было выпустить КПК в инет, то нужно настроить нат.
Это будет Вашим Домашним заданием. ;)
Тестирование.
К сожалению предоставить скрины с КПК я не с могу по техническим
причинам, поэтому смотреть будем только со стороны сервера.
Для начала подключитесь к сети на КПК. Когда Вас попросят ввести имя
пользователя и пароль -- ничего не вводите, а просто нажмите ОК.
После этого Вы подключитесь к сети. Давайте посмотрим что произошло на
сервере:
# tail /var/log/ppp.log
Feb 5 15:41:19 fr33man ppp[34325]: Phase: Using interface: tun0
Feb 5 15:41:19 fr33man ppp[34325]: Phase: deflink: Created in closed state
Feb 5 15:41:19 fr33man ppp[34325]: Phase: PPP Started (direct mode).
Feb 5 15:41:19 fr33man ppp[34325]: Phase: bundle: Establish
Feb 5 15:41:19 fr33man ppp[34325]: Phase: deflink: closed - > opening
Feb 5 15:41:19 fr33man ppp[34325]: Phase: deflink: Connected!
Feb 5 15:41:19 fr33man ppp[34325]: Phase: deflink: opening - > dial
Feb 5 15:41:20 fr33man ppp[34325]: Phase: deflink: dial - > carrier
Feb 5 15:41:20 fr33man ppp[34325]: Phase: deflink: carrier - > login
Feb 5 15:41:20 fr33man ppp[34325]: Phase: deflink: login - > lcp
Feb 5 15:41:20 fr33man ppp[34325]: Phase: deflink: lcp - > open
Feb 5 15:41:20 fr33man ppp[34325]: Phase: bundle: Network
# ifconfig tun0
tun0: flags=8051< UP,POINTOPOINT,RUNNING,MULTICAST > mtu 1500
inet6 fe80::240:f4ff:fe7e:aea4%tun0 prefixlen 64 scopeid 0x9
inet 172.16.0.1 -- > 172.16.0.10 netmask 0xffffff00
Opened by PID 34325
Как видно все работает. Теперь проверим как передаются файлы. Если Вы
на КПК попробуете передать файл на сервер, то он будет передан без
ошибок,
НО на сервере не вылетит никакого предупреждающего сообщения о приеме
файла. И переданный файл можно найти в /var/spool/obex.
А давайте соеденимся по протоколу OBEX с КПК:
# obexapp -a kpk -C OPUSH
obex> put /etc/passwd
Success, response: OK, Success (0x20)
obex> di
Success, response: OK, Success (0x20)
Мы передали файл /etc/passwd. Он сохранился в папке My Documents на
КПК.
Заключение.
Я брал информацию из многих источников, в том числе и английских. Где
об этом можно почитать: freebsd.org(handbook), google.com, man.