标签:
这个帖子里的方法有点过时了,不推荐继续使用。
有的时候会碰到这么一种情况,带着电脑和手机出去蹭网,无奈只有一个账号,手机上了电脑就没得用了,电脑用了手机就上不了网。如果能用电脑连接 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:
有关的 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:
最后,sudo 执行脚本,然后通过 NetworkManager 让 wds0 (或者其他你设置的名字)连接上一个热点,即可一边蹭网一边共享热点了。
有图有真相:
参考:
标签:
原文地址:http://www.cnblogs.com/killiancheung/p/4757493.html