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