在嵌入式Linux中實(shí)現(xiàn)802.11b無(wú)線網(wǎng)關(guān) |
發(fā)布時(shí)間: 2012/8/26 18:06:30 |
構(gòu)成有線網(wǎng)絡(luò)的傳輸媒介主要依賴銅纜或光纜;但有線網(wǎng)絡(luò)在某些場(chǎng)合要受到布線的限制,特別是當(dāng)要把相隔較遠(yuǎn)的節(jié)點(diǎn)連接起來(lái)時(shí),敷設(shè)專用通信線路的布線施工難度大、費(fèi)用高、耗時(shí)長(zhǎng),對(duì)正在迅速擴(kuò)大的連網(wǎng)需求形成了瓶頸。無(wú)線局域網(wǎng)的出現(xiàn)克服了上述缺點(diǎn),因此無(wú)線局域網(wǎng)發(fā)展比較迅速;802.11b的產(chǎn)品已成為應(yīng)用主流。這些產(chǎn)品使用的是2.4 GHz頻段,能夠在短距離內(nèi)實(shí)現(xiàn)11 Mb/s的接入速率,每個(gè)接入點(diǎn)可以同時(shí)支持多個(gè)用戶的接入。而無(wú)線網(wǎng)關(guān)作為連接無(wú)線終端與有線網(wǎng)絡(luò)之間的橋梁,是構(gòu)成無(wú)限局域網(wǎng)的重要組成部分。作者重點(diǎn)要探討的就是如何在嵌入式Linux系統(tǒng)上實(shí)現(xiàn)無(wú)線網(wǎng)關(guān)的功能。
1、嵌入式Linux的基本原理 配置Linux的內(nèi)核模塊,用PCMCIA CardService的方式驅(qū)動(dòng)PCMCIA,運(yùn)行“make modeules”以及“make modeules_install"來(lái)產(chǎn)生和安裝核心模組。由于標(biāo)準(zhǔn)發(fā)行的“Linux內(nèi)核源碼中,橋接功能和封包過(guò)濾功能(NetFiIi—ter)不能一起正常工作,因此為了要在同一臺(tái)計(jì)算機(jī)上同時(shí)運(yùn)行橋接功能和IPtables,需要對(duì)核心源碼進(jìn)行修補(bǔ)。相關(guān)補(bǔ)丁可以從http://bridge.sourceforge.net/上下載。另外,要獲取PCMCIA-CS 3.2.1和PRISM2 HlostAP的驅(qū)動(dòng)程序包,移植PCMCIA-CS和PRISM2 HostAP的驅(qū)動(dòng)程序。完成這一步工作需要具有Linux下編譯程序源碼的簡(jiǎn)單知識(shí),主要是交叉編譯器(GCC)的使用。編譯好的模塊*.o文件放在/lib/modules/2.4.4/misc:下,然后用depmod-a使此模塊成為可加載模塊。模塊用insmod命令加載,用rmmod命令卸載,并可以用lsmod命令查看所有已加載的模塊的狀態(tài)。最后,橋接有線網(wǎng)卡和無(wú)線網(wǎng)卡,需要Linux下硬件(主要是網(wǎng)卡)配置和網(wǎng)絡(luò)配置的一些基本知識(shí)。 模塊搭建完畢后進(jìn)行橋接功能的構(gòu)建。解開(kāi)橋接補(bǔ)丁bridge-utils.tar.gz,編譯全部通過(guò)并且移植成功后,可以用“ifconfig-a”命令查看所有的網(wǎng)絡(luò)接口:lo——本地loopback設(shè)備;ethO——第一個(gè)以太網(wǎng)卡;ethl——第二個(gè)以太網(wǎng)卡;wlan0——無(wú)線網(wǎng)卡。用“ifconfig<設(shè)備>0.O.0.O”命令改變除了lo設(shè)備以外所有網(wǎng)絡(luò)接口的工作方式,以迫使系統(tǒng)進(jìn)入雜亂模式,可以接收所有數(shù)據(jù)包。然后,執(zhí)行“brctl addbr br0”命令來(lái)添加一個(gè)名字為br0的橋接設(shè)備,再用“bretl addif br0 ethO”和“brctl addif br0wlan0"把無(wú)線端和有線端的接口綁定。接著,用“ifeonfigbr0 192.168.2.18 up'’使橋接設(shè)備生效。 內(nèi)核配置時(shí)選定GeneraI setup--->[*]Sysctlsupport,這樣才會(huì)在板子的文件系統(tǒng)中/proc/sys/net/ipv4/出現(xiàn)ip_forward文件,然后在應(yīng)用程序中提供ena程序(加到etc/init.d/rcS中一句/bin/ena-e),將ip_for-ward文件中默認(rèn)的0改為1,這樣就打通了數(shù)據(jù)轉(zhuǎn)發(fā)的通道。下面就是要加上iptables,以支持NAT(NetWork Ad—dress Translation)。從網(wǎng)上下載iptables-1.2.5軟件,在iptables-1.2.5目錄下執(zhí)行make,編譯通過(guò)后,將生成的可執(zhí)行文件iptables加到ramdisk里面,然后燒寫(xiě)到板子上進(jìn)行配置即可。 iptables對(duì)NAT的支持既需要Linux內(nèi)核的支持,還需要iptables命令的設(shè)置: 、賰(nèi)核編譯選項(xiàng)。在內(nèi)核配置選單中的“Networkingoptions--->"選項(xiàng)下,選中“NetWork packet filtering(replaces ipchains)”項(xiàng),并且在下面的“IP:Netfilter Con—figuration--->”選項(xiàng)中選擇全部選項(xiàng)。 、趇ptables命令支持 #!/bin/bash # 打開(kāi)端口轉(zhuǎn)發(fā) echo 1>/proc/sys/net/ipv4/ip_forward加入轉(zhuǎn)發(fā)規(guī)則:iptables - t nat - A POS—TROUTING - 0 ethl - j MASOUERADE。 至此,構(gòu)建無(wú)線網(wǎng)關(guān)的工作全部完成。 3、測(cè)試結(jié)果 搭建無(wú)線網(wǎng)關(guān)的測(cè)試系統(tǒng)如圖2所示。 將上位機(jī)的網(wǎng)關(guān)設(shè)置為172.17.248.169,用VB 6.0在上位機(jī)上開(kāi)發(fā)一個(gè)負(fù)責(zé)監(jiān)聽(tīng)網(wǎng)絡(luò)的應(yīng)用程序;在無(wú)線終端一方編寫(xiě)一個(gè)客戶端程序,負(fù)責(zé)客戶端數(shù)據(jù)的發(fā)送和接收顯示,并在無(wú)線終端一方添加從網(wǎng)關(guān)到上位機(jī)的路由。然后,上位機(jī)運(yùn)行ping命令,測(cè)試結(jié)果如下: # ping 192.168.6.100 PING 192.168.6.100 (192.168.6.100):56 data bytes 64 bytes from 192.168.6.100:icmp_seq=0 ttl=255 time=1.8 ms 64 bytes from 192.168.6.100:icmp_seq=1 ttl=255 time=1.4 ms 64 bytes from 192.168.6.100:icmp_seq=2 ttl=255 time=1.4 ms 64 bytes from 192.168.6.100:icmp_seq=3 ttl=255 time=1.4 ms ---192.168.6.100 ping statistics---4 packets transmitted,4 packets received,0% packet loss round—trip min/avg/max=1.4/1.5/1.8 ms上位機(jī)與無(wú)線終端通信的測(cè)試結(jié)果如圖3所示。
本文出自:億恩科技【1tcdy.com】 本文出自:億恩科技【www.enidc.com】 --> 服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |