おは代々木ダイアリー

いろいろ試したメモを書きます

【HDDマイニング】Chiaで複数PCを利用してファーミングする

はじめに

みなさんHDDマイニングしてますか?

GPUみたいに瞬間計算速度勝負にはならないので、ネットワークの維持にかかる消費電力が少なく済む、エコな仮想通貨(ほんとか?)として話題のアレです。

特別なデバイスが必要になるものではないので、試しに外付けHDDを買ってくれば試せる手軽さはGPUマイニングにない良さですね。

こういう、SSD+外付けケースだったり、適当に容量があるHDDを使えば、一応始められます(あたるかは完全に運)

当方の環境としては「当たれば御の字」という感じで、家にあった上記のような製品を使ってオタメシしています。

Chiaのファーミングとは

世間では「HDDマイニング」と呼ばれますが、Chia用語的には「ファーミング」です。

ファーミング とは HDDに保存されている宝くじのようなもの(100GBぐらい) が、 Chiaネットワークで要求されているものかを確認し、もし、それが運よく要求されているものだったら報酬がもらえる、といったものです。

2021年5月現在、1つのプロットにかかるのは 6時間、300GB超のディスク容量(一時ファイル) と言われており、 この途方もなさが瞬間火力勝負のGPUマイニングとの最たる違いで、条件が提示されてから計算してからはもう遅いという話です。

プロットを管理するharvester

雑なイメージ図を書いてみました。

f:id:ohayoyogi:20210520141612p:plain
プロットを管理するのがハーベスタ

  • ハーベスタ(Chia用語 harvester )は作成されたプロット(Chia用語 plot )を管理する役割
  • ファーマー(Chia用語 farmer )はハーベスタに対して、要求される要件を満たすプロットを提供

ハーベスタに要求される性能

上の図の通り、プロットは他のマシンで作成してハーベスタにアップロードする、というやり方も実現できます。

つまり、プロット作成に要求されるようなマシンスペックは必要ありません。よって、いかに プロットを格納できるHDDを確保できるか? がポイントです。筐体の出来の良さとかを考えれば、NASハーベスタをやらせるのもよいと思います。

問題は、プロットが要件に合致するものか検証するためにどれぐらいのスペックが必要になるか?ということですが、これについては負荷を見ていい感じにハーベスタにプロットを割り振れば負荷を分散できるのではないかと思っています。(具体的な値は持ち合わせていないので、何かご存じでしたらコメントとかもらえると嬉しいです)。

  • 容量モリモリにするのがハーベスタ
  • CPU・リードライト性能モリモリにするのがプロッター

と考えて準備すればよいのではないかなと思います。

ハーベスタのセットアップ

ここからはコマンドラインを多用します。

初期化

ルノードを担っているメインマシンのカギをダウンロードします。デフォルトでは ~/.chia/mainnet/config/ssl/ca に格納されているので、ca フォルダごとローカルにコピーします。

私の環境はフルノードをUbuntuで動かしていて、ハーベスタWindowsにしようと思っているので、Zipに圧縮して持ってきました。

# フルノードで↓
cd ~/.chia/mainnet/config/ssl
zip ~/ca.zip ca  -r

# 新しく作るハーベスタ側で
scp <FULL_NODE_IP>:~/ca.zip ./

で、ダウンロードできた ca.zipC:\ca などに展開します。で、ダウンロードしてきたcaフォルダを使ってハーベスタを初期化します。

# 新しく作るハーベスタ側で
chia init -c C:\ca

こうすると新しく鍵がインポートされ初期化されます。

設定

ハーベスタの設定は ~/.chia/mainnet/config/config.yaml に書かれています。(フルノードを動かしたりするための設定も記載されているのでファイルがデカい)。

harvester: から始まる行以降がハーベスタの設定部分です。

まずは farmer の指定。ハーベスタの設定部分内の farmer_peer: から始まる部分を探して、hostにファーマーのIPアドレスを記入します。

  farmer_peer:
    host: <FARMER_IP_ADDRESS>
    port: 8447

次にプロットを格納する場所を指定します。下記のようにフォルダを列挙すると、そのフォルダに格納されたプロットをハーベスタが扱ってくれるようになります。

  plot_directories:
  - D:\plots
  - E:\plots
  - F:\plots

ハーベスタの起動

下記コマンドで起動できます。

chia start harvester

起動していることの確認

先ほどのコンフィグファイルのログレベルの指定箇所の log_levelINFO に指定することで動作している様子を確認することができます。

  logging: &id001
    log_filename: log/debug.log
    log_level: INFO
    log_maxfilesrotation: 7
    log_stdout: false

こんな感じに。

2021-05-20T14:07:46.124 harvester chia.plotting.plot_tools: INFO     Searching directories ['E:\\plots', 'D:\\plots']
2021-05-20T14:07:46.135 harvester chia.plotting.plot_tools: INFO     Loaded a total of 4 plots of size 0.39592934947722824 TiB, in 0.058008432388305664 seconds
2021-05-20T14:07:46.137 harvester chia.harvester.harvester: INFO     0 plots were eligible for farming 0000000000... Found 0 proofs. Time: 0.06001 s. Total 4 plots
2021-05-20T14:07:46.139 harvester harvester_server        : INFO     -> farming_info to peer <FARMER_IP_ADDRESS> 1234567890123456789012345678901234567890123456789012345678901234
2021-05-20T14:07:54.438 harvester harvester_server        : INFO     <- new_signage_point_harvester from peer 1234567890123456789012345678901234567890123456789012345678901234
 <FARMER_IP_ADDRESS>

