具有单个NIC的WiFi AP


8

我试图通过同一张网卡连接到我的wifi网络时,将PC无线网卡用作AP,但是我遇到了问题。我要实现的目标等同于Windows的虚拟Wi-fi技术。根据原理,这非常简单:

service network-manager stop
iw dev wlan0 del
iw phy phy0 interface add new0 type station
service network-manager start
iw phy phy0 interface add new1 type __ap
hostapd -B /etc/hostapd.conf

使用适合hostapd的配置:

cat /etc/hostapd/hostapd.conf 
interface=new1
driver=nl80211
logger_syslog=-1
logger_syslog_level=2
logger_stdout=-1
logger_stdout_level=2
ssid=XXXX
country_code=us
hw_mode=g
channel=1
macaddr_acl=0
auth_algs=3
ignore_broadcast_ssid=0
eap_server=0
wpa=2
wpa_passphrase=XXXX
wpa_pairwise=TKIP CCMP
rsn_pairwise=TKIP CCMP

但是,驱动程序nl80211拒绝将虚拟IF new1置于AP模式。有趣的是:iw list的输出包含

Supported interface modes:
         * IBSS
         * managed
         * AP
         * AP/VLAN
         * monitor
software interface modes (can always be added):
         * AP/VLAN
         * monitor
valid interface combinations:
         * #{ managed } <= 1, #{ AP } <= 1,
           total <= 2, #channels <= 1, STA/AP BI must match
         * #{ managed } <= 2,
           total <= 2, #channels <= 1

很明显,我的wifi卡(在iwlwifi下为Intel Centrino Advanced-N 6235 [8086:088e])支持AP模式(我已经对其进行了测试),并且我将“有效接口组合”解释为意味着我最多可以拥有与此卡同时管理1个和1个AP Vif。但是后来我注意到了看起来很神秘的约束,STA / AP BI必须匹配。

有谁知道这是什么意思,这是否阻碍了我在卡上使用两个Vif的尝试,一个在站中,另一个在AP模式下?干杯



1
@ imz--IvanZakharyaschev您说的很对,谢谢。但是我的问题还在于STA / AP BI的含义必须匹配,这似乎提供了某种尚未被我理解的约束。
MariusMatutiae

抱歉,我没有考虑这个细节。你是对的。但是从标题来看,这个特殊的问题并不明显,这使我认为拥有一个WiFi适配器是这里唯一的问题……
imz-Ivan Zakharyaschev 2013年

Answers:


5

如果有人来这里标识“ STA / AP BI必须匹配”:

在内核源代码include/net/cfg80211.h,特别是struct ieee80211_iface_combination说,

 * @beacon_int_infra_match: In this combination, the beacon intervals
 *  between infrastructure and AP types must match. This is required
 *  only in special cases.

因此,BI信标间隔,使其匹配并不成大问题。


6

其实神秘的一句话

STA/AP BI must match

似乎与我的设置不起作用无关。原来相反

 #channels <= 1

是使其工作的关键。我最终明白,这意味着当我在同一物理设备(无论如何,我的英特尔迅驰)上有两个Vif时,我只能使用一个通道,一个在AP中,另一个在Station模式下。因此,我将hostapd conf文件中的通道切换到了我尝试连接的通道,并且没有错误消息。

至此,我配置了iptables,启动了dnsmasq,然后通过

echo 1 >/proc/sys/net/ipv4/ip_forward
iptables --table nat --append POSTROUTING --out-interface new0 -j MASQUERADE
iptables --append FORWARD --in-interface new1 -j ACCEPT
dnsmasq 
/usr/local/bin/hostapd /etc/hostapd/hostapd.conf

然后我得到了,一张wifi卡同时作为接入点和客户端同时连接到连接到Internet的网络。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.