【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:感觉做俩完整的项目,才有很大的收获。回成都后才发现,自己的工作跟这边对口的太少,找的工作一直是高不成低不就的,不明白到底为什么面试,总之感谢盆友收留我的狗命,希望下月能找到合适的工作。

 

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