はじめに (対象読者・この記事でわかること)
本記事は、Linux 環境でネットワーク構築を行うシステム管理者や、IoT デバイスの無線接続をブリッジに統合したいエンジニアを対象としています。
無線LAN インターフェースをブリッジ(br0 等)に追加できず、接続が遮断される、もしくは DHCP が配布されないといったトラブルに直面した経験がある方が対象です。
記事を読むことで、無線 LAN がブリッジに加入できない主な原因と、カーネル設定・ドライバ・NetworkManager の調整手順を体系的に把握でき、実際に問題を解消して無線端末をブリッジに参加させることができるようになります。
前提知識
- Linux のネットワーク基本コマンド(
ip,brctl,iwなど)が利用できること - 無線 LAN アダプタが AP(アクセスポイント)モードをサポートしていることの確認方法を知っていること
- 基本的な sysadmin 権限(
sudo)が使用できること
無線 LAN をブリッジに追加できない原因と背景
無線 LAN をブリッジインタフェースに直接結合しようとすると、以下のような制約が壁となります。
- ドライバの制限
多くの Wi‑Fi ドライバは「ステーション(STA)モード」だけをサポートしており、ブリッジングに必要な「AP モード」や「VLAN タグ付け」ができません。 - カーネルの設定
CONFIG_BRIDGEとCONFIG_MACVLANが有効である必要がありますが、組み込み系ディストリビューションやカスタムカーネルでは無効化されている場合があります。 - NetworkManager の干渉
NM が無線インタフェースを管理していると、手動でbrctlに追加しようとしても自動的に再設定され、ブリッジから除外されます。 - IP アドレスの二重割り当て
無線インタフェースに DHCP クライアントが走っていると、ブリッジ側の IP と競合しネットワークが不安定になります。
これらを把握した上で、段階的に確認・設定を行うことが問題解決への近道です。
無線 LAN をブリッジに組み込む具体的手順
以下では、Ubuntu/Debian 系のディストリビューションを例に、br0 というブリッジに無線インタフェース wlan0 を追加するフローを示します。環境に合わせてコマンドや設定ファイルのパスを書き換えてください。
ステップ 1:ドライバとハードウェアの対応確認
Bash# 無線デバイスの情報を取得 sudo iw list | grep -A5 "Supported interface modes"
出力例に * AP が含まれていれば、AP モードがサポートされています。含まれない場合は、別のチップセットやドライバに交換する必要があります。
重要ポイント
rtl8188euなどの一部 USB ドングルは AP モード非対応。ath9k系は比較的対応率が高い。- カーネルが
mac80211_hwsimモジュールで仮想デバイスを提供できる場合は、一時的にテストが可能。
ステップ 2:カーネル設定とモジュールのロード
Bash# br_netfilter モジュールがロードされているか確認 lsmod | grep br_netfilter || sudo modprobe br_netfilter # iptables のブリッジブロックを有効化 sudo sysctl -w net.bridge.bridge-nf-call-iptables=1
/etc/sysctl.conf に永続化設定を追加すると再起動後も有効です。
ステップ 3:NetworkManager の無線管理を停止
NetworkManager が無線を管理すると、手動設定が上書きされます。
Bash# wlan0 を NM の管理対象外に設定 sudo nmcli dev set wlan0 managed no # /etc/NetworkManager/NetworkManager.conf に追記 sudo bash -c 'cat >> /etc/NetworkManager/NetworkManager.conf <<EOF [keyfile] unmanaged-devices=interface-name:wlan0 EOF' # NM を再起動 sudo systemctl restart NetworkManager
ステップ 4:ブリッジの作成とインタフェースの結合
Bash# br0 の作成 sudo ip link add name br0 type bridge sudo ip link set br0 up # 有線側 eth0 をブリッジに追加 (任意) sudo ip link set eth0 master br0 # 無線側 wlan0 をブリッジに追加 sudo ip link set wlan0 master br0
上記で brctl show を実行すると、br0 に eth0 と wlan0 が紐付いていることが確認できます。
ステップ 5:無線インタフェースの AP 設定
hostapd を利用して AP を構築します。/etc/hostapd/hostapd.conf の例:
interface=wlan0
bridge=br0
driver=nl80211
ssid=MyBridgeAP
hw_mode=g
channel=6
auth_algs=1
wmm_enabled=1
Bashsudo systemctl enable hostapd sudo systemctl start hostapd
ステップ 6:IP アドレスの割り当て
ブリッジ側に固定 IP または DHCP サーバを設定します。例として dhcpd を利用する場合:
Bash# /etc/dhcp/dhcpd.conf の抜粋 subnet 192.168.10.0 netmask 255.255.255.0 { range 192.168.10.100 192.168.10.200; option routers 192.168.10.1; option broadcast-address 192.168.10.255; option domain-name-servers 8.8.8.8, 8.8.4.4; }
Bashsudo ip addr add 192.168.10.1/24 dev br0 sudo systemctl restart isc-dhcp-server
これでブリッジに接続した有線・無線クライアントは同一サブネットで通信できるようになります。
ハマった点やエラー解決
| 現象 | 原因 | 解決策 |
|---|---|---|
brctl addif br0 wlan0 が失敗し Operation not supported が表示 |
無線ドライバが AP モード未対応 → ブリッジに参加できない | 別のドライバ(ath9k 等)または USB アダプタへ交換 |
hostapd 起動直後に nl80211: could not configure driver エラー |
NetworkManager が wlan0 を管理中 |
managed=no 設定と unmanaged-devices で NM に介入させない |
| 無線クライアントが IP を取得できない | ブリッジ側に DHCP が走っていない、または iptables がブロック |
iptables -A FORWARD -i br0 -j ACCEPT と sysctl net.bridge.bridge-nf-call-iptables=1 を確認 |
| 無線通信が不安定になる | wlan0 が同時に STA と AP を併用しようとした |
mode=ap のみ使用し、STA 用に別インタフェース(USB dongle)を配置 |
解決策のまとめ
- ドライバ確認 → AP モードが必須。非対応はハードウェア交換。
- カーネル/ブリッジモジュール →
br_netfilterとbridge-nf-call-iptablesの有効化。 - NetworkManager → 対象インタフェースを unmanaged に設定。
- ブリッジ構築 →
ip link系コマンドで手動作成し、hostapdのbridge=オプションで結合。 - IP 割当 → ブリッジ側に DHCP または静的 IP を設定し、クライアントが同一ネットワークで利用できるようにする。
まとめ
本記事では、無線LAN インタフェースがブリッジに追加できない典型的な原因と、実践的な対処手順 を解説しました。
- ドライバの AP 対応確認 と適切なハードウェアの選定
- カーネルやブリッジモジュールの有効化、
sysctl設定の永続化 - NetworkManager の介入回避 による手動ブリッジ構築
- hostapd と DHCP の組み合わせ でブリッジ上の無線クライアントに安定した IP 配布
これらを順に実施すれば、無線端末がブリッジに正しく参加し、同一サブネット内で有線・無線双方がシームレスに通信できるようになります。今後は、VLAN を併用した高度なブリッジ構成や、Docker コンテナとブリッジの連携についても取り上げる予定です。
参考資料
- Linux Bridge Documentation
- hostapd Configuration Guide
- NetworkManager Unmanaged Devices
- iw command manual