といった感じで指定されたディレクトリからプロットが読み込まれて、ファーミングされることがわかります。(まだ4プロットしかないw

終わりに

プロットを作成する方法などもいずれ書きたいと思いますが、個人的に詰まったポイントを先に書きました。

参考URL

今回の記事は下記の Chia-Network の GitHub Wiki の下記ガイドの内容をベースに記載しています。

Farming on many machines · Chia-Network/chia-blockchain Wiki · GitHub

MSI RADEON RX5500 XT GAMING 8GBを購入しました

人生初のグラボ!

前回記事でも書きましたが、ひかりTVショッピングでPCパーツを購入し、パーツがそろったのでPCを組みました。

ohayoyogi.hatenablog.com

今回購入したのは Ryzen 3 3100 というCPUで内蔵GPUが含まれません。

そこで購入したのがMSIの RX5500 XT GAMING 8GB です。

MSI Radeon RX 5500 XT GAMING X 8G J グラフィックスボード VD7577

MSI Radeon RX 5500 XT GAMING X 8G J グラフィックスボード VD7577

  • 発売日: 2021/03/12
  • メディア: Personal Computers

人生初のグラボで何をレビューしていいのやらって感じですが・・・とりあえず見た目をw

f:id:ohayoyogi:20210326191226j:plain
箱がデカい!

f:id:ohayoyogi:20210326215159j:plain
カッコイイ!!

このカッコよさだけでも買った価値がありますねw

補助電源コネクタの向き

あんまり確認せずに購入してしまったのもアレですが、ケースに入れようとしてみると補助電源コネクタがケース側面の蓋に向かって生える格好になっています。

f:id:ohayoyogi:20210326215556j:plain
マザボ向かって反対側↑に生える補助電源コネクタ

これだと蓋が閉まらないことはないですが、ケーブルに変な負荷がかかりそうでだいぶ不安なのでケースを閉めずに放置していました。

PCI-e U字コネクタを買う

というわけで上記のような補助電源の向きを180度変えられるものを買ってみました。

f:id:ohayoyogi:20210326221448j:plain
着弾

いかにもなパッケージで届きました。

f:id:ohayoyogi:20210326221200j:plain
装着

取り付けてみるとこんな感じで、ケースの蓋まで数ミリの余裕があれば大丈夫そうですね。

f:id:ohayoyogi:20210326221730j:plain
ケーブルをつないだところ

ケーブルを繋いでみたところも撮ってみましたが、180度向きが違うのでマザボ側に行っていて見えないですw

U字コネクタには向きがある

ところで、このコネクタには「下向き」のものも存在します。

どのグラボがどのコネクタなのかは注意深く見る必要があります。多分モデルによって異なるということはないと思いますが、商品写真を見て自分のグラボに合う商品はどちらなのかを確認すべきかと思います。

上下逆のものを購入してしまうと、差込口がグラボの太い部分に行ってしまうことになり、刺さらない可能性があります。

終わりに

以上、グラボを買ったよ~という記事でした。

Windows導入したらベンチマークでも回してみようかなぁ

ひかりTVショッピングのキャンペーンにつられてPCが一台生えた話

ひかりTVショッピング、スマホ契約でポイント還元してくれたり、ポイントもりもりなクーポンを発行してくれるんでポイントが溜まりがちです。

ぼくはうまくポイントが使えると脳汁がドバドバ出るタイプのポイントジャンキーなので、 「50%ポイント還元って実質50%オフだから2個買っちゃお!」みたいなテンションでお買い物をしています。

ポイントの有効期限がやばい

というわけでポイントの使い道を考えずに購入してしまい(または考えたものの現金で買っちゃうとか)、ためたポイントの有効期限が一斉に牙を剝くことがあります。

例にもれず今回も年度末に有効期限切れポイントがだいぶ発生しました。で、結果パソコンが生えました。

f:id:ohayoyogi:20210324002017j:plain
生えたパソコン

見る人が見れば、ちぐはぐな構成に見えるかもしれませんが、パーツ選びで重視したことは以下の通り

  • Ryzen 試してみたい!(Zen2がすごいらしい)
  • CPUが決まったらそれをフルに使えるように規格を選ぶ
  • オトク度が高そうなやつ
  • レビューがいいやつ。極力多くの人が使ってるやつ

てな感じです。まぁ何にもとがってないパソコンが出来上がるわけです。

年度末がすごかった

話が脱線してしまいました。ここまで自分が暴走してしまったのは、年度末のひかりTVショッピングの怒涛のキャンペーンがすごかったのが原因です。今年度も残すところ1週間となりましたが、ここから更にすごいのが来るか、それとも次回は来年度?って感じですが、ほしい物はほぼそろったのでもう参加するかは微妙です。

購入したもの

では書いていきます。リンクは参考です。

初日 2/19

年度末の在庫処分セールが始まったのがこのあたりです。

下記のような感じで 23734円支払って、後日 18089Pt 付与されました。ちょうど3月に付与されたので、タイミング的にはかなりオイシイ感じでした。

電源 CORSAIR RM550X-2018

価格 9982円 - 998円(LinePayクーポン) = 8984円
還元 99Pt(1%) + 4990Pt(クーポン50%)

HDD SEAGATE Barracuda 128MB 1TB 5400RPM 2.5inch

価格 8769円 - 876円(LinePayクーポン) = 7893円
還元 2610Pt(30%) + 4384Pt(クーポン50%)

ケース Silver Stone PS09 (MicroATX)

Silver Stone PRECISION SERIES マイクロATXケース ブラック SST-PS09B

Silver Stone PRECISION SERIES マイクロATXケース ブラック SST-PS09B

  • 発売日: 2013/11/15
  • メディア: Personal Computers

価格 7621円 - 762円(LinePayクーポン) = 7859円
還元 2280Pt(30%) + 3810Pt(クーポン50%)

Day2 3/9

初日のポイント(18089Pt)が着弾しました。ちゃんと使い道考えててえらい!

CPU Ryzen 3 3100

価格 13311円 - 8311円(ポイント利用分) = 5000円
還元 50Pt(1%) + 2000Pt(2月3月連続購入キャンペーン)

マザボ B550M Pro4

価格 12980円 - 2980円(ポイント利用分) = 10000円
還元 5000Pt(クーポン50%)

グラボ RX 5500 XT

MSI Radeon RX 5500 XT GAMING X 8G グラフィックスボード VD7496

MSI Radeon RX 5500 XT GAMING X 8G グラフィックスボード VD7496

  • 発売日: 2020/12/26
  • メディア: Personal Computers

価格 38889円 - 6798円(ポイント利用分) - 28202円(もとから所持していたポイント) = 3889円
還元 38Pt(1%)

まとめ

上記合計すると 支払ったのが 現金42623円 ポイント 28202Ptで、今後還元されるポイントが 7088Ptとなりました。実際にはポイントサイトを通していたり、クレカのポイント還元がさらにあるので、もっと安くなっているのではないかと思います。

あとはCPUをAPU(Ryzen 5 3400Gなど)に変えてグラボを削れば、もっとお安くRyzenを体験できたのではないかと思います。個人的には Zen2 と PCIe 4.0 が気になっていたので、3400Gはないなと思いましたが・・・(あとはグラボでマイニング体験もしてみたかった。)

なんかこんだけポイント貰えたぜーというのはイヤミな感じになってしまうかなと思い、書くのを躊躇いましたが、ちゃんと電卓叩いて振り返ってなかったので振り返ってみました。何かのご参考になれば幸いです!

おまけ:通したポイントサイト

ポイントジャンキーな私なので、いろんなポイントサイトを経由してポイントを集めています。

LINEショッピング

最近きな臭いLINEですが、そのLINEが手掛けるポイントサイトが「LINEショッピング」です。LINEショッピングではLINEポイントと呼ばれるポイントが獲得可能で、LINE PAYの支払いに充当できるほか、LINE証券で株を買ったりもできます。

紹介リンク から登録してくれると書いている人が喜びます。(そういうの嫌いな人はリンクを踏まずに直接登録するといいと思いますw)

LINEショッピングでは毎週金曜日に「3300円以上購入で200ポイント付与」される ポチポチフライデー というのを開催したりします。5000円買ったとして200ポイントは普通に4%なので経由しない手はないですね。

f:id:ohayoyogi:20210323235420p:plain
ポチポチフライデー

ハピタス Hapitas

ポイントサイト老舗の「ハピタス」です。だいぶ前からお世話になっていますが、ポイントの交換先が豊富 なことがハピタスを利用する上での大きなメリットで、困ったらハピタスを通してます。下にリンク貼っておきます。

紹介リンク

f:id:ohayoyogi:20210324000549p:plain
ドミノピザ(2021年3月24日現在)

ドミノピザはなんと 4% ポイント付与。1kgチーズにはたびたびお世話になっています。

リーベイツ rebates

レノボショッピング 20%ポイント付与」で一躍有名になったリーベイツ。これは楽天が運営するポイントサイトですが、ここも結構お世話になっています。付与されるポイントは楽天Payなどに使えますし、言わずもがな楽天経済圏に住む人ならまぁ用途には困らないでしょう。

Rebatesお友達紹介キャンペーン

おまけ:メモリの購入

上記リストにはメモリが記載されていないんですが、メモリはADATAのDDR4-3200 XPG D20 というのを買いました。容量は8GB×2ということで妥協してしまった感はありますが、まぁこだわっても仕方ないだろうなと思って割り切りました。PayPayの祭もあってだいぶ実質的に安くゲットできたんじゃないかなと思います。

Raspberry Pi で 特定のリモートIP遮断ルーターを作る

はじめに

オンラインゲームをやっていて全ユーザー・運営が苦慮するのが通信品質の悪いプレイヤーとのマッチングだと思います。

2020年7月30日に発売したPS4の「機動戦士ガンダム EXTREME VS. マキシブーストON」もFAQの実に3/4を通信品質について記載しています。

機動戦士ガンダム エクストリームバーサス マキシブーストON (マキブON・マキオン) | バンダイナムコエンターテインメント

Q2. 通信遅延が起きる。
本製品に関しましては、弊社独自のサーバーや通信回線は使用しておりません。
通信状況の悪化による影響となりますので、通信事業者様にお問い合わせください。

Q3. 自身の通信状況は良好な状態を示しているが、対戦中に遅延が発生することがある。
本製品はP2P方式で通信を行っております。
対戦に参加する方の通信状況によって、遅延が発生する可能性がございます。
また対戦マッチング時に、対戦に参加する方が全て良好な通信状況を示している場合であっても、
対戦中の通信状況の変化により遅延が発生する可能性がございます。
少しでも対戦中の遅延を防ぐ為、有線LANを使用しての対戦を推奨致します。

Q4. オンライン対戦の回線表示について
アイコンはご自身とルームホスト/メンバーとの通信相性を表示しています。
※通信速度を示すものではありません。
例)ご自身を含むメンバーそれぞれの回線が高速の場合でも、お互いが物理的に遠距離であったり、近場であっても通過するインターネット通信網の経路が混み合っている場合などは通信相性が悪くなります。

