用zd1211+Ubuntu 10.04实现的AP


zd1211 在Ubuntu 10.04 LTS上的master mode 的问题解决之后,理论上就可以把zd1211 USB网卡用来做一个AP了,实际上还有几个问题要解决:

1、IP地址的分配。这个可以通过DHCP服务来实现。

2、AP上的电脑能和固定网卡上的电脑组网。这里有2种想法,一是不同线路上的电脑存在不同的子网上,通过固定路由来解决,二是用网桥把zd1211和有线网络组成同网。我选择了网桥。

3、外网访问。这个用防火墙软件来实现。 

一、配置AP和网桥。

DHCP是不困难的,重点在网桥和AP的设置。

要使用网桥,首先要安装brigde-utils: sudo apt-get install bridge-utils。

无线网卡的网桥设置和有线网卡的有点点不同,要先www.bkjia.com把无线网卡设置成AP模式之后再进行。

我把所有的操作做成了一个脚本 bridge_start.sh:

 #!/bin/sh
#配置无线网卡进入AP模式
echo 配置无线网卡的AP模式
ifconfig ath0 up
iwconfig ath0 mode master
sleep 1
iwconfig ath0 essid "ZyDAS"
sleep 1
iwconfig ath0 rts 250
sleep 1
iwconfig ath0 frag 512
sleep 10
iwconfig ath0 channel 3
sleep 10
iwconfig ath0 rate 54M auto
sleep 10
iwconfig ath0 key 0a0b0c0d0e
sleep 15
#网桥
echo 配置网桥
ifconfig ath0 down
ifconfig eth2 down
brctl addbr br0
brctl addif br0 ath0
brctl addif br0 eth2
ifconfig ath0 0.0.0.0
ifconfig eth2 0.0.0.0
#启动网桥,分配IP地址
echo 启动网桥
ifconfig br0 192.168.38.1 netmask 255.255.255.0 up
ifconfig br0 up
#启动DHCP服务器
echo 启动 DHCP
/etc/init.d/dhcp3-server start
echo 完成
 

写好脚本,还要给x权限: sudo chmod +x bridge_start.sh

然后运行 sudo ./bridge_start.sh 。

这里面要注意的地方是,DHCP是配置好了,为br0进行ip地址分配的,在系统启动的时候,由于br0还没准备好,DHCP是不能启动起来的,可以把DHCP设置成手动启动就行。在脚本里面,当br0 up了之后,就可以把DHCP3 Server启动。

到这个时候,AP就已经能跑起来了。

用zd1211+Ubuntu 10.04实现的AP 

用zd1211+Ubuntu 10.04实现的AP

连接测试,能正常ping 有线网络上的另一台电脑(其实是连接在Ubuntu Server上的另外一台虚机),能在Ubuntu Server 的Samba服务器上复制文件。AP成功。 

二、配置自动启动AP

上面的步骤只能是手工实现的AP,如果要一个功能完整的AP,就必须让AP在加电之后,自动bootup起来。

我曾经想过把AP的配置和网桥的配置做在 /etc/network/interfaces里面,结果是我的Ubuntu Server在引导过程就直接挂掉了。感谢vmware的snapshot功能,减少了我很多系统恢复的工作。

学习了一下Ubuntu系统引导的原理,找到一个比较可行的方法。至少是我的知识里面比较可行的方法。使用 udev 。

在 /etc/udev/rules.d 里面添加一个规则文件,如 sudo vi /etc/udev/rules.d/75-bridge_on_usb.rules

# USBB device 0x0ace:0x1211 (usb)
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:02:e3:42:31:2b", RUN += "/home/monk/bridge_start.sh"
保存之后,网卡不要拔出来,重启系统,AP自动运行起来了。

三、访问外网。这个是Shorewall的事情,还没做。下次吧。

相关内容