BBS討論: http://www.Linuxsir.org/bbs/showthread.PHP?s=&postid=370810
主要內容:
很久沒有給linuxsir貢獻啥技術文章,今天在MSN上看到北南大哥很是不好意思。不寫一個實在對不住版主的名號了。既然要貢獻文章就要寫國內沒有的,
1.用中文Google搜了一下, “linux pan” 好象沒找到相關的技術文章,也許我沒多翻吧。
2.所以決定原創一下,呵呵,原創哦。
3. 置辦設備,買了一個ipaq2210(有內置蘭牙,沒有wifi),一個usb dongle就是usb蘭牙卡。
4. 准備開始寫了哦。
(以上幾件事情真實順序可能有異)
既然是原創就先寫上大名:
[email protected]
蘭牙下面的ip無線網路叫pan,蘭牙設備突出個人進距離電子設備的鏈接,用personal也不錯。和我們適用的一般的網路一樣,pan上面也有客戶機,router,hub。不過這些角色都是又蘭牙設備扮演的,而通過適當的設置一個帶有蘭牙adapter的linux box 三個都可以作。
在說這個無線網路之前,先說說怎麼讓linux支持蘭牙。
首先我們找到蘭牙linux的官方網站bluez。sourceforge。net
然後在這個頁面
http://bluez.sourceforge.net/download/download.Html
下載
bluez-libs bluez-utils bluez-sdp bluez-pan
這幾個包。省下的幾個倒數2,3我們用不到,最後一個如果你有XXX硬件的話考慮一下(自己去bluez查查)
然後在http://www.holtmann.org/linux/kernel/
這個地方下載相應內核的補丁,我的是2.4.20的。
然後把你的內核打補丁,編譯,把蘭牙部分多出來的幾個模塊都選上反正是M,不占地方,如果你不確定具體哪個有用哪個沒用的話。
搞好內核之後逐一安裝上面下載的就個包,按照我list的順序哦。簡單的
./configure && make && make install 就可以了。
now we can R&R
首先加載內核模塊:
modprobe bluez (蘭牙支持)
modprobe hci_usb (usb蘭牙設備用的到。)
具體要加什麼模塊可以看看 http://www.holtmann.org/linux/bluetooth/devices.html
找到你的設備需要什麼模塊的支持。
modprobe l2cap
modprobe bnep (pan網路設備)
接著調用兩個守護進程。
hcid
sdpd
這個時候你可以用bluez-util自帶的工具看看你的設備
hciconfig
如果你的蘭牙裝上了並且被識別,會看到hci0這樣一個設備,如果你看到了花花綠綠的mac地址就是說明這個設備已經啟動了,如果是00:00:00:00:。。。。
hciconfig hci0 up
啟動它,和ifconfig很象吧。呵呵
現在我們可以啟動PAN守護進程了,在開始之前先說說幾個名詞。
1. PANU ( pan裡面的客戶機,就是PAN user了。呵呵)
2. GN 照我的理解就是pan裡面的hub
具體看這個圖:
+------+ +------+ +------+
PANU PANU PANU
+------+ +------+ +------+
\ /
\ /
\ /
\ /
\ /
\ /
\ /
+---------+
GN
+---------+
/ \
/ \
/ \
/ \
/ \
/ \
+------+ +------+ +------+
PANU PANU PANU
+------+ +------+ +------+
3. NAP,network Access point,照我的理解就是可以作pan通向其他網路的router的東西。
這個東西我們會比較需要,結構入圖:
+====================+
LAN InfrastrUCture
+====================+
+---------+
NAP
+---------+
/ \
/ \
/ \
/ \
/ \
/ \
+------+ +------+ +------+
PANU PANU PANU
+------+ +------+ +------+
好了就我的情況來看,我的linux機上面有dsl,插了蘭牙usb,並且已經驅動,我就要把這個機器設置成NAP來使得其他的設備(我的ipaq)可以用蘭牙鏈接到dsl上面。
首先設置我們的linux機為蘭牙的主機,在你的NAP或者GN機器上面要執行這個命令
pand --master
然後,啟動pan的監聽,並且適用NAP
pand --listen --role NAP
接著鏈接我的ipaq,這裡的mac地址,你的設備上面怎麼查我就不說了。自己搞定,如果是你linux機器上面的設備hciconfig裡面是可以看到mac地址的。
pand --connect 00:04:3E:41:F2:39(要鏈接的PANU設備的蘭牙mac) --service NAP
到此位置台式機設置告一段落。我配置好了ipaq的pan,並且設定固定ip為10.0.0.2,網關為10.0.0.1,然後搜索鏈接蘭牙設備,很幸運,成功的鏈接到了,BlueZ(我的linux機的蘭牙設備名)設備上面的 group network。
在鏈接建立之後linux裡面會多出一個bnep0的設備這個就是我們蘭牙鏈接的虛擬網卡了。
給他一個ip。
ifconfig bnep0 10.0.0.1
再ifconfig,呵呵多了一個bnep設備吧,用一個最常用的共享鏈接的方法:
iptables -t nat -A POSTROUTING -o ppp0 -s 10.0.0.1/24 -j MASQUERADE
OK,我的ipaq通過蘭牙可以上網了。
呵呵這裡說說如果是另外一個linux機如何設置,假如我還有一個筆記本,也有一個蘭牙卡。想通過蘭牙上無線網路。
首先需要象前面linux機那樣設置好bluez的支持
然後在你的linux主機上面啟動NAP
pand --master
pand --listen --role NAP
pand --connect xx:xx:xx:xx(你筆記本的蘭牙mac) --service NAP
接著在你的筆記本上面啟動PANU
pand --connect 00:37:5C:67:D3:02(你linux主機的蘭牙mac) --service PANU
現在你的兩個機器應該在蘭牙上面連通了,下面建立ip鏈接
在主機 ifconfig bnep0 10.0.0.1
on laptop: ifconfig bnep0 10.0.0.2
設置網關和路由
主機:
iptables -t nat -A POSTROUTING -o ppp0(你鏈接internet的網路設備) -s 10.0.0.1/24 -j MASQUERADE
筆記本:
/sbin/route add -net default gw 10.0.0.1 netmask 0.0.0.0 metric 1 bnep0
不出意外你的筆記本就可以用蘭牙上無線網路了。
局我研究,usb蘭牙卡有些雜牌是很便宜的,比你在家裡買一個無線router,再加筆記本一個無線網卡要便宜的多。所以如果你有一個筆記本象在家裡上無線,用蘭牙是一個好選擇。呵呵。
主機:
iptables -t nat -A POSTROUTING -o ppp0(你鏈接internet的網路設備) -s 10.0.0.1/24 -j MASQUERADE
筆記本:
/sbin/route add -net default gw 10.0.0.1 netmask 0.0.0.0 metric 1 bnep0
不出意外你的筆記本就可以用蘭牙上無線網路了。
局我研究,usb蘭牙卡有些雜牌是很便宜的,比你在家裡買一個無線router,再加筆記本一個無線網卡要便宜的多。所以如果你有一個筆記本象在家裡上無線,用蘭牙是一個好選擇。呵呵。