まぁそれだけ通信品質についてのクレームが多いということなんでしょうか。P2P方式であれば対戦中の品質についてはゲーム会社は関係ないですし知らんがなって感じではあると思いますが

通信経路に無線通信が絡むと品質が悪くなる

マンションの共用回線を使用しているなどといった原因もあるとは思いますが、無線が含まれるとやはり品質が悪くなる傾向があると思います。(個人の感想)

当該ゲームについては、マッチング時に診断を行うことで、事前に通信状況を確認できる措置をとっており、PS4WiFi機能を使用しているユーザーとのマッチング確認ではWirelessマークが表示されます。

f:id:ohayoyogi:20210321134325p:plain
WiFiプレイヤーにつくWirelessマーク

こういったプレイヤーは無線勢として嫌厭される傾向にあります。が、マークが付いているので無線であることを承諾してマッチング承認ができます。

Wirelessマーク回避

しかし、経路に無線通信を含ませつつ、このWirelessマークを回避する方法があります。結局、このWirelessマークはPS4のOS側で判断しているにすぎないのでPS4がLANケーブルで接続されていれば回避できてしまうのです。具体的には

などがあげられると思います。まぁ各家庭事情はあるんでしょうが、公式が「有線LANを使用しての対戦を推奨」としている以上、非推奨の通信環境でプレイしていることを自覚してほしいなと思いますね。

