Soft AP是一种通过无线网卡,使用专用软件在PC上实现AP功能的技术,它可以取代无线网络中的AP(Access Point,无线接入点),从而会降低无线组网的成本。

长期以来,高昂的组网成本是WLAN普及的最大障碍,虽然现在WLAN设备的价格已经降低了很多,但对价格敏感的SOHO用户而言,WLAN依然太贵。其中“昂贵”的AP就是造成总成本居高不下的主要因素,毕竟相对于价格低廉的HUB和交换机,600~1000元的AP要贵得多。

不过,Soft AP的出现将有可能扫除WLAN进入小型办公室及家庭的最后一道障碍,毕竟这类用户对价格的关注要远超过对安全性的担忧。

其实,Soft AP技术出现得并不晚,早期所谓的主机AP就是一种利用软件来实现AP功能的设备,它一般采用PC机,使用Windows、VXWorks、Linux等操作系统和主机AP程序。不过这种主机AP由于使用专用的设备,比AP便宜不了多少。而现在所说的Soft AP则是英特尔等公司力推的一个新概念,它可以让任何一台拥有无线网卡的PC或笔记本电脑具备AP功能!

 

Windows7搭建

  1. 首先在网络和共享中心-更改适配器设置里,删除已有的桥接,之后状态如下图:

 

  1. 然后在开始-所有程序-附件里,以管理员身份运行“命令提示符”,如图所示:  

  1. 输入命令行(1),如下图,其中allow为网络承载模式为允许,Marcia是无线网络的ssid,12345678是密码,都可自己设定。

netsh wlan set hostednetwork mode=allow ssid=Marcia key=12345678      (1)

 

  1. 在网络和共享中心-更改适配器设置里的情况见下图,这时输入:

netsh wlan start hostednetwork                                          (2)

可是万一并不能启动承载网络(如果可以的请跳过)。怎么办?

 

  1. 这里就是要特别注意的地方!!!为了能够让运行命令行(2)启动承载网络,本人摸索出了一个简单的解决方法,即先把无线网路连接和虚拟产生的无线网络连接2桥接,见下图。请注意,桥接要在两者设置成自动获得IP地址后,以及在网络和共享中心-管理无线网里删除所有临时点对点的ssid后再进行。

 

  1. 在刚才以管理员身份运行的dos下输入命令行(2),便‘激活’承载网络的启动。如图:

 

  1. 接着马上删除刚才建立的桥接!便可以用单无线网卡建立无线中继了,即在网络和共享中心-更改适配器设置里,把已经能无线上网的无线网络连接(比如abcd)共享给刚才产生的无线网络连接2(Marcia)。请见示意图:

再运行命令行(2)就可以实现一个中继后的无线AP。这样其他的无线设备就可以连接到Marcia、用同一网卡的网络上网,从而完美实现无线网中继和无线AP。

 

  1. 附注:

启动和取消承载网络可以用以下两个批处理文件,然后以管理员身份运行

l  start.bat:

netsh wlan set hostednetwork mode=allow ssid=Marcia key=12345678

netsh wlan start hostednetwork

 

l  stop.bat:

netsh wlan set hostednetwork mode=disallow

 

Linux搭建

l  将无线AP通过Masquerading/NAT与有线连入internet(作为无线网关);

l  将无线AP作为透明桥,桥接被用来做一个简单的AP或者两个无线设备的中继器。

 

预准备工作:

1.Wireless Tools (iwconfig, iwlist commands);

2.iptables firewall;

3.dnsmasq (caching DNS server and DHCP server);

方案一

方案1: Masquerading access point(NAT方式:此方式可以保证接口名不变,启用新的网络段,正好适合我目前使用的情况)。

这是最简单的方案,在linux上运行了防火墙和网关,你只需要添加无线接口。

你至少需要有一个有线的接口(如eth0)和一个无线的接口(wlan0),eth0连入了internet,wlan0提供ap功能。

iwconfig wlan0 mode Master;

如果报错说明不支持access point模式,你可以尝试Ad-hoc模式;

apt-get install dnsmasq;

eth0使用DHCP连入internet,使用下面命令获取IP和默认网关;

dhclient eth0 ;

然后设置无线接口为Master模式并输入SSID名,关闭加密:

