【Raspberry Pi Zero 2 W】metric 設定

車載のRaspberry Pi Zero 2 W(以降rx7pi)が、家のWiFiに繋がってる時に通信が遅くてしょうがない。

まあ、原因ははっきりしていて、ssh でログインする時に、WiFiのIPアドレスで繋ぐと応答は速いけど、パッケージ更新とかやると、metric の低い順のネットワークデバイスで通信するので、usb0 = povo 2.0 128kbps 通信となってしまう為だ。

rx7pi は dpcpcd ではなく、NetworkManager で通信を管理してるので、設定状況は次の通り。

100 usb0
600 wlan0
750 bluetooth

という順で優先されるけど、usb0 と wlan0 を入れ替えたいので、ちょこっと検索。

ネットワーク設定nmcli コマンドでルーティングメトリックを設定します。ルーティングメトリックは値が小さいほど優先順位が高いため、主回線の soracom を 500、副回線の ntt を 700 に設定します。次のコマンドを実行してください。ターミナル
sudo nmcli c m soracom ipv4.route-metric 500
sudo nmcli c m ntt ipv4.route-metric 700sudo nmcli c down soracom
sudo nmcli c down nttsudo nmcli c up soracomsudo nmcli c up ntt

情報源: ラズパイ1個で2個の4GPiを同時使用する際の、LTE回線自動切換え #RaspberryPi – Qiita

パラメータが省略してあるので、分かり辛いが、 c = connection、m = modify か。

よし、イケた。

後は、WiFi接続時に VPN のwireguard を再接続するように設定する。

$2に up とか down が入ってくるようだが、どの道VPNを再起動して良い状況なので、判別せず。

実行属性つけておくのを忘れずに。

 

【Raspberry Pi Zero 2 W】警戒プログラム変更

Raspberry Pi Zero 2 Wは 4コアなので、並列処理した方が速くなる為、本体プログラムと bluetooth のチェックを分けた。

【メイン処理】

【bluetoothチェック処理】

【GPS関連処理】

今までは USBテザリングで通信していたが、セキュリティの為か、携帯電話の画面ロックを解除した状態にしないと接続できなかった。

しかし、bluetooth テザリングは、一度ペアリングすれば、接続要求によって簡単に繋がるので、画面ロック解除しなくても良くなった。

以前試行した時は、bluetooth テザリングに、 bt-pan というプログラム使ってたけど、接続できなくて sleep 1 で回してても負荷が無茶苦茶高かった記憶がある。

問題は最大3Mbps程度の通信スピードになるが、povo 2.0 の非課金速度が128kbps なので、ボトルネックになる事は無い。

今は、NetworkManagerを導入したおかげで、sudo nmcli dev connect [MACアドレス] で接続できるので、負荷が非常に低く、load avarage も

こんな感じで非常に低負荷で済んでいる。

【SoftEther VPN server】バージョンアップ

オープンソース版: SoftEther VPN 4.42 Build 9798 RTM (2023/06/30)

製品版: PacketiX VPN 4.42 Build 9798 RTM

米国 Cisco Systems, Inc. による高度なコードレビューと技術協力の結果、CVE-2023-27395 等の 6 件の脆弱性を修正しました。今回修正したいずれの脆弱性も、通常の使用方法と使用環境においては、不正侵入等のセキュリティ侵害に悪用されるリスクは比較的低く、実際の攻撃は容易ではありませんが、将来発見される可能性がある複数の脆弱性が組み合わさると攻撃に悪用される可能性もあるため、できるだけ、アップデートをお勧めします。

情報源: バージョン更新履歴 (ChangeLog) – SoftEther VPN プロジェクト

「アップデートをお勧めします」なんて書かれてるとやらざるを得ない。

SoftEther VPN Server は定期的にバージョンアップを実施する必要があります。放置しているとセキュリティホールを突かれて不正アクセスに繋がります。バージョンアップは容易に実施できるので手順を押さえましょう。