で、後者については最早こちらで判断することは不可能ですが、前者のモバイル回線を使用しているプレイヤーは判断可能です。今回はそういったプレイヤーに対して、こちらができること・やり方を記載していきたいと思います。

モバイル回線でゲームをプレイすることについて

携帯電話事業者が「工事いらずでインターネット回線」みたいなことを言ってモバイル回線を売りつけているわけですし、PS4とは有線LAN接続しているので「有線LANだが?」みたいな感覚になってしまうのはまぁわからなくもないんですが…(そして実際クソ混みあっている共有回線よりは快適にプレイできてしまう事実もあり…)。

やること

導入を長く書きすぎてしまいましたが、こういったプレイヤーはパケットフィルタ機能付きのルーターを使用すれば対策可能です。

NEC 無線ルータ PA-WG1200HS4-G86

NEC 無線ルータ PA-WG1200HS4-G86

  • 発売日: 2020/10/18
  • メディア: Personal Computers

上記はSo-net の v6プラス に加入すると実質無料でレンタルできるルーターですが、IPパケットフィルタ機能を使用できます。

IPパケットフィルタリング|Aterm®WG1200HS4 ユーザーズマニュアル

そして、遮断対象のIPアドレス

Web技術情報 | SoftBank スマートフォン サービス開発支援サイト | ソフトバンク

などから判断すればよさそうです。

OpenWRTでやる

ルーターでパケットフィルタしてハイ終わり、でもいいんですが、おおもとでパケットを遮断してしまうとモバイル回線で提供されているサービス(あるのか?)や、モバイル回線からの自宅サーバーへのアクセスも遮断されてしまうのでPS4に入ってくるパケットだけ遮断します。

PS4IPアドレス固定もルーターに設定するのも面倒だったのでこういったデバイスを作ってみました。今はシリアル通信と給電をArduino UNOのボードを通して行っていますが、幸いPS4にはUSBポートが付いていますので、本番はそちらにRaspberry Piを直結して起動するのかなと思います。

f:id:ohayoyogi:20210321142847p:plain
OpenWRT on Raspberry Pi

Raspberry Pi用のOpenWRTイメージは下記からダウンロードできます。今回は Raspbbery Pi Model B を使用したので openwrt-19.07.7-brcm2708-bcm2708-rpi-ext4-factory をダウンロードし、sdカードに焼きました。

f:id:ohayoyogi:20210318193722p:plain
OpenWRT ダウンロード

f:id:ohayoyogi:20210321150231j:plain
クラス4ェ・・・

例のごとくArduino UNO(のボード)を使用したシリアル通信でいきます。

