Software access point (简体中文)
Related articles
当你想让你的电脑变成一个Wifi接入点时,你需要一个无线AP。它能帮你免去你购买配置一个无线路由器的麻烦。
Contents
要求
无线网卡必须支持AP模式
你需要一个兼容 nl80211 的网卡(nl80211网卡支持AP模式网卡模式)。你可以输入 iw list
命令, 查看 Supported interface modes
以下的几行,看是否支持 AP
模式:
$ iw list
Wiphy phy1 ... Supported interface modes: * IBSS * managed * AP * AP/VLAN * WDS * monitor * mesh point ...
一张网卡同时作为AP和连接其他无线网络的客户端
创建一个无线AP是独立于该网卡其他的网络连接。许多网卡甚至可以支持同时作为AP和客户端。 这样一张网卡你就可以做一个无线中继。 你可以输入 iw list
命令, 查看 valid interface combinations:
以下的几行,看是否支持无线中继:
$ iw list
Wiphy phy1 ... valid interface combinations: * #{ managed } <= 2048, #{ AP, mesh point } <= 8, #{ P2P-client, P2P-GO } <= 1, total <= 2048, #channels <= 1, STA/AP BI must match ...
参数#channels <= 1
说明你的无线AP必须和你接入的Wifi热点处于同一信道。 你会在hostapd.conf
中的 channel
设置中看到。
你需要开启两个虚拟网络接口来使用这种特性。一个是用来连接其他热点, wlan0_sta
。另一个作为无线AP,wlan0_ap
。
iw dev wlan0 interface add wlan0_sta type station iw dev wlan0 interface add wlan0_ap type __ap
接来下,你可以随意给两个借口设置不同的MAC地址
ip link set dev wlan0_sta address 12:34:56:78:ab:cd ip link set dev wlan0_ap address 12:34:56:78:ab:ce
概述
设置一个AP需要两个部分
- 设置 无线链路层:其他客户端就可以连接这个AP并接受发送IP包, 这就是hostpad包帮你做的.
- 网络配置: 你的电脑将从因特网连接正确的转发IP数据包到无线客户端。
无线链路层
修改hostpad配置是很有必要的. 尤其是修改ssid
和wpa_passphrase
. 查看 hostapd Linux documentation page 来参考更多内容.
/etc/hostapd/hostapd.conf
ssid=YourWiFiName wpa_passphrase=Somepassphrase interface=wlan0_ap bridge=br0 auth_algs=3 channel=7 driver=nl80211 hw_mode=g logger_stdout=-1 logger_stdout_level=2 max_num_sta=5 rsn_pairwise=CCMP wpa=2 wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP CCMP
启用hostapd.service
来开启hostapd。
网络配置
有两种方法实现:
- 网桥: 在你的电脑上搭一个网桥 (无线客户端就像是和你本人电脑访问的网络接口和子网一样)
- NAT: 通过IP转发/掩藏 和 DHCP服务 (无线客户端会专门使用一个子网 —— 就像是连接在调制调节器上的一个普通的无线路由器一样)
使用网桥会更加简单,但它要求任何无线客户端需要的服务 (比方说,DHCP)能被你的无线网卡所满足。也就是说拨号服务是不能使用网桥的 (比方说, 通过PPPoE或者3G调制调解器)或者你使用有线调制调解器且通过DHCP只分配了一个IP。
使用NAT会更加灵活。 NAT把Wifi客户端和你的电脑分离开来并且对外界完全不可见。 对于任何种类的网络连接它都适用,而且 (如果必要的话)你可以使用iptables来控制流量。
当然,将两者联合起来也是可能的. 那么你需要分别参考相关的文章。 比方说:使用网桥将以太网设备和无线网用静态IP连起来,同时使用DHCP并设置NAT去转发流量到另外一个网络设备(ppp或者 eth)。
网桥设置
你应该创建一个 网桥 并连上网络设备 (比方说 eth0
) 。 你 不应该 自行加上一个无线网络设备 (比方说wlan0
) 在那个桥上, 因为hostapd会自行帮你加上去的。
参阅 Network bridge。
NAT设置
详细内容请参考Internet sharing。
那篇文章里,连接LAN的设备是 net0
。 这里我们通常指的是的你的无线网卡,比如说 wlan0
。
工具
create_ap
可以用create_ap 脚本AUR create_apAUR融合了 hostapd, dnsmasq 和 iptables 创建NAT/桥接 AP。
RADIUS
可以参阅 [1] 来运行 FreeRADIUS 服务器 WPA2 Enterprise.
常见问题与解答
无线局域网很慢
可能由熵值过低造成。 可以安装 haveged 试试.
NetworkManager影响网卡
如果网卡被NetworkManager管理的话,hostapd可能不起作用. 你可以掩盖这个设备:
/etc/NetworkManager/NetworkManager.conf
[keyfile] unmanaged-devices=mac:<hwaddr>