用hostapd架设桥接模式的无线AP

用hostapd架设无线AP,有两种模式,一种是我们熟悉的NAT模式,一种是网桥模式。
网上大多教程是NAT模式,只要会用IPTABLES就会做,很简单(回头我也写个博文记录一下NAT模式)。

今天,想尝试一下桥接模式,经过一番试验,终于成功,过程记录如下。
说实话,以前并不怎么明白一些无线AP的设置桥接中继和路由中继(NAT)的区别,实际动手操作一下才明白了二者的不同。
我的网络环境是两张无线网卡,wlan0是大功率无线网卡,负责接收远处路由器的信号,wlan1是普通无线网卡,负责向屋子里发射信号以提供给几部安卓手机上网。
首先配置一下/usr/etc/hostapd_birdge.conf ,文件内容如下:
ctrl_interface=/var/run/hostapd
ctrl_interface_group=wheel
ssid=redian #我们自己做的无线AP的名称。
hw_mode=g
channel=10
interface=wlan1
bridge=br0  # 这是关键,网桥。
driver=nl80211
ignore_broadcast_ssid=0
macaddr_acl=0
auth_algs=1
wpa=3
wpa_passphrase=wodemima # 你手机要连到你自己做的无线AP,所需要的密码,至少8位。
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP CCMP
rsn_pairwise=TKIP CCMP

至此,这就是/usr/etc/hostapd_bridge.conf的所有内容。
下面运行命令:
wpa_supplicant -B -D wext -i wlan0 -c /etc/wpa_supplicant.conf
#连到远处WPA2加密的无线路由器,wpa_supplicant.conf当然是早就配置好了,配置方法请参阅相关文档。

ifconfig wlan0 up 192.168.1.133  netmask 255.255.255.0
route add default gw 192.168.1.1    ###这两句是手动指定wlan0 的IP,比DHCP自动获取的快些。因为下面还要构建网桥,wlan0的IP会被清空,所以在这里这两句可以不要,这里运行一下主要就是为了验证wlan0可以正常接入远处的无线路由器。

然后可以试验一下这台电脑是不是可以正常用wlan0上网了,如果没问题,下面继续:
brctl addbr br0 #建立网桥
iw dev wlan0 set 4addr on  #大概是无线网卡的驱动问题,
有些无线网卡必须有这一步操作,不然下面无法把wlan0 加入到网桥中。

brctl addif br0 wlan0 # 把wlan0 加入到网桥br0中,这里不用把wlan1加入网桥,
因为下面hostapd那一步会自动把wlan1加入网桥br0。
ifconfig wlan0 0.0.0.0 up # 清空wlan0的IP
ifconfig wlan1 0.0.0.0 up # 清空wlan1的IP
/usr/local/bin/hostapd -B /usr/etc/hostapd_bridge.conf  # 启动hostapd,这时wlan1自动加入网桥br0中。
ifconfig br0 192.168.1.144  netmask 255.255.255.0  up  #给网桥分配IP并启动网桥。
route add default gw 192.168.1.1  # 说明:如果你这台电脑不想上网,这一步不是必须的,也就是说这个网桥可以只作为无线AP来供给几部手机上网用,而它自己不上网。当然,大多数情况下,电脑也要上网玩玩,所以我加了这一句。

用手机试着连接你自己做的热点redian,可以正常上网了。

实践成功后,对桥接和NAT的区别也就了然了,因为远处无线路由器的LAN口是192.168.1.1,
NAT模式下,wlan0的IP是192.168.1.***,wlan1的IP是192.168.2.1,这两个网卡不能在同一个网段。
因为我们用IPTABLES为两个网段建立转发的关系。
你的安卓手机获取的IP是192.168.2.***,和wlan1在同一网段中,安卓手机的网关指向wlan1即192.168.2.1。

而在桥接模式下,网桥br0的IP是192.168.1.***,与远处无线路由器的LAN口在同一网段,你的安卓手机获取的IP也是192.168.1.***形式的,与br0和远处无线路由器的LAN口在同一网段,安卓手机的网关指向仍是远处的无线路由器LAN口192.168.1.1,这个“桥”对于远处无线路由器和安卓手机来说是“透明”的,只是信号做了“延伸”。

你可能感兴趣的:(用hostapd架设桥接模式的无线AP)