f:id:ohayoyogi:20210318200818p:plain
入れた

ELECOM EDC-GUA3-B

Raspberry Pi には LANポート(NIC) が1つしかないので、USBで増設します。今回はELECOM EDC-GUA3-B を使用します。USB2.0 にこれを挿すのは確実にオーバースペックですが余ってるのが転がってたコレしかなかったので・・・

f:id:ohayoyogi:20210321150302j:plain
ELECOM EDC-GUA3-B

ドライバのインストール

OpenWRTはRaspberry Pi OSやその他ディストロとは異なり、極力イメージサイズを小さくするためにドライバなどはかなり削られています。

よって 今回使用するELECOM EDC-GUA3-B は多くのLinuxOSで挿すだけで使えるそうですが、OpenWRTでは別途ドライバが必要になります。当該デバイスで必要なドライバを含むパッケージは kmod-usb-net-asix-ax88179 ですが、依存関係から以下の4つをインストールする必要がありました。

  • kmod-libphy
  • kmod-mii
  • kmod-usb-net
  • kmod-usb-net-asix-ax88179

Raspberry Piはデフォでeth0(オンボードのインタフェース)はLANになってますので、設定なしにはRaspberry Pi自身がインターネットに接続することはできません。よって eth0 に接続したパソコンに ipk ファイルをダウンロードして、Raspberry Pi にscp で転送してからインストールするといいと思います。

opkg install <パッケージ.ipk>

各パッケージは下記リンクからダウンロードできます。

Index of /releases/19.07.7/targets/brcm2708/bcm2708/kmods/

interfaceの設定

そしてこのように、片方を static な IP アドレス(+DHCPサーバー)、片方を DHCP のクライアントとすることで、接続するだけで通信できるようになります。

f:id:ohayoyogi:20210321150927p:plain
設定

このままだとOpenWRTの設定画面に入れるのはPS4のブラウザからのみになってしまうので、Firewallの設定でWANからのInputを許可します。(閉じた家庭内LAN以外での設定は厳禁)

f:id:ohayoyogi:20210321151400p:plain
WANからのInputを許可

見てみる

OpenWRTの管理画面から [Status] - [Realtime Graphs] - [Connections] とたどると生きているコネクションのリストを確認することができます。

f:id:ohayoyogi:20210321152709p:plain
Realtime Graph の Connections

ゲームのプレイ中は 9305 ポートで通信をやり取りしているようですね。

さいごに

ここまでで、簡単にパケットフィルタできる環境ができることが分かったと思います。あとはもうパケットフィルタするだけなので手順はここには書きません。実際にping値などを計測してアクティブに遮断するかしないか判断してみるのも面白いかもしれませんね。

最後に、オンライン対戦のゲームは良くも悪くもオープンな世界なのでいろんなプレイヤーがいます。切断厨、放置プレイヤーや、故意ではないにしろ通信相性が悪いプレイヤーなど、快適なプレイのためにはある程度自衛が要求されるのが現状としてあると思います。ただ、行き過ぎた自衛(強いプレイヤーとのマッチングを拒否するなど)は逆に問題になりますので良識をもって行う必要があるかと思います。(本記事はそういった行為を推奨するものではありません。)

【WireGuard】VPNで自宅サーバーを公開する

最近マイクラを始めまして。もう周回遅れどころの騒ぎではないレベルで遅れているのはわかっているんですが、
なるほど自鯖を立てるのは楽しいなぁというところまで来ましたのでちょっとまとめてみます。

想定読者

以下のような人にはまぁ役に立つのかなと思います。

  • サーバーは公開したいがお金はかけたくない!
  • サーバーは公開したいが自宅のIPは公開したくない!
  • サーバーは公開したいがそもそもグローバルIPが降ってこない!

やること

VPS上にVPNサーバーを立てて、VPNにつないだ自宅サーバーに対してTCPなりUDPなりをフォワーディングします。

今回は題材として、VPNサーバーとしてWireGuardを使用し、統合版マイクラのサーバーである Bedrock Dedicated Server (以下、BDS)を自宅サーバー(Ubuntu 18.04)で動かして、自宅IPを公開せずに公開する、ということをやります。

ちなみに BDS の導入は本筋から外れるので先に書いておきますが、ここ からダウンロードしたのを使います。

とりあえず、BDSを動かすサーバーとして Core i5-2520M と 8GB RAMを積んだ ThinkPad X220 を、マインクラフト統合版のクライアントとしてKindle Fire HD10 を使ってます。(i5-2520Mって単体で売ってるんだ・・・)

Fire HD 10 タブレット ブラック (10インチHDディスプレイ) 32GB

Fire HD 10 タブレット ブラック (10インチHDディスプレイ) 32GB

  • 発売日: 2019/10/30
  • メディア: エレクトロニクス

まぁこんな構成ですが、SwitchとPS4スマホでワイワイガヤガヤとマルチできています。

パターン1: 自宅サーバーを直接VPNでつなぐ

一番簡単なパターンです。自宅サーバー自体をVPNのクライアントとし、VPSで受けた通信を自宅サーバー側に流してあげます。

f:id:ohayoyogi:20210318145711p:plain
イメージ

