ミラーレス一眼カメラを LAN に接続 ~ Raspberry Pi で作った NAPT ルーター経由

イメージ
先日購入したミラーレス一眼カメラである OLYMPUS OM-D E-M10 III の Wi-Fi 機能を使って、Raspberry Pi 3B+ で作った NAPT ルーター経由で LAN に接続したよ、って話です。思い付きでやってみた感じで、設定も比較的単純な内容なのですが、他に記事になっているようなものを見かけなかったことと、やってみて、思ったように出来たこと、出来なかったことがありますので、まとめてみたいと思います。 プロジェクトの概要 ミラーレス一眼カメラでも、最近の上位機種は、LAN ポートを持っていたりして、直接ネットワークに接続できるものもあるようです。ですが、私の持っているものも含めて、現状の多くのカメラの場合、Wi-Fi 機能があると言っても、大抵は次のような使い方を想定したものであるようです。 カメラ側が Wi-Fi アクセスポイントとして機能するため、そこに接続するスマートフォンなどは、既存のインターネットなどの接続を切断した上で、新たに接続し直す必要があります。カメラがネットワークに組み込まれるわけではなく、Wi-Fi という形を取りながらも、ピア・トゥ・ピアでの接続となります。 屋外で使う前提でいくとこの形がいいのはわからなくもないのですが、既に LAN が導入され、Wi-Fi が飛び交っているような屋内で使おうとすると、手間ばかりかかります。他の PC などでも使おうとした場合、それぞれに接続し直さなきゃいけないし、デスクトップ PC などの場合は、そもそも Wi-Fi インタフェースを持っていない場合も多いし。ノート PC などで、Wi-Fi を使っていたとしても、既存の LAN やインターネットの接続を切ってつなぎ直さなきゃなきゃならないというのは、NAS などへのアクセスもできなくなることを意味するので、たとえば、カメラから取り込んだデータを NAS に保存したい場合などだと、作業に制限が出てしまいます。 というわけで、次の図みたいにできたら、便利なんじゃないかなー、という思い付きです。調査してみたところ、カメラとスマートフォンの間の通信プロトコルは、HTTP だということも判明したので、もしかしたら WebDAV が使えるのではないか、と期待してテストはしてみたのですが、そ

Raspberry Pi Model 3B で DNS - そのパフォーマンス

ご存知の方も多いと思うのですが、DNS というのは、Domain Name System のことです。ま、これが何だって言うと、意外と機能の一部分しか語られていなかったりして、その全体像を説明した文章が少ないような気はするのですが、Wikipedia(DNS) によれば、1983 に開発されたらしいです。
BIND っていうのは、DNS を管理する DNS Server の実装の 1 つで、こちらも Wikipedia(BIND) によれば、1988 年に書かれたものらしい。
DNS & BIND の教科書といえば、これ。


奥付。


古過ぎ(笑)。
まぁ、今は BIND もバージョンが 9 になって、機能も追加・変更されているけど、基本は、30 年も前から動いていたシステムだってことです。30 年も前だよー。当時のコンピュータの性能や、ネットワークの帯域を考えたら、今の Raspberry Pi でも、余裕で動くような気がするでしょ。

ちなみに、DNS Server の機能は、光回線のゲートウェーになっている機器、ブロードバンドルーターなども持っていることが多いです。家では、ドコモ光(実質は NTT 西日本のフレッツ光)を引いていますが、設置されている PR-500MI にも、簡易的ながら、その機能があります。では、なんでそれを使わないで、わざわざ別に立てるのかと言えば、大きな理由は、LAN 内のアドレスの管理のしやすさと、今後の拡張性です。
そこで、今までは NAS に使っている Raspberry Pi Model 3B に BIND を同居させて使っていたのですが、
  • LAN 内を管理する DNS サーバーとしては、1 台しかなかった。
  • 他の機能と同一ハード上に同居させているため、メンテナンスなどで停止させることがある。
という理由で、クライアントマシンからの検索要求は、一度、全て PR-500MI の方に投げ、そこから、LAN 内のものは Raspberry Pi の方に振り分ける設定にしていました。Raspberry Pi の方を停止させた時に、Web 上の資料を参照できなくなるというのは、メンテナンスに支障が出る可能性があると考えたからです。
今回、NAS に使っているマシンを Raspberry Pi Model 3B から 3B+ に置き換えるのを機に、DNS の機能を分離させでメンテナンス性を向上させると共に、デスクトップとして使っていた Model 3B も加えて、Raspberry Pi の 2 台体制にして、信頼性も向上させる計画を実行中です。それに伴い、クライアントマシンからの検索要求も、直接、Raspberry Pi 上の DNS に向くようにします。
ただ、PR-500MI の DNS 機能を使わなくしてしまうわけではなく、LAN 外部の検索は、逆に Raspberry Pi の方から PR-500MI の方にフォワードしている形です。PR-500MI は、純粋に DNS プロキシとして働きます。これ、設定方法によっては、Raspberry Pi から直接、プロバイダー提供の DNS にフォワードしたり、あるいは、自身でルートドメインから検索をたどることだってできるわけで、ちょっと悩みました。悩んだ末ですが、NAPT で穴を開けるより、プロキシを使った方が安全だろうという結論で、こうなりました。PR-500MI は自動取得したプロバイダー提供の DNS にフォワードしているだけだろうとは思うのですが、自動取得したアドレスが使えるのもメリットです。


私の家のサーバー。百均で買ってきた積み重ねできるプラのトレーを加工しています。



