千葉の自宅で子供が大学の講義をオンライン受講するようになって、既存の南側リビングにある無線LANルータと北側の子供部屋との距離があるために通信が度々途切れることがわかりました。 オンライン受講のため早々の改善が必要なことから、急遽埼玉にある無線LANルータを千葉にもっていって北側に増設することにしました。
 千葉に増設後、埼玉で先日構築したRaspberry Pi 無線LANアクセスポイント(AP)のある車庫以外で無線LANが使えなくなってしまったので、自室のデスクトップPCにUSB無線LANアダプタを接続してWindows10モバイルスポット機能によりAPを構成して使っていたのですが、これを有効にしているとPCをスリープできないらしく、運用が面倒くさくなってきたので、結局新たに無線LAN AP を増設することにしました。
 普通にBuffaloとかの無線LANルータを買うのも面白くないので、車庫の Raspberry Pi 無線LAN APを構築した経験を活かし、最新のRaspberry Pi 4 model B を購入して構築することにしました。

⇒関連記事:「Raspberry Pi 無線LAN APの構成、FAN取付
 (Raspberry Pi 3 model B+ で無線LAN AP ルータ を車庫に構築)

IMG_3331

 Raspberry Pi 3 model B+ で無線LAN AP を車庫に構築した時は、ブリッジで構成する適切な情報をみつけることはできず、仕方なくルータとして構築したのですが、bridge-utils を使うのではなく、perprouted を使うことでブリッジ相当の機能を構築できたので、その手順を当記事ではまとめます。
 dhcpは、VPNルータのサーバ機能を使うため、dhcp-helper も導入します。
 電源はDIY電源システムの「車庫屋根ソーラー発電システム」ですので、以下のような構成(黄色網掛け箇所を構築)となります。

kousei-1
kousei-2

・ラズベリーパイ4 コンピューターモデルB 4GB Raspberry Pi 4 Computer Model B
 7,280円(税送料込)メイカー専門店/Amazon

・SanDisk microSDXC ULTRA 128GB 80MB/s SDSQUNS-128G Class10 [並行輸入品]
 2,100円(税送料込) コスメビューティー 公式ショップ/Amazon
 ⇒送られてきたのは100MB/sでした。

・電源セット(5V 3.0A)セパレート型スイッチ付き Type-C 電源アダプター
 1,280円(税送料込)Physical Computing Lab/Amazon
 ⇒アダプタとケーブルが一体型でなく、USB Type-Aコネクタで別にできるやつ。

・Flirc ラズベリーパイ4ケース シルバー
 2,820円(税送料込) Flirc Incorporated/Amazon

・エレコム micro HDMI 変換ケーブル 10cm ブラック TB-HDAD2BK
 1,200円(税送料込) アマゾンジャパン合同会社/Amazon
 ⇒DisplayPortモニターに接続してOS初期設定するため。


【OS導入】

 Raspberry Pi 公式サイトから imager というツールを取得します。 このときのバージョンは1.6.1でした。 今回初めて使用しましたが、別途ツールでのFAT32フォーマットとか不要で、このツールから直接SDカードに書き込みすることができて便利でした。
 SDカード以外にこのように、SDカードリーダー、必要に応じてアダプタが必要です。
IMG_3329
 imager をWindows10のデスクトップPCにインストール。
01
02
 インストール完了して、imager起動。
03
 組込み機器はLiteが適切ですが、性能が良くなったという噂のPi 4のDesktopも楽しみたいので、Recommended と書かれた Raspberry PI OS (32-bit)を選択。 Liteは、Raspberry PI OS(other)から選択できます。
04
 OS選択完了。
05
 書き込み先のUSBカードリーダーを選択。
06
 カードリーダー選択完了。
07
 WRITEを実行すると、最終確認。
08
 書き込み後、自動でVerifyして完了。 終了したらメディアの取り外し処理も自動でしてくれます。 あとはRaspberry Pi に挿して電源入れるだけ。 簡単です。
09


【OS初期設定】

・microHDMIポートにディスプレイ、USBポートにマウス、キーボード、USB-Cポートに5V電源を接続し電源投入。

・初期ログイン
 起動後デフォルトで自動ログインですが、Liteを導入した場合でコンソールログインが必要であれば。
 login: pi
 password: raspberry

・自動ログイン後、ターミナルウインドウを起動し、すぐに pi と root ユーザのパスワード変更
 % passwd
 New password:xxxxxxxx
 Retype new password:xxxxxxxx

 % sudo passwd root
 New password:xxxxxxxx
 Retype new password:xxxxxxxx

・raspi-configによる各種設定
 % sudo su -
 # raspi-config
 ホスト名変更
  1 System Options
   ⇒S4 Hostname
 ブートオプションを「B3 DeskTop」に設定
  1 System Options
  ⇒S5 Boot / Auto Login
   ⇒B3 Desktop
 ディスプレイ解像度の設定
  2 Display Options
  ⇒D1 Resolution
   ⇒DMT Mode 82 1920x1080 60Hz 16:9
 SSH有効化
  3 Interface Options
  ⇒P2 SSH
 VNC有効化
  3 Interface Options
  ⇒P3 VNC
 ロケーションオプション
  5 Localisation Options
  ⇒locale:ja_JP.UTF-8 UTF-8
  ⇒Timezone:Asia,Tokyo
  ⇒Keyboard:105-key,other,Japanese
  ⇒WLAN country:JP
 ツールを終了して
 # reboot