今回は、設定にあたり、VPNにおいてVPSのIPを 10.0.0.1 とし、自宅サーバーのIPを10.0.3.1 を割り当てることにしました。

VPNの設定:VPS側の設定

まずは、各クライアントとつなぐ中心になるVPS(ここではVPNサーバーと呼びます)の設定をします。

wireguard の導入

秘密鍵/公開鍵の生成については他のサイトを参考にしてください。

sudo apt-get install wireguard
sudo vim /etc/wireguard/wg0.conf
[Interface]
PrivateKey = <サーバーの秘密鍵>
Address = 10.0.0.1/16
ListenPort = <wireguard用に開くport>

[Peer]
# Peer 1
PublicKey = <クライアントの公開鍵>
AllowedIPs = 10.0.3.0/24
sudo wg-quick up wg0

こんな感じでしょうか。 [Peer] 以降の行をコピペすると接続するクライアント設定を増やせます。サイトによってはPostUp, PostDownを設定しているところもあるんですが、ufwで別途設定するので省略したいと思います。

ufw の設定

wireguard 用のポートを開きます。

ufw allow <wireguard用に開くport>/udp
ufw reload

VPNの設定:自宅サーバー側の設定

同様に自宅サーバー側にもwireguardを導入していきます。

wireguard の導入

sudo apt-get install wireguard

サーバーもクライアントもこれでいけるの楽っすね。

sudo vim /etc/wireguard/wg0.conf
[Interface]
PrivateKey = <クライアントの秘密鍵>
Address = 10.0.3.1/32

[Peer]
PublicKey = <サーバーの公開鍵>
Endpoint = <サーバーのIP>:<wireguard用に開くport>
AllowedIPs = 10.0.0.0/16
sudo wg-quick up wg0

サーバー公開の設定

ここまでで、VPNは接続できたと思います。(互いにping飛ばしたり、ip addr で確認してください)。続いて、このVPNを通して自宅サーバーにリクエストをフォワーディングする設定をしてサーバーを外から到達できるようにしていきます。

ファイアウォールに穴をあける

VPS では当然 BDSで使用するポートを開かなければならないので

ufw allow 19132/udp
ufw reload

として、UDP用に19132ポートを開けます(公開するサーバーに合わせて適宜読み替えてください)。

iptables 設定の記入

続いて、iptables の設定で自宅サーバーへフォワーディングします。ufw を使って設定をするので /etc/ufw/before.rules に記入します。

# NAT
*nat
-F
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
# minecraft
-A PREROUTING -i eth0 -p udp --dport 19132 -j DNAT --to-destination 10.0.3.1:19132
-A POSTROUTING -o wg0 -p udp --dport 19132 -d 10.0.3.1 -j MASQUERADE

COMMIT

# minecraft の行から下がミソです。DNAT ってなかなか聞き慣れないかもしれませんが、「eth0宛の--dportに指定したポートに来たパケットは --to-destinationに転送する」設定と考えてください。民生用ルーターの「ポートマッピング」と同じです。(と、考えてよいのかな?)

次に MASQUERADE ですが、正しくはNAPTで、ルーターのNATといえばこれって感じのアレです(どれ)。
例えば自宅のルーターには割り振られるグローバルIPは1つですが、複数のプライベートIPをぶら下げて通信することができます。それを実現しているのがMASQUERADEで、ルーターを出るときに使用したポートと送信元のプライベートIPアドレスを記録しておいて、ルーターにレスポンスが返ってきた時にそのプライベートIPにレスポンスを流してあげる、みたいなことをしているのです。

今回それがなぜ必要か?というと今回はVPNサーバーが「BDSにスマホからリクエストがきたよ!」といってフォワーディングしてくるパケットには

送信先: 10.0.3.1:19132
送信元:<スマホのIP>:<スマホのポート>

といった情報が記録されています。これを受けとった自宅サーバーはレスポンスを

送信元: 10.0.3.1:19132
送信先: <スマホのIP>:<スマホのポート>

として返します。この時の「送信先: <スマホのIP>」となってしまうのがミソで、普通にルーティングされてしまうと自宅用ルーターでNAPTされたパケットがスマホに飛んでいってしまい「VPSサーバーにリクエストしたはずが全然知らんIPから返信来たがな」となって正しく受け取られません(はず。確かめてない)

パターン2: ルーターVPNクライアントさせる

OpenWRTにwireguard導入してサブネットまるごとVPNみたいなのやろうとも思ったんですが、力尽きたのでここまで。

パターン3: VPNサーバーにnginxを導入しリバプロさせる

iptables でやっているところを nginx でリバプロさせます。どのレイヤでフォワーディングするか、というところが違うところです。

終わりに

力尽きてしまいましたが、目的は達せられたのでこれにて終わります。
リクエストがあれば書きます・・・書きたい・・・ 。

同様な内容を試みているサイトを見かけたんですが「iptablesではよくわからないけどうまくいかなかったので nginxで!」みたいなサイトが多く、もやもやしたので頑張ってiptablesでやってみました。

追記

IPv6にも対応した。けど思ったよりしんどかったのでメモ。

