将 Linux 计算机变成 Wi-Fi 接入点(热点)
在本文中,我们将展示如何在运行 Linux 并配备无线适配器的任何计算机或笔记本电脑上创建 Wi-Fi 接入点(软件 AP)。您可以使用此接入点(热点)在小型办公室或家里创建无线本地网络,或与其他设备共享移动互联网。在此示例中,我们使用运行最新版本 Ubuntu 的笔记本电脑。
内容:
首先,确保您的无线 Wi-Fi 模块支持接入点 (AP) 模式。为此,请安装伊沃包裹:
$ sudo apt install iw
这iw该工具用于从命令提示符配置无线接口(nl80211 驱动程序)。它支持最近添加到 Linux 内核的所有新驱动程序。旧的iwconfig使用无线扩展接口的工具已被弃用,因此强烈建议您使用 iw 和 nl80211。
运行以下命令:
$ iw list

在支持的接口模式部分,寻找
- 美联社
- 接入点/VLAN
这意味着您的 Wi-Fi 适配器支持在接入点模式下运行。
如何从 Ubuntu GUI 创建 Wi-Fi 热点?
在 Ubuntu 20.04 LTS 和更高版本的 GNOME (3.28+) 上,您可以从图形界面运行无线接入点。对于普通用户来说这是最简单的方法。
单击网络连接图标并选择打开 Wi-Fi 热点在无线网络设置。




输入接入点名称和连接密钥(密码)


您应该会看到一条消息,表明您的接入点处于活动状态。同一窗口包含用于连接到 Wi-Fi 接入点的二维码。


在 Linux 上使用网络管理器 (nmcli) 配置无线接入点
网络经理可用于管理大多数现代 Linux 发行版(Ubuntu、Debian、Mint、Fedora、CentOS 等)中的网络连接。在此示例中,我们将展示如何使用网络管理器在 Linux 上创建软件接入点纳米克利命令行工具。
首先,您需要在系统中找到您的无线适配器的名称。
$ nmcli d


在我们的示例中,Wi-Fi 适配器的名称是wlp4s0b1。
如果域名解析(轻量级 DHCP/DNS 服务器)安装在您的计算机上,您必须禁用它。它会与NetworkManager中的dnsmasq插件冲突。
要在wlp4s0b1具有网络名称(SSID)WOSHubWiFi和网络密钥(密码)MaxPass21的接口,运行以下命令:
# nmcli con add type wifi ifname wlp4s0b1 mode ap con-name MyHomeWiFI ssid WOSHubWiFi
# nmcli con modify MyHomeWiFI 802-11-wireless.band bg
# nmcli con modify MyHomeWiFI 802-11-wireless.channel 1
# nmcli con modify MyHomeWiFI 802-11-wireless-security.key-mgmt wpa-psk
# nmcli con modify MyHomeWiFI 802-11-wireless-security.proto rsn
# nmcli con modify MyHomeWiFI 802-11-wireless-security.group ccmp
# nmcli con modify MyHomeWiFI 802-11-wireless-security.pairwise ccmp
# nmcli con modify MyHomeWiFI 802-11-wireless-security.psk MaxPass21
# nmcli con modify MyHomeWiFI ipv4.method shared
启动您的热点:
# nmcli con up WOSHubWiFi


如果您希望接入点工作在5GHz并使用更高的信道,请将相应的命令更改为:
# nmcli con modify MyHomeWiFI 802-11-wireless.band a
# nmcli con modify MyHomeWiFI 802-11-wireless.channel 35
默认情况下,NetworkManager 中的内置 DHCP 服务器从 10.42.0.x/24 范围内为客户端分配 IP 地址(10.24.0.1 是热点接口的地址)。您可以更改 DCHP 范围:
# nmcli con modify MyHomeWiFI ipv4.addr 192.168.31.1/24
要禁用接入点,请运行以下命令:
# nmcli con down MyHomeWiFI
要彻底删除 Linux 上的软件热点:
# nmcli con delete MyHomeWiFI
使用 Hostapd 在 Linux 上设置虚拟 WiFi 接入点
在 Linux 计算机上创建 Wi-Fi 接入点的流行工具是主机包裹。安装它:
$ sudo apt install hostapd
复制原始配置文件(/etc/hostapd/hostapd.conf)。在hostapd.conf中添加以下配置:
$ sudo nano /etc/hostapd/hostapd.conf
interface= wlp4s0b1 # The nl80211 driver is suitable for most Wi-Fi adapters driver=nl80211 # Your access point name ssid=MyHomeAP # The number of your Wi-Fi channel (1 to 13) channel=11 #Select a mode for your access point (a = IEEE 802.11a, b = IEEE 802.11b, g = IEEE 802.11g) hw_mode=g # 1=wpa, 2=wep, 3=both auth_algs=1 # Allow connections from all MAC addresses except those in the blacklist macaddr_acl=0 wpa=2 wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP CCMP #Set a password for your access point wpa_passphrase=MyPass321
如果你想使用802.11n模式,进行以下更改:
ieee80211n=1 ht_capab=[HT40-][SHORT-GI-40]
取消屏蔽 Hostpad 服务:
$ sudo systemctl unmask hostapd
然后在配置文件中指定路径守护进程配置/etc/default/hostapd 文件的参数:
$ sudo nano /etc/default/hostapd
DAEMON_CONF="/etc/hostapd/hostapd.conf"


然后配置您的无线网络接口。设置静态 IP 地址、DNS、模式和其他选项。编辑/etc/网络/接口文件并添加以下内容:
# nano /etc/network/interfaces
auto wlp3s0 iface wlp3s0 inet static address 10.10.0.1 netmask 255.255.255.0
您还需要它来防止 NetworkManager 干扰 Wi-Fi 接口。保存设置后,重新启动计算机。
然后,您只需配置一个 DHCP 服务器,该服务器将为连接到 Linux 接入点的设备分配 IP 地址。在我们的示例中,我们将使用轻量级域名解析:
$ sudo apt install dnsmasq
编辑 dnsmasq.conf。指定 dnsmasq 将在 wlp4s0b1 接口上运行并分配 10.10.0.x 范围内的 IP 地址。在最简单的情况下,您可能有以下配置:
$ sudo nano /etc/dnsmasq/dnsmasq.conf
interface=wlp4s0b1 dhcp-range=10.10.0.2,10.10.0.100,12h #Set DNS servers server=/www.google.com/8.8.8.8
DHCP 范围 IP 地址必须与您的 WLAN 适配器属于同一网络。
为了让您的 Linux 主机能够在 Wi-Fi 客户端和外部 Internet 连接之间路由数据包,您需要启用路由并向 iptables 添加相应的规则:
sysctl net.ipv4.ip_forward=1 iptables -t nat -A POSTROUTING -o enp3s0 -j MASQUERADE
您还可以使用桥接接口为本地网络的客户端提供 Internet 访问(为了使文章简短,我们将省略这一点)。
启动这些服务:
# systemctl start dnsmasq.service
# systemctl start hosapd
现在您可以从任何客户端连接到您的接入点,检查它是否已从指定的 DHCP 范围接收到 IP 地址并且可以访问 Internet。
了解如何在 Windows 计算机上设置 Wi-Fi 接入点。
