WirelessLan bridge - h-sendai/RaspberryPi GitHub Wiki

wireless lanアクセスポイント(ブリッジ編)

https://www.raspberrypi.com/documentation/computers/configuration.html#setting-up-a-bridged-wireless-access-point

をそのままやってみたらちゃんとできた。 記録を残しておく。

ネットワークアクセスできなくなったときの対処

有線LANでアクセスできなくなった場合にそなえてシリアル経由で アクセスできるようにするとか、モニターとキーボードを用意して アクセスできるようにしておく。

hostapdソフトウェアのインストール

apt install hostapd
sudo systemctl unmask hostapd
sudo systemctl enable hostapd

ブリッジの構成

/etc/systemd/network/bridge-br0.netdevを次の内容で作る。

[NetDev]
Name=br0
Kind=bridge

eth0をbr0メンバーとして登録する。 /etc/systemd/network/br-member-eth0.networkを次の内容で作る。

[Match]
Name=eth0

[Network]
Bridge=br0

systemd-networkdサービスを有効化する。

sudo sysytemctl enable systemd-networkd

br0のIPアドレスを設定する。

/etc/dhcpcd.conf

  1. 先頭に
denyinterfaces wlan0 eth0

を追加する。

  1. 終わりに
interface br0

を追加する。これでbr0からdhcp経由でIPアドレスが付くようになり 有線LANからアクセスすることができるようになる。 固定IPアドレスを付けるなら

interface br0
static ip_address=192.168.0.1/24

のように書いておく。

rfkill unblock

rfkill unblock wlan

でrfkillでwlanが使えないようにしているのを解除しwlanが使えるようにする。

hostapd.confの編集

/etc/hostapd.confを作る。

wpa_passphraseは8文字以上64文字以下の長さである必要がある。

country_code=JP
interface=wlan0
bridge=br0
ssid=XXXXXXXXXX
hw_mode=g
channel=7
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=YYYYYYYYYY
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

リブート

リブートして無線LAN機器からアクセスしてみる。

br0とeth0のMACアドレス

もともとのMACアドレスについて

  • eth0がb8:27:eb:XX:YY:ZZ
  • wlan0がb8:27:eb:AA:BB:CC

だったとする。

上の方法のうち、br0のIPアドレスをdhcpでとるように設定しておくと dhcp discoverなどはeth0のMACアドレスb8:27:eb:XX:YY:ZZを使って行われる。

一方起動後のMACアドレス、IPアドレス、ドライバは次のようになっている (br0のMACアドレスがwlan0のMACアドレスと同じ)

br0        192.168.1.100   b8:27:eb:AA:BB:CC brigde   LinkUp  
eth0       NOIP            b8:27:eb:XX:YY:ZZ smsc95xx LinkUp  
lo         127.0.0.1       00:00:00:00:00:00 loop     LinkUp  
wlan0      NOIP            b8:27:eb:AA:BB:CC brcmfmac LinkUp  

systemctl stop hostapdでhostapdを停止させるとbr0のMACアドレスは 変化し、eth0のものと同一になる。

br0        192.168.1.100   b8:27:eb:XX:YY:ZZ brigde   LinkUp  
eth0       NOIP            b8:27:eb:XX:YY:ZZ smsc95xx LinkUp  
lo         127.0.0.1       00:00:00:00:00:00 loop     LinkUp  
wlan0      NOIP            b8:27:eb:AA:BB:CC brcmfmac LinkDown

/etc/dhcpd.confでbr0のIPアドレスを固定化:

interface br0
static ip_address=192.168.10.207/24

したときのbr0のMACアドレスも上と同じでhostapdが起動しているときは br0はwlan0のMACアドレスと同一、hostapdを停止するとeth0のMACアドレスと 同一となる。

以前はbr0のmac addressは[NetDev]セクションにMACAddress=...がなければ systemd-networkdが適当にMACaddressを作ってつけていたようだが。 関連か: https://github.com/systemd/systemd/issues/19559