IPv4のプライベートIPに対応する概念として、IPv6には ユニークローカルアドレス というものがあるらしいです。ユニークローカルアドレスに割り当てられている領域は fd00::/8 で、めっちゃ広いなーと思って適当に fd00:3::1/32 とかを適当に自宅サーバーにあてがってみたんですが、pingすら通りませんでした。

ちゃんと調べてみると、以下Wikipediaより引用

ブロック fd00::/8 は、40ビットのランダムなビット列を後につけて/48のプリフィックスとして使用することと定められている。この結果、この範囲のプリフィックスは fdxx:xxxx:xxxx:: という形式になる。RFC 4193 では、高精度の乱数生成の方法が利用できない場合であっても、最小限度の品質を保ってランダムなビット列を得られる方法を、ユーザに提案している。

といった感じで、 /48プリフィックスとして使用すること、とあり、fd に続いて10文字ものランダムな列を入れなければならないそうです。なるべく短いほうがいいぜーと思ってやったんですが、こんな罠があったとは・・・(プレフィックス /64 とかのIPをあてたらいけました)。

【ダミーバッテリー】EOS Kiss M で DCカプラ を使用してタイムラプス動画を撮影する

はじめに

EOS Kiss M には タイムラプス動画を撮影できる機能があります。

キヤノン:EOS Kiss M|動画撮影

最大7時間30分間の動画撮影

タイムラプス撮影のモードで「カスタム」を選び、

  • 「撮影間隔/回数」 で 「30 秒/ 900回」 に設定

をすることで全長30秒のタイムラプス動画を撮影することができます。

これはつまり、連続撮影した動画から 30秒間隔 で 900フレーム取り出すのと同じ意味なので、 「900 * 30 秒(0.5分) = 7時間30分間」の変化を30秒に縮めて記録することになります。 (なんか同じことを言ってる気がするが・・・)

撮影してみた

撮影してみるとこんな感じです。動画をご覧になった方はわかると思いますが、16秒間の動画になっていることがわかります。

バッテリーがもたない!!

実は上記の動画は撮影中に放置していたら気づいたときに電源が切れて動画撮影も終了していました。それもそのはず。

キヤノン:EOS Kiss M|仕様

公式サイトによれば、

常温(23℃)約2時間10分
(フル充電のバッテリーパックLP-E12使用時、Full HD29.97p撮影時)

とあり、スペック上は 4秒ぐらいの動画しか撮影できないことになります。これが 16秒撮影できたのは撮影中画面オフしていた効果が大きそうです。

EOS Kiss M はUSB給電できない

バッテリーが切れてしまうので、充電しながら使いたいなと思うのは自然な流れだと思いますが、なんと EOS Kiss Mは microUSB を使った給電には対応していません

しかもバッテリーの蓋が閉まるときに引っ掛ける機構があって、そこが引っかかっていないと電源が入らない仕様になっているので(蓋を開けると電源が切れるのはそのため)、半ばあきらめていました。

ダミーバッテリーを使ってみよう

というわけで、あきらめかけていたんですが、ひょんなことから「ダミーバッテリー」で検索することを思いつき、検索してみたところ・・・

こんなものがあることが判明!早速1つ目のを買ってみました。

ダミーバッテリー着弾

というわけで着弾したダミーバッテリーです。

f:id:ohayoyogi:20210315194457j:plain
中国から来た

ザ・中国から来た!みたいな見た目をしていますが、中国から来ました。

f:id:ohayoyogi:20210315194533j:plain
簡易

中身はこんな感じで、本体に入れるダミーバッテリーと、USB ACアダプタに繋がるケーブルが入っています。

f:id:ohayoyogi:20210315195307j:plain
DC COUPLER DR-E12

f:id:ohayoyogi:20210315200305j:plain
USBバッテリーと繋いだ図

それをこんな感じでUSBポートと繋ぎます。

f:id:ohayoyogi:20210315213819j:plain
自由雲台とも干渉しない!

そして何よりも嬉しいのは雲台に装着して使った時に差込口と干渉しないことです。雲台をつけてしまうと蓋が開かなくなるのでバッテリーが切れたら終わり、といった感じでしたが、これなら無限に電源供給できますし、なによりUSBでパソコンに接続してWebカメラとして使うときにバッテリーの制約を受けなくなります。

(というかそもそもこんなところに差込口が開いてることを知らなかった!)

効果

というわけで撮影しなおしたのがコチラ。

こんな感じでバッチリ30秒フルに撮影できるようになりました! このカメラ買ってだいぶ経ちますが、マストバイアイテムでした!

使用した機器

今回使用した機器はこんな感じです。

ANKER PowerCore 10000

容量 36.3 Wh もある、バッテリーです。PDにも対応しており、スマホ充電に主に使っていました。純正バッテリー LP-E12 が 7.2 * 0.875 = 6.3Wh なのに対し、実に6倍の容量です笑

Canon バッテリーパック LP-E12

Canon バッテリーパック LP-E12

  • 発売日: 2012/09/30
  • メディア: Camera

実際、タイムラプス動画を撮影していても4段階のメモリが1つも減らないという暴力っぷり。今はPowerCore 10000の後継モデルが出てるみたいです↓

SLIK 卓上三脚 ミニ3 BH