iwconfig wlan0 essid "my wlan" mode Master enc off;

也可以开启wep加密:

iwconfig wlan0 essid "my wlan" mode Master enc 1A2B3C4D5E;

或者

iwconfig wlan0 essid "my wlan" mode Master enc "s:apple";

设置wlan0一个私有子网地址,不能和eth0同段。

ifconfig wlan0 10.0.0.1 netmask 255.255.255.0 broadcast 10.0.0.255 up;

为了两个地址之间的联系,我们需要在kernel中开启masquerading (NAT);

1.加载有关的kernel模块

modprobe ipt_MASQUERADE;

清空防火墙规则,确保包数据不被阻塞;

iptables –F;

开启两接口之间的NAT功能;

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE;

最后我们要开启kernel到两个接口之间的前向包;

echo 1 > /proc/sys/net/ipv4/ip_forward;

在ubuntu系统下,

vi /etc/network/options中确保,

ip_forward=yes;

然后/etc/init.d/network restart;

开启DHCP服务器;

目前为止,我们已经能访问一个叫"my wlan"的无线网络,但是只能通过手动设置IP才能进行通信,接下来我们需要让我们的AP可以为连接他的设备动态获取IP。

需要使用dnsmasq工具包,可以从

http://www.thekelleys.org.uk/dnsmasq/doc.html;获取相关信息;

其配置为:

vi /etc/dnsmasq.conf;

interface=wlan0;

dhcp-range=10.0.0.10,10.0.0.110,255.255.255.0,6h;

保存之后重启:

/etc/init.d/dnsmasq restart;

到此,连入该wifi热点的设备可以自动获取IP了。

方案二

方案2:透明桥AP(桥接方式:使用简单,将新增一个桥接口,本地接口使用桥接口访问网络,都在同一个网段中)。

他们可以保持在同一个子网中,也就是说eth0获取的192.168.1.23;那么桥接后的接口都还是在192.168.1.段中,他们使用的是192.168.1.之前的同一个DHCP服务器分配的IP地址。桥接方式不需要使用dnsmasq工具包,但需要使用到bridge-utils工具包,主要用到里面的brctl命令。

在ubuntu系统下,修改的配置文件如下:你需要将名字和IP改为你自己网络中的名字和IP。

vi /etc/network/interfaces;

auto br0;

iface br0 inet static;

address 192.168.1.2;

network 192.168.1.0;

netmask 255.255.255.0;

broadcast 192.168.1.255;

gateway 192.168.1.1;

pre-up ifconfig wlan 0 0.0.0.0 up;

pre-up ifconfig wlan1 0.0.0.0 up;

pre-up iwconfig wlan0 essid “office” mode Managed;

pre-up iwconfig wlan1 essid “repeater” mode Master;

bridge_ports wlan0 wlan1;

post-down ifconfig wlan1 down;

post-down ifconfig wlan0 down;

iface br0 inet static;

pre-up ifconfig wlan 0 0.0.0.0 up;

pre-up ifconfig wlan1 0.0.0.0 up;

pre-up iwconfig wlan0 essid “office” mode Managed;

pre-up iwconfig wlan1 essid “repeater” mode Master;

pre-up brctl addbr br0;

pre-up brctl addif br0 wlan0;

pre-up brctl addif br0 wlan1;

post-down ifconfig wlan1 down;

post-down ifconfig wlan0 down;

post-down brctl delif br0 wlan0;

post-down brctl delif br0 wlan1;

post-down brctl delbr br0;

开启桥:

ifup -v br0;

#ifconfig br0 192.168.1.2 netmask 255.255.255.0 broadcast 192.168.1.255;

#route add default gw 192.168.1.1;

查看桥信息:

#brctl show br0;

动手操作

我尝试了方案1桥接,OK,以下是我使用的命令:

桥接网卡的方法:

ifconfig eth0 0.0.0.0 promisc;

brctl addbr br0;

brctl addif br0 eth0;

ifconfig mon.wlan0 0.0.0.0 promisc;

brctl addif br0 mon.wlan0;

./hostapd hostapd.conf –B;

brctl show;

ifconfig br0 up;

【hostapd.conf】内容如下:

interface=wlan0;

bridge=br0;

driver=nl80211;

ssid=bcmstb;

hw_mode=g;

channel=1;