ラズベリーパイ4で
自宅サーバの構築

2021年
10月9日
TK80/BSのシンセシステムを復活/拡張したい〜その65から分岐しました。引っ越しに合わせて、自宅サーバをラズベリーパイ4にする予定です。秋月でラズベリーパイ4(8GB)とヒートシンクを購入しました。手持ちのSDにFreeBSD13を書き込んで持って来ました。


早速、ヒートシンクを組み立てます。サーバ用途なので、ファンレスを選びました。

こちらはアマゾンで購入の1GbpsのUSBイーサネット変換アダプタです。

ラズベリーパイ4にアパートで書き込んできたFreeBSD13のSDを入れてブートさせてみましたが、残念ながらブートしませんでした。赤枠のブートローダのバージョンが2020/3/19版で低く、未対応でした。

10月11日
アパート作業です。ラズベリーパイOSを使って、システムごと、ブートローダもバージョンアップすると、2021/4/29版になり、FreeBSD13がブートしました。USBイーサアダプタのue0も認識していることを確認しました。gennet0は内蔵イーサです。


10月13日
アパート作業です。ローダ機能によりUSBブートも可能とのことで、普通の8GのUSBメモリにFreeBSD13を入れて確認したところ、問題無くブートしました。一応、ラズベリーパイOSでブート順をUSB優先にしておきました。USB接続のSDDにシステム全体を入れれば、/varなどのテンポラリのパーティションもそのままで問題なさそうです。


11月6日
ガレージにラズベリーパイ4を持ってきました、早速、光回線へ接続して動作を確認します。名前解決、wgetによるファイル取得の動作良好です。


続いて、ipfwによるフィルタ機能を確認します。ラズベリーパイ4からは外部のドルフィンへpingが通りますが、ローカルのPCからはルータのフィルタを介して外部へpingが通りません。

pingのICMPを許可するルールにログ出力を追加します。

ipfwのshowコマンドでルールとパケット数を表示します。ICMPのパケットは通過しています。

ログを確認すると正しく、LANとWANのインターフェース間をパケットが通っていることが確認できます。試しにipfwのタイプをOPENにして確認しても同様にpingは通りませんでした。フィルタ設定の問題ではなさそうです。

11月8日
アパート作業です。ラズベリーパイ4を持って来ました。アパートのadsl回線に接続して確認してみます。pppの設定をadslに変更してipfwの動作確認を行います。ブラウザで表示した時のDNS(53番)の取得でログが取れるように設定します。PCサーバと同じ設定にして比較します。

下はラズベリーパイ4のログです。ログでは正しく通っていますが、ブラウザでページは表示されませんでした。ガレージの時と同様の不具合です。

こちらは既存のPCサーバのログです。ログでは正しく通って、ブラウザでもページが正常に表示されました。

11月9日
アパート作業です。昨日の続きの不具合解析です。PCにWinsharkをインストールしてクライアント側でパケットをキャプチャして違いを比較してみます。初めに既存のPCサーバの時です。コマンドプロンプトからnslookupでドルフィンのアドレスを表示させます。稼働中のPCサーバでは当然ですが、正しくwww.din.or.jpのアドレスが表示されます。s−ns1.din.or.jpはDNSの名前、210.135.90.1はresolve.confに記述されているDNSのアドレスです。

上記のコマンドを実行させた時のWinsharkのキャプチャです。問い合わせと、応答が対になって正常動作しています。

上記のコマンドを実行させた時のipfwのログです。問い合わせのパケットがLANインターフェースでPCからドルフィンへ、WANインターフェースでPCからドルフィンへ通過しています。応答のパケットがWANインターフェースでドルフィンからPCへ、LANインターフェースでドルフィンからPCへ通過しています。2回目のポート番号は異なる番号が使われています。

続いてラズベリーパイ4サーバの時です。タイムアウトしています。

上記のコマンドを実行させた時のWinsharkのキャプチャです。問い合わせのみで、応答がありません。

上記のコマンドを実行させた時のipfwのログです。問い合わせのパケットがLANインターフェースでPCからドルフィンへ、WANインターフェースでPCからドルフィンへ通過しています。応答のパケットがWANインターフェースでドルフィンからPCへ、LANインターフェースでドルフィンからPCへ通過しています。ipfwのログでは正常動作しているように見えます。ただ、PCサーバの時と異なり、2回目も同じポート番号が使われています。不具合の原因は、青緑枠のパケットがLAN側のクライアントPCへ到達していないためと思われます。

11月10日
アパート作業です。昨日の続きの不具合解析です。初めに不具合のラズベリーパイ4です。サーバ側でtcpdumpを使ってパケットをキャプチャしてみます。下のコマンドで双方のホストアドレスとポート番号が53(DNS)の時にキャプチャし、結果をファイルに書き込みます。