タイムラプス動画撮影のためカメラを固定するのに使用した三脚です。雲台にボールを使用した自由雲台で自由度が高いのでいろんなアングルでの撮影ができます。またコンパクトなのがいい感じで、PCにつなぐWebカメラとして使用するときに重宝します。

参考

参考までに、消費電力を計測してみました。

f:id:ohayoyogi:20210315221731j:plain

使ったのはCheerioのCHE-315というACアダプタ。5Vで3A出力ができる優れものです。

f:id:ohayoyogi:20210315221933j:plain

で、ワットチェッカー読みでオートフォーカス(レンズを動かしている)時に 7.2W という結果になりました。このACアダプタがどれぐらいロスするのかはわかりませんが、この消費電力では5V 1Aとかの弱小ACアダプタでは賄えなさそうですね。(実際ElecomのショボいACアダプタでは起動することすらできませんでした。)

終わりに

というわけで、今回はダミーバッテリーを購入してみた、という記事でした。

互換品が気持ち悪いので、公式がちゃんと出してくれてれば公式の買ったのになー、、、と思い調べてみましたが、「DCカプラー DR-E12」という商品名で売られているらしいです。

キヤノン:アクセサリー詳細

届いた商品にも「DR-E12 DC COUPLER」と書いてあってハテ・・・?と思いましたが、そういうことだったんですね。ダミーバッテリーで検索しても出てこないわけだ・・・

Canon DCカプラー DR-E12

Canon DCカプラー DR-E12

  • 発売日: 2012/09/30
  • メディア: Camera

骨伝導ヘッドセット Aftershokz OPENMOVE を購入しました

最近はテレワークだなんだということで、仕事でもプライベートでも音声通話ツールを使うことが増えてきました。

私は基本的にマイク付きのヘッドホンを使って通話に参加しているんですが、ヘッドホンの遮音性の高さから自分の声が聞こえづらいこともあり、声がデカくなる問題がありました。

賃貸マンションに住んでいるんですが、隣人に迷惑が掛かっていないかなど、結構気になります。(冬場なら窓閉めてますが、夏とか窓全開ですしトラブル回避のためにも避けたいところです。)

骨伝導ヘッドセット Aftershokz OPENMOVE

というわけで購入したのが、骨伝導ヘッドセットです。

骨伝導」っていうワード、昔のガラケーで踏切の近くで骨伝導スピーカーで通話するというCMが印象的ですが、それ以来全然耳にすることがなかった気がするんですが、最近では「ながら聞き」できるデバイスということで骨伝導ヘッドセット/イヤホンという形でこの技術は使われているようです。

OPENMOVEaftershokz.jp

スペックなどの内容は公式サイトに譲るとして、実際の使用感などについて書いてみたいと思います。

f:id:ohayoyogi:20210307212513j:plain
届いた!

買ってよかったこと

まずは良かった点

USB type-C

まぁイマドキデバイスって感じですね。公式スペックからもわかることですが、USB type-Cで充電できます。

マルチペアリング

そしてメインにペアリングした機器のほかにもう一台ペアリングすることができます。これをすると、パソコンとスマートフォンにつなぐ、みたいなことができます。が同時に使用できるわけはなく、排他です(パソコンと繋がってるいるとスマホとの接続は切断されます)。

ちなみに私はいまだにどうやって繋ぐ機器を選ぶのかわかっていません。スマホからわざわざBluetoothのメニュー選んで接続解除してます・・・(どなたか方法ご存じでしたら教えていただきたい)

周囲の音が聞こえる

内容物はこんな感じで、オプション品として耳栓がわざわざついています。

f:id:ohayoyogi:20210307212606j:plain
内容物

取説によれば、「耳を塞いでも安全な環境では、耳栓を装着した状態でヘッドホンを使用することもできます」とあります。

まぁ要は耳栓をしなければいけないぐらい周囲の音がガンガン聞こえるということです。

微妙なところ

買ったけど微妙なところを書きます

充電しながら使用することができない

公証連続6時間使用することができますが、充電しようとプラグを挿すと切断されてしまうようです。音声が再生されません。

まぁOPENMOVEがジョギングなど外で使うことを想定したデバイスであればその仕様も頷けますね。

つけてて頭が痛くなる

骨伝導というのはまぁ、原理的には高速に振動するものを頭に付けているわけなので、長く装着しているとイヤホンとはまた違った疲れ方をします。あとは単純に締め付けが痛い

周囲の音をめっちゃ拾うマイク

環境音を拾いまくります。これはちょっとボイチャ用には欠点で、周囲でゴソゴソガサガガしていると通話相手にめっちゃ聞こえてしまうのではないか?という懸念があります。

まぁこれもOPENMOVEが外で使うことを想定したデバイスということでしょうか。あんまり酷いようならマイクを別途買おうかなぁとも思います。

終わりに

というわけで今回は骨伝導ヘッドセットについて書いてみました。初めての骨伝導なので付け方/使い方がこれであっているのかなど不安もちょっとありますが、価格もお手頃ですし、試せてよかったなぁ~~って感じです。

ゆくゆくはこれを使ってジョギングなどもしてみたいものです。

ではでは、みなさんもよいテレワークライフを