情報源: SoftEther VPN Server バージョンアップ手順 | りんか ネット

こちらを参考にまず、家のサーバーのRaspberry Pi 4のアップデート作業から始める。

要は、vpn_server.config のファイルをコピーすればいいだけだな。

ごちゃっとしてるけど、手順メモ(笑)

SoftEther VPN ダウンロードのページから、最新版のARM 64bit のファイルをダウンロードして、/user/local に設置。

旧バージョンに戻せるようにそれぞれフォルダ名にバージョン名を含め、systemd のスクリプトで矛盾が無いように vpnserver のシンボリックリンクを最新バージョンに張る。

具体的には、
/usr/local/vpnserver → /usr/local/vpnserver-v4.38
/usr/local/vpnserver のシンボリックリンクを /usr/local/vpnserver-v4.42 に張る。

そういや、SoftEther vpnserver 設置に試行錯誤で苦労した覚えがあるが、作業記録を全然残して無かったな(汗

systemd のスクリプトが次の通り。

[/etc/systemd/system/multi-user.target.wants/softether-vpnserver.service]

linux は vpnサーバーに接続すると、クライアントから vpn サーバーに ssh ログインできないという問題がある。

Unnumbered eth0 に br0 のブリッジで、IPアドレス振って、SoftEther VPN側から tap デバイスで br0 にローカルブリッジ設定してやると vpn接続後に、ssh 192.168.11.254 とか、サーバーのIPアドレス指定でログインできるようになる。

この辺、無茶苦茶苦労したのに全然記録に残してない(滝汗

なんせ、家のサーバーで br0 のブリッジデバイス作成に失敗して、完全通信途絶したので、USB キーボード&マウスとHDMIでディスプレイ繋いで、ローカル端末で修正しなくてはいけなかった。

ちなみにRaspberry Pi 4には、マウスとキーボードが一つのレシーバーで使えるELECOM TK-FDM063BKとかが便利。

わしはこれをNTT西日本のポイントで貰い、使い途に困ってたがRaspberry Piに使った時に、「コレだ!」っておもっちゃいました。 🙂

Kagoya VPS の irc.noizumi.org なんかは、通信途絶したらどうしようと冷や汗もので設定した。多分、通信途絶しても、VPS管理画面のコンソールだけは使えるだろうから大丈夫だとは思うけど。

後は、irc.noizumi.org のSoftEther vpnserverをアップデートすればいいけど、Intel x64版をダウンロードして、vpn_server.configコピーするだけだからすぐ済むな 🙂

停電

朝停電があったが、クーラー停止、電話器が「電話回線に接続してください」連呼、SoftEther VPNの接続不良と散々だった。

姉が押し付けて来た SANYOのコードレス電話だが、電話回線休止状態なので、接続する事ができず、デモモードになって延々と保留音のレパートリーを披露してくれる状態。

取説探したけど無いので、別の機種の取説見ると、電話回線のトーン、パルスの手動設定方法は無いようなので、電源ブチ切り。内線だけ使ってたけど、別の手段にしなくてはならない。

SoftEther VPN はServer Manager で見てみると、Kagoya VPSへ接続されているが、ローカルネットで設定した 192.168.30.254 やL3スイッチに設定している、192.168.11.253、192.168.30.253 へ ping が通らない。

家のサーバーリブートしても直らない。

とやったら直った。うーん……、何だったんだろう。

【irc.noizumi.org】AAAAレコード設定

XSERVERの案内メールで、AAAAレコードが設定できるとあったので、irc.noizumi.org の設定をやった。

とは言え、わしの家の環境はIPv4なので、ping 打っても応答しない。

一応、nslookup だと IPv6のアドレス表示されるので、ちゃんと設定されてるっぽいな。

【Raspberry Pi Zero 2 W】bluetooth ヘッドフォン接続不良

Raspberry Pi Zero 2 Wで以前、bluetooth ヘッドフォンを接続していたが、10→11にアップデートしてからは、接続が安定しない。

そういや、10の時に、sap server がどーたらで何か設定を変更した憶えがある。
次のページに解決法が書いてあったので実施。

情報源: Raspberry Pi 4のBluetoothから音を鳴らす呪い | hixの日記 | スラド

確か前にこういう設定をした憶えがあったけど、このブログに記録がねーんだよなあ。

bluetoothd を再起動して、接続テストしたら、切断されず、接続が維持できた。

bluetooth ヘッドフォンの接続をトリガーに、rx7pi の動体検知や、GPSの位置チェックを止めるという処理をしていたが、これで万事OK 🙂

【Raspberry Pi Zero2 W】通信カードで、iijmioに繋がった。

raspberry pi zero2 Wにて、NetworkManager のモバイルブロードバンド設定で iijmio 設定したら、無事、起動して即LTE回線接続するようにできた。

EM7430の通信カードで、povo2.0 のSIMだとダメだけど、iijmio の eSIMを eSIM.me の物理SIMカードに焼いた奴を挿したらいけた。

eSIMだから、月額440円で2GBまでの契約なんだが、もう一枚か……うーん。

eSIM.meのブランクカード余ってるから、もう一枚 eSIM契約でいけるし、今使ってる携帯電話の OPPO Reno7 Aは eSIM対応してるから、eSIM.me に焼かなくてもそれに使えばいいという話もある。

正直、通信速度が128kbpsでも事足りるから、iijmioのスペックは過剰で、povo2.0が使えていれば、丸く収まってたのに、色々と悩むなあ。

【Raspberry Pi Zero 2 W】Rasbian GNU/Linux 10 → 11 へ更新

RX7に車載している raspberry pi zero2 W(以下rx7pi)だが、通信にUSB接続の携帯電話を使っている。

携帯電話のセキュリティ上、必ずロック画面を解除してからでないとUSB接続してくれないので、時折ふと忘れる事があって、車載警報が鳴ったとしてもメール通知できない状態の時がある(笑)

そこで、通信カードに変えようと思った。

EM7430通信カード

これなら、rx7pi 電源投入時に自動で通信を確立できるはず。

ところが、dhcpcd で通信カードを使った設定例が探しても無い。

そこで、NetworkManager のモバイルブロードバンドで設定しようと、rx7piに NetworkManager をインストールしてみた所、dhcpcd とバッティングしてるのか、wi-fi接続毎にIPアドレスが変わって大層やりにくい。

ネットには、raspi-config で、dhcpcd か NetworkManagerのどちらを使うのか切り替えられるという記述を見たが、10 の buster のraspi-config にはそんな項目は無い。

とりあえず、NetworkManager の設定の為に、GUIを復活させてみたが、起動途上の画面は見えても最終的に GUIでも CUIでも「HDMI信号なし」となる。

つまり、rx7piにキーボードとマウスとモニタ繋いで操作ができず、ネットワーク接続できなくなったら、一切何もできなくなるから、迂闊に dhcpcdをアンインストールできない。

これは詰んだな。

後で気付いたが、raspi-config でGUI bootかCUI bootか選べるようになっていて、素人が知ってるLinuxの知識で、

とかやっちゃうと、多分、raspberry pi の設定と食い違いが出て不具合が出るのだろう。

という訳で、raspberry pi OS 11 の最新版を入れる事にする。 🙁

まずは、万が一の為に sdカードのバックアップ

32GBだから長いんだこれが 🙁

そしてバックアップが取れたら、今使ってる Ubuntu にSDカードを焼く環境を作る。

To install on Raspberry Pi OS, type
sudo apt install rpi-imager
in a Terminal window.

情報源: Raspberry Pi OS – Raspberry Pi

とあるので、その通りにする。

SD カード32GBをバックアップしてる間に、Raspberry Pi OS with desktopのイメージをダウンロードしていたので、次の様にして解凍して、OSのタブでカスタムイメージで設定。

しかし、OSのタブ見たら、ダウンロードも自動でしてくれるみたいで、別にダウンロードしなくても良かったが、その分、時間は節約できたから、まあヨシ。

ギアのボタン押したら、SDカードに焼く前に中身をカスタマイズできるようになっていて、今まで業者から買った時に付いてくるSDカードをそのまま使用していたから知らんかった。

pi ユーザー作らないし、結構便利だな。 🙂

焼き上がったので、早速 rx7pi にセットして起動……。
GUIで起動したけど、やたら重いなと思ったら、こいつメモリ500MBしか無かったんだった orz

お、あるね。という事で、NetworkManager を有効化して、デスクトップのWi-Fiアイコンを右クリックして、モバイルブロードバンドを設定……。

うーん、Ubuntu とかだと、「日本」とか選択できるんだが、選択肢が空だし、APN記入してても設定ファイルに記録されないし、完成度が低いぞ?

通信カードテストの為、Windows11 仮想マシンで色々やったが、donedone は接続できても、povo2.0 のSIMは「圏外」となって接続できない。

同じ KDDIの MVNOなのに、povo はダメってのがよく分からんが、楽天モバイルでも、古い携帯電話で使えないってのがあったし、EM7430って結構古いから、ダメなのかもしれんね。

という訳で、通信カード計画は断念 🙁

あと、 CUI起動にして、NetworkManager は、Wi-Fi の設定ファイルで、permissions=user:noizumi;: とかになってると、わしがログインするまでネットワーク接続されないので、permissions= と空にしてやった。

カメラはソケットが壊れたので、motion は入れてないけど、車が移動したら通知する為に、gpsd はインストール。ver.3.22 だったので、野良ビルドしなくて済んだ。 🙂

あと、メール飛ばすのに exim4 入れて、

「スマートホストでメール送信: ローカルメールなし」で設定。

設定した内容は次のファイルに記録される。

そして passwd.client にプロバイダのサーバーの認証情報を記述。

VPNの wireguard は、家のサーバーとのみ接続してたけど、家帰ってきて、家のLANに繋がると、VPNが応答しなくなるので、Kagoya VPSのサーバーをメインとして、家のサーバーと rx7pi はクライアントにした。

これでも、同じ家のLANに接続してるクライアント同士は通信できないのだが、少なくとも、Kagoya VPS経由でやり取り可能だから、一切rx7piと接続できない自体は減るはず。

いやあ、夏季休暇を満喫してるなあ 🙂

【Kagoya VPS】Ubuntu 20.04 LTS → 22.04 LTSへアップグレード

Kagoya VPSで、OSのテンプレートにUbuntu 22.04LTSが追加されているので、新しくインスタンスを起こして、セットアップする事も考えたが、新しいインスタンスだと、IPアドレス変わるだろうし、面倒臭いので、OSアップグレードにした。

sshで入って、次のコマンドを実行。

$ sudo do-release-upgrade

大体、30分も掛からずに\(^o^)/オワタ

しかし、postfix が cron-apt インストール時のおまけでインストールされていた為、アップグレード時に削除されてしまったので、再インストール

【作業記録】cron-aptインストール、postfix設定

これを参考にした。

irc.noizumi.org → プロバイダのメールサーバー でメール投げるので、例によって、サテライトシステム。

まあ、これはそのままで。

リレーホストはプロバイダのサーバーとポートを指定。

普通に、irc.noizumi.org でメールサーバー運用してもいいけど、他のサーバーの運営の経験上、ポート25番や587番を開けておくと、パスワード破りが頻繁にやってくるようになるので、外部からのメールを一切受け付けないって方式の方が楽。

sshにしても、VPN接続してない場合は、publicキー認証だけ有効にしているので、パスワード破りはできないようになっているが、それでも接続してくる奴が多い。

fail2ban で頻繁に認証失敗する奴を ban するようにしたら、1時間に1〜2回に減ったが、それまでは1分に1回とか、それはもうウザい数の接続が来ていた。

・postfixの設定編集

Xサーバーのホスト名だけど、TLS認証する場合、SSL証明書のホスト名じゃないとエラーになるので、noizumi.org では無く、sv13449.xserver.jp という正式名称を指定する。

プロバイダのメールアカウントの認証を通す為に末尾に設定を追加。

・中間証明書の取得

TLS接続に中間証明書が無いとエラーになる事があるので、例によって、goddadyから頂いて /etc/postfix/cert ディレクトリに設置する。

・パスワード認証ファイルの用意

postmap を実行すると、/etc/postfix/smtp_sasl_password.db ができる。

・postfixの再起動

・テストメール送信

ちゃんと届いた。

・TLS用SSL証明書指定

別に外部からメール投げる訳でも無いので、この設定は要らんのだけど、irc.noizumi.org はSSLの証明書を取ってるので、指定だけはしておく。

今の所、ircサーバーも、softether-vpnserver も fail2ban も問題なく動いているようである。

Kagoya VPSは、1 Core、 1GBメモリ、25GB SSDで、550円/月だけど、IRCとVPN動かすなら、これで充分なスペックだな。

NTT docomoから抜ける為に、mopera U からびわこインターネットへ鞍替えしようと考えているが、IPv6が使えるクロスパスの場合、ユーザーに割り当てられるのがグローバルIPじゃないので、外から家のマシンに直接繋げない。

SoftEther で Kagoya VPSに仮想HUBを接続してるので、クロスパスにした場合でも、Kagoya VPSの仮想HUBに繋いだら、家のマシンへプライベートアドレスで繋げるようになるから、契約しといて良かったな 🙂

【Raspberry Pi Zero 2 W】gpsd-3.24入れた。

GPS補足状況を確認しようと思ったので、取り敢えず、2ウインドウ表示して比較。

右がRaspberry Pi Zero 2 W(以下rx7pi)のGPSで、左が、ホームサーバーのRaspberry Pi 4のGPS。

GPSは、TOPGNSS GN803Gという製品で、2つ共同じなのだが、車載のrx7pi の方は、PRN194〜196のQZSSと、PRN300番台のGALILEOが表示されてない。

Ubuntu 20.04の gpsd-3.21 だと、QZSSが表示されているのは確認できているので、rasbian の gpsd-3.17だと対応していない疑惑。

Raspberry Pi 4の方は野良ビルドで、gpsd-3.24 を入れてあるので、rx7pi の方にも入れてやろう。

Building GPSD from source」を参考にして、

If ‘scons’ fails, it is possible that your target system has moved to Python 3 and removed the program ‘python’. Python.org says that if you have an installed Python, there should be a program in your path called ‘python’. This is specified in PEP 394. This rule is not always followed. You can work around this by linking python3 to python like this

python3 のシンボリックリンクを作成しろとの事だが、要はPATHが通ってる所なら良いので次のようにする。

なぜか、 ln -s /usr/bin/python3 /home/noizumi/bin/python で作成できなかったので、ちょっとまだるっこしい事をやっている。

必要な開発用パッケージを入れるけど、gtk3 とか入れるとアホみたいにパッケージが入っちゃうし、gpsd と gpsmon、 cgps のテキストベースで使えれば良いので、次のものを入れた。

python のライブラリのPATHは存在しないので、シンボリックリンクを張っておく。

そしてインストール

gpsd のビルドのページには、sudo scons udev-install とやれって書いてあるけど、既に gpsd-3.17のパッケージ入ってるし、そのままにしたいので、 install にしている。

一応、念の為、ちゃんと入ってるか確認。

既定は prefix=/usr/local なので、全てそこにインストールされている。

ExecStartのPATHを変更。

GALILEOは補足できてないけど、QZSSが補足できるようになった。

やっぱ、gpsd-3.17はQZSSに対応してなかったんだな。