如何将wifi配置成repeater模式
前段时间需要在嵌入式板子上实现wifi的repeater模式,同一个无线网卡即做AP又做client。下面介绍一下如何实现:
1.确认网卡是否支持AP模式
iw list 命令将输出AP是否支持AP模式
Supported interface modes:
IBSS
managed
AP
AP/VLAN
monitor
如果输出的supported interface modes中有AP说明此网卡支持AP模式,如果没有,接下来的工作就不需要做了,网卡不支持AP
2.将无线网卡分成两个虚拟网卡
如果一个系统有两个无线网卡,暂且命名为wlan0和wlan1.如果想让这个设备既可以做AP,又可以连接外网。做法应该是这样的,将wlan0作为client,连接一个路由器;将wlan1作AP,产生一个热点,其他设备来连接这个热点。然后再将wlan0和wlan1桥接或者NAT方式打通。这样连接在AP上的设备就可以上网了。
同理如果一个网卡也可以这么做,通过iw命令可以实现:
#!/usr/rootdirs/bin/bash
ifconfig wlan0 down
sleep 1
iw dev wlan0 interface add wlan0_sta type managed addr 04:f0:21:35:d7:24
sleep 1
iw dev wlan0 interface add wlan0_ap type managed addr 12:34:56:78:ab:ce
3.用其中一个网卡连接外部路由
通过 命令 wpa_supplicant -B -Dnl80211 -i wlan0_sta -c wpa_supplicant.conf
wpa_supplicant.conf 文件是需要连接到路由的配置信息,如SSID,password等,这里就不贴出来了
当上面的命令执行成功,即wlan0_sta连接到了外部路由器,需要将此时的channel获取到。为什么呢?因为用同一个无线网卡虚拟出来的两个无线网卡,如要实现repeater模式必须在同一个channel上,而且必须和外部路由处于同一个channel上。所以接下来的wlan0_ap的channel就要以现在获取的为准。如何获取通道,执行如下命令:
iw dev wlan0_sta info | grep channel | awk '{print $2}'
4.用剩下的那个网卡启动AP模式
根据步骤3的channel设置hostapd.conf文件,然后执行:
hostapd -B hostapd.conf
5.将wlan0_sta和wlan0_ap关联起来
iptables -t nat -A POSTROUTING -o wlan0_sta -j MASQUERADE
iptables -A FORWARD -i wlan0_sta -o wlan0_ap -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i wlan0_ap -o wlan0_sta -j ACCEPT

浙公网安备 33010602011771号