Ad-hoc networking - Arch Linux 中文维基

跳转到内容

# Ad-hoc networking

来自 Arch Linux 中文维基
翻译状态：

- 本文（或部分内容）译自 Ad-hoc_networking，最近一次同步于 2022-08-25，若英文版本有所更改，则您可以帮助同步与翻译更改的内容。
- 您可以在 ArchWiki 的对应页面找到本文翻译的原始修订历史。
- 本文可能与英文原文存在出入。

相关文章

- 网络配置
- 无线设置
- 软AP
- Internet sharing

Independent Basic Service Set(独立基本服务集)，缩写是 IBSS，也被称为自组网络，是一种不使用中心控制节点，就能让一组设备相互通讯的方法。是点对点网络的一种，网络中的设备直接通讯，不需要中转。自组网络可以用来进行网络共享。

## 要求

所有要连接到网络的设备都具有兼容 [1] 的无线网卡。

## Wifi 链路层

因为 IBSS 网络是点对点网络，所有设备都应该使用相同的 wifi 连接设置。

提示：可以设置更复杂的网络拓扑，Linux 无线文档 包含更高级的示例。

### 手动设置

警告：此方法创建的是 非加密 自组网络，要创建加密网络，请参考 #wpa_supplicant.

详细信息请参考网络配置/Wireless#iw。请先安装软件包 iw包。

设置操作模式为 ibss:

    # iw interface set type ibss

启动接口(可能需要额外的 `rfkill unblock wifi`):

    # ip link set interface up

现在可以创建自组网络了，将 your_ssid 替换为实际的网络，frequency 替换为以 MHz 为单位的频率。频道和频率的对应关系，请参考, 这里。

    # 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 地址，有多种方法：

- 分配静态 IP 地址，参考：网络配置#Static IP address.
- 在一个设备上运行 DHCP，参考 dhcpd 或 dnsmasq.
- 运行 avahi-autoipd. 参考 Avahi#Obtaining IPv4LL IP address.

要向自组网络共享外网连接，请参考 Internet sharing.

## 技巧

### 使用 NetworkManager

如果使用 NetworkManager，可以使用 nm-applet 进行自组网络配置，不用使用手动方法。详情参考 NetworkManager#Sharing internet connection over Wi-Fi。

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

可以使用下面模板启用无线自组网络：

    /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

## See also

- Ubuntu community wiki WifiDocs/Adhoc
- Manual about creating an Ad-Hoc network on UbuntuGeek
- Share your 3G Internet connection over wifi

分类：​

- 无线网络

Ad-hoc networking
添加话题