# Ad-hoc networking (简体中文)

From ArchWiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

相关文章

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

翻译状态：本文是 Ad-hoc_networking 的翻译。上次翻译日期：2021-07-05。如果英文版本有所更改，则您可以帮助同步翻译。

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

## 要求

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

## Wifi 链路层

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

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

### 手动设置

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

详细信息请参考 [Network configuration/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 地址，参考：Network configuration#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

Category:

- Wireless networking (简体中文)