随着IEEE 802.11 b/g协议的普及推广,无线局域网越来越进入我们的日常生活中。它不受网线,网络交换设备的束缚,使人们充分体会到“无限”移动带来的便利和快捷。较之有线局域网络(如:以太网),无线局域网的优势自然不言而喻。
使用Linux做无线AP,有以下几大优势;
- 跨硬件平台:支持大多数CUP,可以做到嵌入式设备,也可以在普通的PC机上,甚至在APPLE的G5机器上实现。
- 低成本,开放性和坚固性:它遵守GPL协议,可以自由使用,开发。最大程度地对公开网络标准的支持。完全可以根据实际情况,自定义,构建系统,达到系统最优。尤其是健壮的2.6内核,保证了作为AP的稳定和高效。
- 实现AP的多样性:可以通过netfilter/filter内核模块做数据包转发(nat技术),也可以通过使用brctl软件作为网桥,也可以通过Zebra软件配制动态路由。
- 灵活性,可扩展性:可以使用netfilter/iptables对数据包过滤,达到防火墙的功能,从而保护内部无线网络,也可以配制squid作为代理服务器,控制无线客户端的通讯,也可以配制cups打印系统,无线使用打印机,还可配制mrtg,监视网络流量。甚至可以配制sendmail, samba等软件,为客户端来提供邮件,windows的文件共享服务,来适应商务办公的需要。
由于Linux操作系统的开放,稳定,跨平台等上述特点,使之成为做无线AP理想平台。
Linux做无线AP,主要概括为2部分,无线网络部分(wireless lan)和数据转发部分(data forward)。
一.无线网络部分:无线局域网网卡的驱动的安装及加载
无线网络的物理参数设置
无线网络的网络层的参数设置(ip/netmask, gateway, DNS)
笔者是用一台PC机,加装TP-Link的TP-WN550G网卡(PCI插槽,54M速率,支持IEEE 802.11 b/g协议)运行CentOS 4.2 (2.6.9内核),做无线AP测试的。
网络背景:
PC机的以太网网卡eth0 接公网,有线通宽带(Cable),使用DHCP协议分配IP
无线网络的客户端是apple本本,ibookG4
无线网络192.168.0.0/24
TP-WN550G网卡是使用Atheros芯片。可以使用 http://madwifi.org站点上的驱动程序。这是一个开源项目,专门用于Atheros芯片无线局域网网卡的Linux驱动程序(2.4或2 .6内核)
必须安装的软件包:sharutils(归档工具),subversion(cvs客户端,在CentOS已经安装)
安装sharutils过程 (安装subversion类似):
tar zxvf sharutils-4.6.tar.gz
cd ./sharutils-4.6
make
make install
准备工作完成,开始安装。
下载源代码:svn checkout http://svn.madwifi.org/trunk madwifi-ng下载完毕后,/root目录下会生成madwifi-ng的目录,
假如先前安装过旧的madwifi程序,要先清除(第一次安装可以跳过)
cd ./madwifi-ng/scripts
./madwifi-unload.bash
./find-madwifi-modules.sh /lib/modules/
清除完毕,进入madwifi的主目录,开始编译:make
然后执行安装:make intsall
系统没有提示出现错误安装,安装成功!准备下一步测试。
开始加载驱动模块:
[root@Jack ~]# modprobe ath_pci
设置成为AP模式:
[root@Jack ~]# wlanconfigath0 create wlandev wifi0 wlanmode ap
madwifi使用的是VAP的概念(即 虚拟AP),既是station mode ,也是master AP mode。这时,系统会有2个wireless interface:wifi0,ath0。一般情况下,对无线网络接口设置,包括ip设置,都在ath0上进行。
用iwconfig设置无线物理参数:
1.网络标识:[root@Jack ~]# iwconfig ath0 essid “jack”
2.网络频率:[root@Jack ~]# iwconfig ath0 freq5.2G
3.网络频道:[root@Jack ~]# iwconfig ath0 channel 11
4.网络速率:[root@Jack ~]# iwconfig ath0 rate54Mauto
5.WEP加密:[root@Jack ~]# iwconfig ath0 key DEAD-BEFF-AA (可选,默认不加密)
6.发射功率:[root@Jack ~]# iwconfig ath0 txpower 30 (可选,以dBm为单位,自动使用默认值)
此外可以在加载驱动模块时添加入自动匹配参数:
modprobe ath_pci autocreate=ap,系统会使用默认值,以代替上面的iwconfig命令(除了第一个的网络标识设置),省去麻烦。(笔者比较喜欢)
至此,无线网络的物理参数设置完毕。
开始手动设置AP的ip 地址:
[root@Jack ~]# ifconfig ath0 192.168.0.1 netmask 255.255.255.0
打开ibookG4的aiport ,此时airport可以检测到信号的存在,选择要加入的网络jack,用airport GUI工具指定ip 192.168.0.90
至此,网络设置完毕,可以测试连同情况了。