【iptables】bluetooth自組網

一.整體解決的思路

本人使用的是bluez5.5,併成功在倆個虛擬機間成功跑了起來。

具體的原理暫不詳細介紹,藍牙的解決方案硬件上通常分爲串口或是USB。

1.串口:

tty驅動<->tty線程規劃<->tty核心。

tty驅動主要承擔註冊字符設備的角色,tty核心則從用戶層或是硬件獲取數據,重點在於tty線程規劃。

線程規劃的工作主要是以(bluetooth)協議轉換的形式,格式化tty核心接收或發送的數據,再在上層的應用進行操作。

 

Q:在linux系統中,串口應用層的節點基本爲/dev/tty*等等,但是在這裏卻找不到什麼相應的節點控制,這是爲什麼???

S:如果使用過telnet就會知道,在另一臺電腦上能夠通過telnet命令鏈接到本機,這裏使用的是網絡設備的流程。即經由了tty線程規劃後的數據,經由tty核心傳到網絡設備後,進行遠程鏈接。UART更多起到一個數據轉換"總線"的作用。

2.USB:

其實USB同樣是由其他的驅動實現功能,而USB則也是起到一個總線的作用,利用的是USB完善的架構來進行整合。iptables的具體工作則是在table加入相應的version id與product Id。

二.應用層實現思路

需要自己抽取源碼真的不太友好,但使用bneptest官方的示例能正常使用了。根據測試用例的思路是,我所要做的是將局域網橋配置好,以及將PANU,GN與NAP註冊進dbus的orz.bluez.NetworkServer1。

傳入成功後,需要完成藍牙配對,hciX下會根據mac生成相應的dev_XX_XX_XX_XX節點,此時可以使用連接。

當然,如果想要完成局域網內訪問外網,則需要設置倆個藍牙設備的IP,以及相應的網橋。網橋我則是通過linux命令設置的。

 

整體的流程。比較討巧的方法,我是在Bluetoothctl中加入新的命令,將PANU,GN與NAP註冊進dbus的orz.bluez.NetworkServer1,這樣省去了摳代碼的煩惱,連接的同樣是參照tools/bneptest.c下實現。

詳細過程已積分上傳→_→

 

 

PS:感覺做倆完整的項目,纔有很大的收穫。回成都後才發現,自己的工作跟這邊對口的太少,找的工作一直是高不成低不就的,不明白到底爲什麼面試,總之感謝盆友收留我的狗命,希望下月能找到合適的工作。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章