劉耀義
摘 要:嵌入式系統(tǒng)技術具有專用性強、系統(tǒng)精簡等優(yōu)點,具有非常廣闊的應用前景,其中,嵌入式Linux系統(tǒng)在許多領域得到了廣泛的應用。對基于嵌入式Linux系統(tǒng)的無線路由器設計進行了詳細的介紹,提出了一種基于嵌入式Linux系統(tǒng)的無線路由器設計方案。
關鍵詞:Linux;hostapd;DHCP服務器;無線路由器
中圖分類號:TP316.81 文獻標識碼:A DOI:10.15913/j.cnki.kjycx.2016.21.112
近年來,科學技術取得了巨大的進步,計算機及互聯(lián)網產業(yè)也得到了迅猛的發(fā)展,且對我國國民經濟的發(fā)展起到了推動作用。其中,嵌入式Linux系統(tǒng)具有性能優(yōu)異、軟件移植容易以及實時性能、穩(wěn)定性能、安全性能良好等優(yōu)點,在許多領域得到了廣泛的應用。基于此,本文對基于嵌入式Linux系統(tǒng)的無線路由器設計進行介紹。
1 總體設計
Linux是一套免費使用和自由傳播的類Unix操作系統(tǒng),是一個基于POSIX和UNIX的多用戶、多任務、支持多線程和多CPU的操作系統(tǒng)。它能運行主要的UNIX工具軟件、應用程序和網絡協(xié)議。它支持32位和64位硬件。Linux繼承了Unix以網絡為核心的設計思想,是一個性能穩(wěn)定的多用戶網絡操作系統(tǒng)。實現(xiàn)嵌入式操作系統(tǒng)有2種方法:①采用比較成熟的系統(tǒng)軟件,并適當?shù)剡M行修改;②根據(jù)具體的應用需求,自己編寫系統(tǒng)軟件。第一種方法固然有投入少、開發(fā)周期短等優(yōu)點,但是在一些特殊的應用時,往往要對系統(tǒng)進行大規(guī)模的修改與裁減,其工作量十分巨大。而第二種方法可以很好地把握具體應用,其工作量固然不少,但是最后的系統(tǒng)與具體應用可以很好地吻合。寬帶路由器就是這種特殊的應用。
2 Linux系統(tǒng)移植和編譯
Linux作為一個自由軟件,在廣大愛好者的支持下,內核版本不斷更新。新的內核修訂了舊內核的bug,并增加了許多新的特性。如果用戶想要使用這些新特性,或想根據(jù)自己的系統(tǒng)度身訂制一個更高效、更穩(wěn)定的內核,就需要重新編譯內核。Linux分為用戶空間和內核空間,用戶通常接觸到的是用戶空間,通過用戶空間和內核空間的轉換機制訪問內核空間。用戶空間里包含開源的GNUCLibrary庫,不僅提供了操作系統(tǒng)的系統(tǒng)調用接口,還提供了用戶空間應用和內核空間切換的機制。由于內核空間和用戶空間的應用程序使用的地址空間不同,所以只能通過系統(tǒng)調用進入內核。每個用戶空間的進程都使用自
己的虛擬地址空間,而內核則占用單獨的地址空間。
Linux內核可以進一步劃分成3層。最外面是系統(tǒng)調用接口,由于Linux操作系統(tǒng)把所有設備都當作文件看待,所以會有這些基本的功能,比如open、read、write、close等,這些功能都是在該層提供的;接著是內核代碼,即獨立于處理器的內核代碼,這些代碼是所支持的所有處理器體系結構所通用的,包括進程管理、進程通信、文件管理、設備管理、內存管理、網絡協(xié)議等;最底層是依賴于處理器的代碼,構成了通常稱為BSP(Board Sup?port Package)的部分,這些代碼僅適用于特定處理器平臺,我們移植的主要工作就是該部分與處理器相關的代碼。
3 hostapd編譯和設置
hostapd能夠在用戶空間通過守護進程的方式使得無線網卡切換為master模式,模擬軟件AP(通??梢哉J為是路由器)功能。Hostapd的實現(xiàn)的AP具有認證服務器的功能,負責控制管理stations(通常可以認為帶無線網卡的PC)的接入和認證。通過開啟hostapd守護進程可以將無線網卡切換為AP/Master模式,通過修改配置文件,可以建立一個不加密的、WEP加密、WPA或WPA2加密的無線網絡,并且可以設置無線網卡的各種參數(shù),包括頻率、信號、beacon包時間間隔,是否發(fā)送beacon包,是否響應探針請求等,還可以設置基于物理mac地址過濾條件等。hostapd在Linux操作系統(tǒng)上運行時是一個后臺守護進程,作為后臺組件來控制和管理認證功能。hostapd支持多個前臺程序,比如hostapd_cli,就是一個與hostapd一起的命令行前臺程序。hostapd是一個訪問點以及EAP服務器和RADIUS授權服務器的運行于用戶空間的守護程序。它實現(xiàn)了IEEE802.11接入的管理功能,是IEEE802.1X/WPA/WPA2/EAP的認證服務器,是RADIUS client、EAP server and RADIUS認證服務器。
我們通過使用以前搭建好的交叉編譯環(huán)境arm-nonelinux -gnueabi-gcc來實現(xiàn)軟件包的移植和安裝。首先編譯ho?stapd依賴的軟件包libnl庫,使用以下命令進行配置./configure–prefix =$PWD/_install–host=arm-none-linux-gnueabi,然后再執(zhí)行make,makeinstall即可編譯安裝libnl庫;然后進入hostapd源代碼目錄,執(zhí)行exportCC=/opt/buildroot/sysroot/usr/bin/armnone -linux-gnueabi -gcc,然后再執(zhí)行make,makeinstall完成ho?stapd的編譯和安裝。
4 dhcpd編譯和配置
DHCP(Dynamic Host Configuration Protocol,動態(tài)主機配置協(xié)議)是一個TCP/IP網絡協(xié)議,傳輸層使用UDP協(xié)議工作,主要有2個用途:給內部網絡自動分配IP地址,使網絡環(huán)境中的主機動態(tài)的獲得IP地址、網關地址、DNS服務器地址等信息,并能夠提升地址的使用率。DHCP協(xié)議采用客戶端/服務器模型,主機地址的動態(tài)分配任務由網絡主機驅動。當DHCP服務器接收到來自網絡主機申請地址的信息時,才會向網絡主機發(fā)送相關的地址配置等信息,以實現(xiàn)網絡主機地址信息的動態(tài)配置。Dhcpd是在Linux操作系統(tǒng)上實現(xiàn)DHCP功能的一個開源軟件包。該軟件包具有占用資源少、可靠性高、性能很好的特點,因此特別適合嵌入式系統(tǒng)使用。
我們通過修改Makefile:添加:CROSS_COMPILE=armnone -linux-gnueabi,然后執(zhí)行make,把生成的dhcpd文件下載到板子上,再執(zhí)行cpsamples/udhcpd.conf/etc,將dhcpd的配置文件復制到系統(tǒng)根文件系統(tǒng)當中,使用vi編輯器修改/etc/ud?hcpd.conf文件如下:
#The start and end of the IP lease block
start 192.168.1.20
end 192.168.1.25
#The interface that udhcpd will use
interface wlan0
#Examles
opt dns 222.201.130.30222.201.130.33
option subnet 255.255.255.0
opt router 192.168.1.10
option dns 192.168.1.10
option domain local
option lease 864000
然后就可以在Linux系統(tǒng)啟動后使用./dhcpd&命令開啟DHCP功能,我們使用PC測試可以獲取一個192.168.1.20的IP地址。
5 NAT配置
路由器可以分為核心路由器、匯聚路由器以及把個人用戶接入網絡的接入路由器。接入路由器能夠實現(xiàn)網絡數(shù)據(jù)包的路由、過濾功能,并且采用NAT(Network Address Translation)轉換技術,把局域網內部私用有IP地址轉換成一個合法的公網IP地址,使私有網絡中多臺主機共享一個合法的IP地址訪問因特網。這一項技術極大地解決了IPv4版本協(xié)議地址不足的問題。本設計中的無線路由器使用Linux內核的iptables技術實現(xiàn)NAT轉換功能,實現(xiàn)多臺主機接入并訪問因特網。NAT工作原理是:客戶機將NAT主機設置為默認網關,當NAT主機收到客戶機的網絡數(shù)據(jù)包時,對其進行修改,將源地址替換為自己的地址,將源端口號換成一個新的端口號,并且對該過程進行記錄;當接收到響應數(shù)據(jù)包時,通過查看以上過程記錄,再將網絡數(shù)據(jù)包進行修改,將其目的IP地址及端口號替換為原來記錄的客戶機IP地址和端口號,然后再發(fā)送給內部網絡的客戶機。
在本無線路由器中,我們進行以下設置:首先打開內核的IP轉發(fā)功能,輸入以下命令sudobash–c“echo1>/proc/sys/net/ ipv4/ip_forward”;然后設置實現(xiàn)設置NAT功能,即網絡地址轉換,輸入以下命令sudoiptables–tnat–APOSTROUTING–oeth0–jMASQUERADE。至此,我們就開啟了Linux內核的數(shù)據(jù)轉發(fā)和地址轉換功能,無線路由器的功能就實現(xiàn)了。
6 結束語
綜上所述,嵌入式Linux系統(tǒng)具有性能優(yōu)異、移植容易、代碼開放、有許多應用軟件支持等優(yōu)點,在數(shù)據(jù)網絡、路由器、ATM機、遠程通信、工業(yè)控制等領域得到廣泛的應用。本文以嵌入式Linux系統(tǒng)為基礎,設計了一種無線路由器。該無線路由器具有無線路由器的基本功能,且具有良好的穩(wěn)定性和安全性,對其他無線路由器設計具有重要的參考價值。
參考文獻
[1]張彥.基于嵌入式Linux的小型3G無線路由器設計[J].信息通信,2014(11).
[2]黃小敏,余翔,宋瑤.嵌入式Linux系統(tǒng)的3G/4G路由器設計[J].單片機與嵌入式系統(tǒng)應用,2014(04).
〔編輯:劉曉芳〕