・ユーザpiのまま使うのは非推奨ですので別途新規ユーザ(ここでは例としてnewuser)を作成します。
 % sudo adduser newuser
 New password:xxxxxxx
 Retype new password:xxxxxxxx

・ユーザpiが所属するグループ????,????, ・・・に新規ユーザを登録します。
 % groups pi
 pi : ????,????, ・・・
 % sudo usermod -G ????,????,・・・  newuser
 % groups newuser
 newuser : ????,????, ・・・

・自動ログインの無効化
 % sudo su -
 # vi /etc/lightdm/lightdm.conf
 「autologin-user=pi」をコメントアウトします。
 # vi /etc/systemd/system/autologin@.service
  新規ユーザーに変更「ExecStart=-/sbin/agetty --autologin newuser --noclear %I STERM」

・sudo環境の変更
 # gpasswd -a newuser sudo
 # gpasswd -d pi sudo
 # mv /etc/sudoers.d/010_pi-nopasswd /etc/sudoers.d/010_newuser-nopasswd
 # vi /etc/sudoers.d/010_newuser-nopasswd
 新規ユーザに変更
 newuser ALL=(ALL) NOPASSWD: ALL

・一旦ログアウトして、新規ユーザでログインできるか確認
 # exit
 % exit
 login: newuser
 password: xxxxxxxx

・無線LANクライアントソフトウェアの無効化
 % sudo su -
 # systemctl stop wpa_supplicant
 # systemctl disable wpa_supplicant
 
・有線LANポート(eth0)へのIPアドレス設定
 # vi /etc/dhcpcd.conf
 --
 denyinterfaces wlan0
 interface eth0
 static ip_address=XXX.XXX.XXX.XXX/24 ⇒ここでは例として/24セグメントのIPアドレス
 static routers=XXX.XXX.XXX.XXX
 static domain_name_servers=XXX.XXX.XXX.XXX
 noipv6
 --
 # systemctl restart dhcpcd
 LANケーブルを接続して eth0 にIPアドレスが設定されているか確認
 # ip a


【無線LAN AP ブリッジ構築】

・Teratermでsshログイン
 login: newuser
 password: xxxxxxxx
 % sudo su -

・必要なパッケージのインストール
 # apt-get update
 # apt-get install -y parprouted  hostapd dhcp-helper iproute2
 ※メモ:bcrelay は使わない。

・IF間ルーティング有効化
 # vi /etc/sysctl.conf
 以下コメント外す。
 --
 net.ipv4.ip_forward=1
 --
 # echo "1" > /proc/sys/net/ipv4/ip_forward
 # cat /proc/sys/net/ipv4/ip_forward

・OS起動時のネットワーク設定追加
 # vi /etc/rc.local
 「exit 0」の直前に追記
 ※ipは、/sbin/ip のこともあるので、which ip で位置を確認
 --
 /usr/sbin/ip addr flush dev wlan0
 /usr/sbin/ip addr add XXX.XXX.XXX.XXX/32 dev wlan0 ⇒eth0と同じアドレスを/32で設定します
 /usr/sbin/ip link set wlan0 up
 /usr/sbin/ip link set wlan0 promisc on
 /usr/sbin/ip link set eth0 promisc on
 /usr/sbin/parprouted eth0 wlan0 &
 --
 
 ip addr flush dev wlan0
 ip addr add XXX.XXX.XXX.XXX/32 dev wlan0
 ip link set wlan0 up
 ip link set wlan0 promisc on
 ip link set eth0 promisc on
 parprouted eth0 wlan0 &

・無線LAN APソフトウェアhostapdの設定(2.4GHz、11n)
 # vi /etc/hostapd/hostapd.conf
 --
 interface=wlan0
 driver=nl80211
 ssid=xxxxxxxx ⇒任意文字
 country_code=JP
 hw_mode=g
 channel=10
 chanlist=1 2 3 4 5 6 7 8 9 10 11 12 13
 macaddr_acl=0
 auth_algs=1
 ignore_broadcast_ssid=0
 wmm_enabled=1
 ieee80211n=1
 ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40]
 wpa=2
 wpa_passphrase=xxxxxxxx ⇒任意文字
 wpa_key_mgmt=WPA-PSK
 wpa_pairwise=CCMP
 --

 ※参考:以下設定内容で、5GHz、acを試してみたが逆に遅くなったのでやめた。
 --
 interface=wlan0
 driver=nl80211
 ssid=xxxxxxxx ⇒任意文字
 country_code=DFS-JP
 ieee80211d=1
 ieee80211h=1
 hw_mode=a
 channel=140
 chanlist=100 104 108 112 116 120 124 128 132 136 140
 macaddr_acl=0
 wmm_enabled=1
 ieee80211n=1
 ht_capab=[SHORT-GI-20][DSSS_CCK-40]
 ieee80211ac=1
 vht_capab=[MAX-MPDU-3895][SHORT-GI-80][SU-BEAMFORMEE]
 wpa=2
 wpa_passphrase=xxxxxxxx ⇒任意文字
 wpa_key_mgmt=WPA-PSK
 wpa_pairwise=CCMP
 --

・hostapdの自動起動設定
 # systemctl umask hostapd
 # systemctl enable hostapd
 # systemctl start hostapd

・dhcp-helperの自動起動設定
 # systemctl enable dhcp-helper
 # systemctl start dhcp-helper

 後日、車庫の無線LAN APも perprouted を使ってルータからブリッジに構築しなおしました。