上側はipfwのログです。昨日と同様にドルフィンのDNSとローカルのPC間で相互にパケットが通過しています。下はtcpdumpの結果です。tcpdumpの方はローカルのPCからドルフィンのDNSへの一方通行になっています。問い合わせは送っていますが、応答はありません。これは昨日のPCのWinsharkの結果と一致します。ここで分かったことはipfwのログとtcpdumpの結果が一致していないことです。ローカルPCが外に出られない原因はサーバからローカルPCへパケットが出ていないためと思われます。

続いて、既存のPCサーバの時です。コマンドはラズベリーパイ4と同じです。ipfwのログではドルフィンのDNSとローカルのPC間で相互にパケットが通過しています。

下はtcpdumpの結果です。ドルフィンのDNSとローカルのPC間で相互にパケットが通過しています。正常動作しているPCサーバなので当然です。

PCサーバとラズベリーパイ4のipfw設定を比較してみます。インターフェース名が変更されているだけで、同じ設定です。fxpがue0に、vr0がgenet0に変更されています。新しいipfwのshowコマンドではポートにdst−port表示が無くなっています。

ラズベリーパイ4でnetstatコマンドを実行してみます。なぜか、LAN側の192.168.0.1と175.100.211.163のインターフェースがなぜか、lo0になっています。lo0はループバッグインターフェースなので、内部でループするだけで外部に出ないです。ipfwのログでパケットが通過しているのに、実際のLAN側に出ないのはこのためかもしれません。

続いて、PCサーバでnetstatコマンドを実行してみます。LAN側の192.168.0.xxxはvr0で正常です。

11月16日
アパートのADSL環境で、ラズベリーパイ2のFreeBSD11.3で同じ設定のルータ機能を確認してみます。動作良好です。

FreeBSD11.3でnetstatコマンドを実行してみます。FreeBSD13と同様にlo0が複数出てきます。192.168.0.xxxがlo0になっているのが不具合の原因では無いです。

ラズベリーパイ4のイーサインターフェースを入れ替えてみます。オンボードのgenet0をpppのtun0に、LAN側を外付けのue0にした時のppp.logです。接続後、直ぐに切れています。その後、30秒おいて、繰り返しで接続できません。

イーサを元に戻します。pppのtun0を外付けue0に、LAN側をオンボードのgenet0にしてppp.logを確認します。接続良好です。

どうも、オンボードのgenet0が悪そうなので、同じバッファローの100Mbpsの外付けイーサで動作確認します。これは1Gbpsと同じコントローラ系なのでue1として認識されます。このue1をLAN側にして、設定ファイルを修正します。これでLAN側から外に出られるようになり、ルータ機能が良好になりました。全然動かなければ直ぐに分かるのですが、LAN側にpingが通ったり、一見動いているように見えるので、時間がかかりました。とりあえず、不具合の原因が判明して良かったです。もう1つ1GbpsのUSBアダプタを買えば、当面は運用できそうです。後はApacheのwebサーバの設定です。


11月20日
今週末は月曜日を有給にして4連休にしました。アマゾンに発注しておいた、以前に購入した物と同じ、1GbpsのUSBイーサネット変換アダプタが届いていました。早速、動作確認を行いました。ipfwによるルータ機能は良好です。


11月21日
サーバ用に用意しておいた棚に乗せました。WEBサーバの設定はApacheのバージョンが2.2から2.4ヘ上がったり、cgiのperlのバージョン変更で設定がけっこう大変でした。アドレスの直打ちでWEBサーバが正しく動作していることを確認しました。

11月23日
イーサなどのインジケータが見にくいので、機器をアクリル板にタイラップで固定して立てて使うようにします。

壁に木ネジで固定して壁掛けタイプにしました。ケーブル類は後でまとめておきます。

11月28日
この週末は日曜日のみの作業です。ラズベリーパイ4サーバの電流を計ってみました。平均すると1.2〜1.3A位を表示します。電力は約6.5Wです。

SSDのアクセスインジケータの輝度が高すぎなので、制限抵抗を大きくしました。330オームから2Kオームに変更しました。高輝度LEDに何も考えず、330オームを使うと明すぎです。

12月11日
大きくアマゾンで購入のUSBハブとBLEの実験に使うドングル2種を購入しました。


USBバブを介して、ドングルを挿入した時のメッセージを確認しておきます。双方ともubtドライバが起動していることを確認しました。BCM20702とCSR8510です。


12月25日
アパートの旧サーバを停止したので、WiFiルータをアパートから移動しました。これでスマートフォンもWiFi経由で使えます。

新サーバ用のソーラUPSを作製します。ブロック図を作りました。理想ダイオードで電源をORして、ソーラとACアダプタを切り替えます。電源が供給されなくなるの条件は停電でかつバッテリが無くなった時です。サーバからはUSBを介したSPI通信で各電圧と電流を測定します。

秋月で購入のソーラUPSの部品が来ました。電流センサと理想ダイオード、パネル表示電圧計、片電源オペアンプです。

12月28日
ソーラUPSの作製を開始します。電流センサ、理想ダイオード、以前に購入したあったDC−DC電源を基板に載せて、裏側にGNDと電源を配線し、基本動作を確認しました。電圧の高い方から電源が供給され、シームレスに切り替わることを確認しました。