上の段には、何気に Raspberry Pi Model 3B が置かれています。基板にスペーサーを付けて、脚にはしているのですが、固定するまでもない感じなので、置いてあるだけです。コード類を通す切り欠きだけは、加工してあります。


下の 2 段は、ハードディスクドライブ。安いグレードのものなんですが、2 台使ってミラーにしてあります。こちらは、クッション材を噛ませて、ちゃんとネジで固定してあります。SATA - USB の変換ケーブルは、別電源式。ハードディスクドライブそれぞれに別々の AC アダプターを使っているんで、無駄に感じるかもしれませんが、別々にしておいた方が、障害には強いです。


で、とりあえず、新し DNS を 1 台作りました。合わせて DHCP も入れました。もう 1 台は、左の NAS を Model 3B+ に換えてから、余った方の 3B で作る予定です。NAS マシンの方に残こすのは、ミラーにするための mdadm と NFS と Samba ぐらいなので、3B+ に Raspbian Strech Lite をクリーンインストールして、最初から構成しなおす予定。これだけでも、メンテナンス性の向上が実感できます。


パフォーマンステスト


ただ、やっぱり気になりますよね。Raspberry Pi の Model 3B で、期待した性能が出るのかって。特に、Ethernet が 100Base-TX なのが、遅延に影響あるのかどうかとか。というわけで、ここで、実際に測ってみました …。
比較対象を含めて、以下の DNS サーバーを測定しました。
  • gw.private.fitfat.plala.jp(光ゲートウェイ PR-500MI)
  • 220.220.248.1(インターネットプロバイダー「ぷらら」提供プライマリ)
  • 220.220.248.9(インターネットプロバイダー「ぷらら」提供セカンダリ)
  • 8.8.8.8(Google Public DNS プライマリ)
  • 8.8.4.4(Google Public DNS セカンダリ)
  • ns1.private.fitfat.plala.jp(新規作成 Raspberry Pi Model 3B + BIND9)

測定は、dig コマンドを使います。ターミナルより、

    dig @<DNS サーバー> <検索対象ドメイン名> +noall +stats

と入力し、表示される Query time を使います。それぞれ 10 回ずつ測り、平均値を求めました。DNS サーバーにキャッシュがある場合と無い場合で、値が変わるため、検索対象ドメイン名の切り替えにより、それぞれ別々に測定しました。

まずは、サーバーにキャッシュがある場合の検索。対象ドメインは「www.example.com」とし、最初のデータはキャッシュが無い可能があるので捨てました。2 回目以降の連続した 10 回分を対象データとしました。


DNS サーバー Querry time(ms)
1 回め 2 回め 3 回め 4 回め 5 回め 6 回め 7 回め 8 回め 9 回め 10 回め 平均
gw.private.fitfat.plala.jp 9 13 11 9 9 9 11 10 11 9 10.10
220.220.248.1 8 8 8 8 12 10 8 8 9 10 8.90
220.220.248.9 8 9 9 9 8 9 9 8 8 9 8.60
8.8.8.8 10 40 9 44 41 41 48 43 41 9 32.60
8.8.4.4 44 40 47 40 47 9 47 44 10 43 37.10
ns1.private.fitfat.plala.jp 1 1 1 1 2 1 1 1 1 1 1.10

赤字のデータが、今回、立てた Raspberry Pi Model 3B です。他を圧倒してます。gw.private.fitfat.plala.jp(光ゲートウェイ PR-500MI)は、キャッシュを全く行っていない様子ですね。プロバイダー提供の DNS を直接見にいくよりも時間がかかっています。Google Public DNS は、どういうわけか、すごく速いときと、時間がかかるときに分かれます。

次に、サーバーにキャッシュが無い場合の検索。対象は、プロバイダーが提供しているダイナミック DNS によって割り振られているドメイン名である「fitfat.plala.jp」としました。TTL が 10 秒のため、それぞれ 10 秒以上の間隔を空けて測定しました。


DNS サーバー Querry time(ms)
1 回め 2 回め 3 回め 4 回め 5 回め 6 回め 7 回め 8 回め 9 回め 10 回め 平均
gw.private.fitfat.plala.jp 23 20 22 23 21 21 21 21 22 19 21.11
220.220.248.1 22 20 20 19 21 21 19 20 19 18 19.90
220.220.248.9 18 19 18 19 21 20 23 21 19 21 19.90
8.8.8.8 93 86 93 87 126 80 88 84 88 95 92.00
8.8.4.4 87 121 92 126 85 86 83 88 84 93 94.50
ns1.private.fitfat.plala.jp 23 23 25 25 24 25 24 24 24 25 24.20

同じく、赤字のデータが、今回、立てた Raspberry Pi Model 3B です。ま、光ゲートウェイ搭載の DNS や、プロバイダー提供の DNS を、直接見に行くよりは、若干、余分に時間がかかっている感じです。ただ、差はわずかだと言えます。

サーバー内にキャッシュが無い状態だと、改めて外部のサーバーに問い合わせに行くので、多少、余分に時間がかかるのは仕方ありませんが、キャッシュされる効果は大きく、Raspberry Pi 程度の性能のマシンでも、十分に価値があるといえると思います。

というわけで、つぎは、Raspberry Pi Model 3B+ に Raspbian Strech Lite を入れて、NAS づくりです。


コメント

このブログの人気の投稿

ハードディスクへ Raspbian Strech をインストール [続報]

XCY X33J1900 というベアボーン PC … ルーターとして使用中

ハードディスクから Raspbian Buster を起動の予定が … Raspbian Stretch を入れ直す・詳細手順の紹介