Software access point (简体中文) - ArchWiki

# Software access point (简体中文)

Related articles

- Network configuration
- Wireless network configuration
- Ad-hoc networking
- Internet sharing

翻译状态： 本文是英文页面 Software_access_point 的翻译，最后翻译时间：2015-08-23，点击这里可以查看翻译后英文页面的改动。

当你想让你的电脑变成一个Wifi接入点时，你需要一个无线AP。它能帮你免去你购买配置一个无线路由器的麻烦。

## 要求

### 无线网卡必须支持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。

Warning: AP可选用的信道根据地域而不同。 根据无线网卡的固件，你必须设置正确的地区来确定信道。 不要 选择另外的地区，因为你可能因此扰乱其他的网络交通， 在信号覆盖内影响你的网卡和其它网卡的运作！ 设置信道请看Wireless network configuration#Respecting the regulatory domain.
Note: 如果你的网卡是基于RTL8192CU芯片组,请从AUR中安装hostapd-8192cuAUR[broken link: archived in aur-mirror]并在`hostapd.conf` 文件中将`driver=nl80211` 换成 `driver=rtl871xdrv`。

## 网络配置

有两种方法实现：

1. 网桥: 在你的电脑上搭一个网桥 （无线客户端就像是和你本人电脑访问的网络接口和子网一样）
2. NAT: 通过IP转发／掩藏 和 DHCP服务 （无线客户端会专门使用一个子网 —— 就像是连接在调制调节器上的一个普通的无线路由器一样)

使用网桥会更加简单,但它要求任何无线客户端需要的服务 （比方说，DHCP）能被你的无线网卡所满足。也就是说拨号服务是不能使用网桥的 （比方说， 通过PPPoE或者3G调制调解器）或者你使用有线调制调解器且通过DHCP只分配了一个IP。

使用NAT会更加灵活。 NAT把Wifi客户端和你的电脑分离开来并且对外界完全不可见。 对于任何种类的网络连接它都适用，而且 （如果必要的话）你可以使用iptables来控制流量。

当然，将两者联合起来也是可能的. 那么你需要分别参考相关的文章。 比方说：使用网桥将以太网设备和无线网用静态IP连起来，同时使用DHCP并设置NAT去转发流量到另外一个网络设备（ppp或者 eth）。

### 网桥设置

你应该创建一个 网桥 并连上网络设备 （比方说 `eth0`） 。 你 不应该 自行加上一个无线网络设备 （比方说`wlan0`） 在那个桥上， 因为hostapd会自行帮你加上去的。

参阅 Network bridge。

Tip: 你可以重用一个网桥，如果你的虚拟机已经有了一个网桥的话。

### 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>

## 相关文章

- Router
- Hostapd : The Linux Way to create Virtual Wi-Fi Access Point
- tutorial and script for configuring a subnet with DHCP and DNS

Category:

- Wireless networking (简体中文)

Hidden category:

- Pages with broken package links