Ad-hoc 网络

出自 ArchWiki

IBSS (独立基本服务集) 网络,通常称为 ad-hoc 网络,是一种让一组设备无线通信的方式,无需中央控制器。它是对等网络的一个例子,其中所有设备直接相互通信,没有固有的中继。

例如,ad-hoc 网络可以用于共享互联网连接

要求

  • 所有将连接到网络的设备上都需要一个 nl80211 兼容 的无线设备 (例如 ath9k)

Wi-Fi 链接层

由于 IBSS 网络是对等网络,因此在所有设备上设置 Wi-Fi 链接层的步骤应该是相同的。

提示: 可以创建复杂的网络拓扑,有关高级示例,请参阅 Linux 无线文档

手动方法

警告: 此方法创建未加密的 ad-hoc 网络。有关使用 WPA 加密的方法,请参阅 #wpa_supplicant

有关以下命令的更好解释,请参阅 无线网络配置#iw。确保 iw安装

将操作模式设置为 ibss

# iw interface set type ibss

启动接口 (可能需要额外的步骤,如 rfkill unblock wifi)

# ip link set interface up

现在您可以创建一个 ad-hoc 网络。将 your_ssid 替换为网络名称,将 frequency 替换为 MHz 频率,具体取决于您要使用的频道。有关显示各个频道频率的表格,请参阅 Wikipedia 页面 WLAN 频道列表

# iw interface ibss join your_ssid frequency

wpa_supplicant

确保 wpa_supplicant安装,并为其创建一个配置文件 (有关详细信息,请参阅 wpa_supplicant)。

/etc/wpa_supplicant-adhoc.conf
ctrl_interface=DIR=/run/wpa_supplicant GROUP=wheel

# use 'ap_scan=2' on all devices connected to the network
# this is unnecessary if you only want the network to be created when no other networks are available
ap_scan=2

network={
    ssid="MySSID"
    mode=1
    frequency=2432
    proto=RSN
    key_mgmt=WPA-PSK
    pairwise=CCMP
    group=CCMP
    psk="secret passphrase"
}

在连接到网络的所有设备上使用以下命令运行 wpa_supplicant

# wpa_supplicant -B -i interface -c /etc/wpa_supplicant-adhoc.conf -D nl80211,wext

网络配置

最后一步是为网络中的所有设备分配 IP 地址。有多种方法可以做到这一点

如果您想将互联网连接共享到 ad-hoc 网络,请参阅 网络共享

技巧与提示

使用 NetworkManager

如果您使用 NetworkManager,您可以使用 nm-applet 进行 ad-hoc 网络配置,而不是上面描述的手动方法。有关详细信息,请参阅 NetworkManager#通过 Wi-Fi 共享互联网连接

自定义 systemd 服务 (使用 wpa_supplicant 和静态 IP)

您可以使用以下模板来启用无线 ad-hoc 网络

/etc/conf.d/network-wireless-adhoc@interface
addr=192.168.0.2
mask=24
/etc/systemd/system/network-wireless-adhoc@.service
[Unit]
Description=Ad-hoc wireless network connectivity (%i)
Wants=network.target
Before=network.target
BindsTo=sys-subsystem-net-devices-%i.device
After=sys-subsystem-net-devices-%i.device

[Service]
Type=oneshot
RemainAfterExit=yes
EnvironmentFile=/etc/conf.d/network-wireless-adhoc@%i

# perhaps rfkill is not needed for you
ExecStart=/usr/bin/rfkill unblock wifi
ExecStart=/usr/bin/ip link set %i up
ExecStart=/usr/bin/wpa_supplicant -B -i %i -D nl80211,wext -c /etc/wpa_supplicant-adhoc.conf
ExecStart=/usr/bin/ip addr add ${addr}/${mask} dev %i

ExecStop=/usr/bin/ip addr flush dev %i
ExecStop=/usr/bin/ip link set %i down

[Install]
WantedBy=multi-user.target

参见