アドホックネットワーク

提供: ArchWiki
2017年1月29日 (日) 00:35時点におけるKusakata (トーク | 投稿記録)による版 (文字列「[[zh-CN:」を「[[zh-hans:」に置換)
ナビゲーションに移動 検索に移動

関連記事

IBSS (Independent Basic Service Set) ネットワーク (アドホックネットワークとも呼ばれます) は中央制御を必要としない、ワイヤレスで互いに通信するための通信方式です。直接一対一で通信を行う、P2P ネットワークの一例です。

アドホックネットワークを使うことで、インターネット接続の共有などが行えます。

要件

  • ネットワークに接続する全てのデバイスに nl80211 対応の無線デバイスが必要です (例: ath9k)。

Wifi リンク層

IBSS ネットワークはピアツーピアネットワークなので、必要な wifi リンクの設定は全てのデバイスで共通です。

ヒント: 複雑なネットワークトポロジーを作成することも可能です。高度な例については Linux Wireless documentation を見て下さい。

手動設定

警告: 以下の方法では暗号化がないアドホックネットワークを作成します。WPA 暗号を使用する方法は #WPA supplicant を見て下さい。

以下で使っているコマンドの詳しい説明はワイヤレス設定#手動セットアップを見て下さい。また、iwインストールしておいてください。

動作モードを ibss に設定:

# iw interface set type ibss

インターフェイスを立ち上げる (rfkill unblock wifi などの設定が必要になる場合もあります):

# ip link set interface up

これでアドホックネットワークを作成することができます。your_ssid はネットワークの名前に、frequency は使用したい周波数 (MHz) に置き換えて下さい。使用できる周波数の表が Wikipedia の List of WLAN channels ページに載っています。

# iw interface ibss join your_ssid frequency

WPA supplicant

ノート: 以下の方法では WPA 暗号を使用するアドホックネットワークを作成します。2013年8月現在 WPA2 はサポートされていません。

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
ap_scan=2

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

以下のコマンドを使って、ネットワークに接続する全てのデバイスで wpa_supplicant を起動します:

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

ネットワーク設定

最後に IP アドレスをネットワーク上の全てのデバイスに割り当てます。複数の方法が存在します:

アドホックネットワークでインターネット接続を共有したい場合、インターネット共有を見て下さい。

Tips and tricks

NetworkManager を使う

NetworkManager を使っている場合、上記のように手動で設定する代わりに nm-applet を使ってアドホックネットワークの設定ができます。詳しくは NetworkManager#Ad-hoc を見て下さい。

ノート: NetworkManager はアドホックモードでの WPA 暗号化をサポートしていません。

カスタム 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

参照