ap模式和sta模式共存_让无线网卡同时工作在 AP 和 STA 模式

这个帖子里的方法有点过时了,不推荐继续使用。

有的时候会碰到这么一种情况,带着电脑和手机出去蹭网,无奈只有一个账号,手机上了电脑就没得用了,电脑用了手机就上不了网。如果能用电脑连接 Wifi 然后再开热点给手机用该多好。一般情况下,每台笔记本里面只有一张无线网卡,按照常规的思路要一边作为 STA 连接在别的热点上,一边又要做 AP 给手机用的话似乎就非得再买一张 USB 的无线网卡了。不过现在有一种方法可以让一张无线网卡同时处于 STA 和 AP 的状态,一边作为客户端连在别的 AP 上,一边又自己作为 AP 让别的客户端来连接。

这种特殊的“一卡两用”的状态需要 WDS 的支持。WDS 是一个复杂的东西,现在只讲特定情况下的应用。一般来讲,采用 ath9k 驱动的无线网卡都是支持 WDS 的(其它基于 mac80211 的驱动不详,不过值得一试)。另外,为了能使用 WDS ,还要求 hostapd 的版本在 0.7.x 以上。

下面是一个小脚本,它将在 wlan0 上启动一个 AP ,同时生成一个新的接口 wds0 ,可供 NetworkManager 直接作为 STA 使用。

#!/bin/sh

WIFI=wlan0 # NOTE 1

PHY=phy0 # NOTE 2

WAN=wds0 # NOTE 3

# Extra NAT Module

modprobe nf_nat_pptp

modprobe nf_nat_ftp

# NOTE 4

# Config Wireless

ifconfig $WIFI up

ifconfig $WIFI 172.16.1.1/24

ifconfig $WIFI mtu 1500

# Configure dnsmasq

cat > /etc/dnsmasq.conf << EOF

dhcp-range=172.16.1.100,172.16.1.150,255.255.255.0,24h

port=0

dhcp-option=option:dns-server,8.8.8.8,8.8.4.4

interface=$WIFI

EOF

# NOTE 5

# DHCP server

service dnsmasq stop

service dnsmasq start

# AP and WDS STA

hostapd -B ./hostapd-wds.conf

iw phy $PHY interface add $WAN type wds

ifconfig $WAN hw ether b4:82:fe:54:c8:3e # NOTE 6

ifconfig $WAN up

# Enable IPv4 Forwarding

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

iptables -P FORWARD ACCEPT

# NAT with iptables

iptables -t nat -A POSTROUTING -o $WAN -s 172.16.1.1/24 -j MASQUERADE

NOTES:

wlan0 是无线网卡默认的接口名称。使用时请根据实际情况设定。对于使用基于 mac80211 架构驱动的网卡,其接口名一般是 wlanx ,系统中的第一张网卡一般是 wlan0 。稍后这个接口会被作为 AP 使用;

这是对应的无线网卡的 PHY 的名称,一般为 phy0 ,可以这样找出:先 lspci 找出无线网卡的 PCI 地址,然后 ls /sys/bus/pci/devices/[对应的完整 PCI 地址]/ieee80211 即可找出;

期望的 WDS STA 接口名称,完全依个人喜好填写,不要和已有的接口冲突即可;

加载这些额外的 module 是为了保证在 NAT 后面的 PPTP 客户端和 FTP 服务器能正常工作;

dnsmasq 的配置请参考 http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq.conf.example ,本例中 dnsmasq 只做 DHCP 服务器,IP 地址范围 172.16.1.100 – 172.16.1.150 ,租期 24 小时,DNS 服务器默认为 8.8.8.8 和 8.8.4.4 ;

这里的 MAC 地址也是按照个人喜好设定的,不过不要和系统已有的任何网卡地址相同(包括无线网卡的 AP 接口)。

有关的 hostapd-wds.conf 的内容如下,请放置在该脚本的工作目录下:

auth_algs=1

beacon_int=300

channel=6 # NOTE 1

country_code=CN

ctrl_interface_group=adm

ctrl_interface=/var/run/hostapd

driver=nl80211 # NOTE 2

dtim_period=2

dump_file=/tmp/hostapd.dump

eapol_key_index_workaround=0

eap_server=0

fragm_threshold=2346

hw_mode=g #NOTE 3

ieee80211d=1

ieee80211n=1 #NOTE 4

ignore_broadcast_ssid=0

interface=wlan0 #NOTE 5

logger_stdout=-1

logger_stdout_level=2

logger_syslog=-1

logger_syslog_level=2

macaddr_acl=0

max_num_sta=16

own_ip_addr=127.0.0.1

preamble=1

rsn_pairwise=CCMP

rts_threshold=2347

