Raspberry 3B+でWi-Fiルータを作った
ここの手順をそのままやった。Wi-Fiと既存のイーサネットLANのブリッジ接続になるので、正確にはWi-Fiブリッジ。
既存のLANは192.168.0.0/24で、ゲートウェイは192.168.0.1。このルータ(Planex BLW-54CW2)がWi-Fi機能をオンにするとたまに勝手に再起動して不安定なのと、別の部屋のPCへの電波の入りが悪くてping 3秒とかになるので、普段はWi-Fiを使わずケーブルでPCを接続していた。
ところがひょんなことからスマートフォンを手に入れて、これにイーサネットケーブルは刺せないからWi-Fiを使う必要が生じたのでWi-Fiルータが欲しかった。IPレベルでのネットワークが2つになるのはめんどくさいのでブリッジ動作にして、IP割り当て(DHCP)は前からあるPlanexにやってもらうことにした。
# 昔ながらのネットワークツールを削除 rpi ~$ sudo -Es rpi ~# apt --autoremove purge ifupdown dhcpcd5 isc-dhcp-client isc-dhcp-common rpi ~# rm -r /etc/network /etc/dhcp # systemd-resolvedのセットアップ rpi ~# apt --autoremove purge avahi-daemon rpi ~# apt install libnss-resolve rpi ~# ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf rpi ~# systemctl enable systemd-resolved.service # systemd-networkdのセットアップ rpi ~# systemctl enable systemd-networkd.service
rpi ~# cat > /etc/wpa_supplicant/wpa_supplicant-wlan0.conf <<EOF country=DE ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="RPiNet" mode=2 frequency=2437 #key_mgmt=NONE # オープンなホットスポットにする場合はアンコメント # key_mgmt=NONEにする場合は次の3行を削除せよ key_mgmt=WPA-PSK proto=RSN WPA psk="password" } EOF
実際にはcountryはJP、ssidは「盆栽🌲」にしてpsk(パスワード)も変えた。
rpi ~# chmod 600 /etc/wpa_supplicant/wpa_supplicant-wlan0.conf rpi ~# systemctl disable wpa_supplicant.service rpi ~# systemctl enable wpa_supplicant@wlan0.service
rpi ~# cat > /etc/systemd/network/02-br0.netdev <<EOF [NetDev] Name=br0 Kind=bridge EOF rpi ~# cat > /etc/systemd/network/04-br0_add-eth0.network <<EOF [Match] Name=eth0 [Network] Bridge=br0 EOF rpi ~# cat > /etc/systemd/network/12-br0_up.network <<EOF [Match] Name=br0 [Network] MulticastDNS=yes DHCP=yes # 静的IPを使う場合はDHCP=yesをコメントアウトして、次の3行をアンコメント #Address=192.168.50.60/24 #Gateway=192.168.50.1 #DNS=84.200.69.80 1.1.1.1 EOF
RasPiにログインするために静的IPにしたかったので最後の5行を下のようにした。
#DHCP=yes Address=192.168.0.2/24 Gateway=192.168.0.1 DNS=192.168.0.1 8.8.8.8
rpi ~# systemctl edit wpa_supplicant@wlan0.service
エディタに次の内容を入力する:
[Service] ExecStartPre=/sbin/iw dev %i set type __ap ExecStartPre=/bin/ip link set %i master br0 ExecStart= ExecStart=/sbin/wpa_supplicant -c/etc/wpa_supplicant/wpa_supplicant-%I.conf -Dnl80211,wext -i%I -bbr0 ExecStopPost=-/bin/ip link set %i nomaster ExecStopPost=-/sbin/iw dev %i set type managed
再起動したらブリッジとして動作する。 ネットワーク関連のツールが置き換わるので、RasPiのデスクトップではネットワークアイコンがエラーになってるけど、ちゃんとつながってる。