ssid=dword-relay # NOTE 6

wds_sta=1

wmm_ac_be_acm=0

wmm_ac_be_aifs=3

wmm_ac_be_cwmax=10

wmm_ac_be_cwmin=4

wmm_ac_be_txop_limit=0

wmm_ac_bk_acm=0

wmm_ac_bk_aifs=7

wmm_ac_bk_cwmax=10

wmm_ac_bk_cwmin=4

wmm_ac_bk_txop_limit=0

wmm_ac_vi_acm=0

wmm_ac_vi_aifs=2

wmm_ac_vi_cwmax=4

wmm_ac_vi_cwmin=3

wmm_ac_vi_txop_limit=94

wmm_ac_vo_acm=0

wmm_ac_vo_aifs=2

wmm_ac_vo_cwmax=3

wmm_ac_vo_cwmin=2

wmm_ac_vo_txop_limit=47

wmm_enabled=1

wpa=2

wpa_gmk_rekey=7200

wpa_group_rekey=1200

wpa_passphrase=qwertyuiop #NOTE 7

wpa_ptk_rekey=600

wpa_strict_rekey=1

wps_state=0

NOTES:

在这里设置新生成的 AP 的信道,最好和 STA 界面要连接的 AP 的信道保持一致;

驱动视网卡而定,如果网卡的驱动是 ath9k 这样基于 mac80211 的驱动的话,这里选 nl80211 就可以了;

模式有 a/b/g 可选,视网卡的情况和需求而定;

是否打开 802.11n ,视网卡的情况和需求而定;

网卡 AP 界面名称;

新 AP 的 ESSID ;

新 AP 的 WPA2 密码句;

关键是把 wds_sta 设置为“ 1 ”。

最后,sudo 执行脚本,然后通过 NetworkManager 让 wds0 (或者其他你设置的名字)连接上一个热点,即可一边蹭网一边共享热点了。

有图有真相:

参考:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我理解了你的问题。为了回答你的问题,我将分为两部分进行解答。 首先,关于AP模式STA模式共存问题。一般来说,一个Wi-Fi芯片只能在AP模式STA模式中运行,不能同时在两种模式下运行。但是,有些芯片支持同时在AP模式STA模式下运行,这种功能被称为“SoftAP”或“APSTA模式。如果你的芯片支持这种功能,你就可以同时在AP模式STA模式下运行。 其次,关于如何配置树莓派为WiFi热点(AP模式)。以下是配置树莓派为WiFi热点的步骤: 1. 首先,你需要安装hostapd和dnsmasq软件。你可以使用以下命令进行安装: ``` sudo apt-get install hostapd dnsmasq ``` 2. 接下来,你需要编辑hostapd的配置文件。使用以下命令打开配置文件: ``` sudo nano /etc/hostapd/hostapd.conf ``` 然后,将以下内容添加到配置文件中: ``` interface=wlan0 driver=nl80211 ssid=MyPiHotspot hw_mode=g channel=7 macaddr_acl=0 auth_algs=1 ignore_broadcast_ssid=0 wpa=2 wpa_passphrase=MyPiPassword wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP ``` 上述配置文件中,`interface`指定了使用的无线网卡接口,`ssid`指定了热点的名称,`wpa_passphrase`指定了热点的密码。 3. 接下来,你需要编辑dnsmasq的配置文件。使用以下命令打开配置文件: ``` sudo nano /etc/dnsmasq.conf ``` 然后,将以下内容添加到配置文件中: ``` interface=wlan0 dhcp-range=192.168.4.2,192.168.4.20,255.255.255.0,24h ``` 上述配置文件中,`interface`指定了使用的无线网卡接口,`dhcp-range`指定了分配给连接到热点的设备的IP地址范围。 4. 保存并退出配置文件后,你需要启动hostapd和dnsmasq服务。使用以下命令启动服务: ``` sudo service hostapd start sudo service dnsmasq start ``` 如果你希望这两个服务在系统启动时自动启动,可以使用以下命令启用它们: ``` sudo systemctl enable hostapd sudo systemctl enable dnsmasq ``` 5. 最后,你需要将树莓派的无线网卡接口wlan0配置为静态IP地址。使用以下命令编辑网络配置文件: ``` sudo nano /etc/network/interfaces ``` 然后,将以下内容添加到配置文件中: ``` allow-hotplug wlan0 iface wlan0 inet static address 192.168.4.1 netmask 255.255.255.0 network 192.168.4.0 broadcast 192.168.4.255 ``` 6. 保存并退出配置文件后,重启树莓派以使所有更改生效。使用以下命令重启树莓派: ``` sudo reboot ``` 这就是配置树莓派为WiFi热点(AP模式)的步骤。希望能对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值