VPN等で入れない先に納入したネットワーク機器を死活監視する (格安PC+PowerShell編)

Pingを飛ばすPowerShellのイメージ
こんにちは、システムデザイナーの平田です。 画像はAIが考えた「PingWi-Fi APに飛ばすPowerShell」です。PowerShell厳ついですね。パワー感じます。

閑話休題。昨今、5千円程度だったミニコンピュータRaspberry Pi半導体不足のあおりを受け、入手困難であったり、価格が高騰していたりします。

高い・・・

最近1万ちょっとでWindowsPC買えてしまう。特にCeleron N4100番台は以前のATOMベースのCeleronに比べて、大幅に実用的です。

それなら、死活監視+遠隔メンテナンス用ということで、TeamViewerなりをインストールしたPC*1を現地設置しておくのはアリなんですよね。VPN用に穴を開ける必要もありませんし。*2

特に以下のようなメッシュWi-Fiで構成されたネットワークは、設置後しばらくの間、通信品質の確認が肝要です。

blog.hapicom.jp

という訳で、PowerShellで以下のようなものを作っていきます。

有料部分では実際のコードがご覧いただけます(商用利用可)

ping死活監視

  • タスクスケジューラーで起動時に常駐的に実行
  • 指定した宛先に、5秒ごとに5回pingを飛ばす。これを1セットとする
  • 5セット到達しなければ、ログファイルに断検知を記録し、指定した宛先にメールを送信
  • 断検知後、5セット回復すれば、ログファイルに復帰検知を記録し、指定した宛先にメールを送信
  • ライブラリなどの依存なく、OSの標準機能のみで行いたい。最近メール送信も可能なPowerShellで作る

ExPingのログローテーション

  • ExPingは指定フォルダにpingのログを貯めることができます
  • pingの死活だけでなく、応答速度(ms)を一定期間記録することで、無線区間の品質の測定に
  • ファイル名は固定。"EX<西暦下2桁><月><日>.LOG" となります。(西暦処理の一手間あり)
  • 1日のログが数MB程度発生→bzip2圧縮で数百KBに。前日までのログはbzip2圧縮
  • 前月までのログは "YYYY-mm" という名のフォルダへ移動
  • 13ヶ月以上前のログは、フォルダごと消去
  • こちらもPowerShellはbzip2圧縮に標準で対応しているので、特に追加で何かのインストール不要。

*1:無料版などでなく有償版の簡易アクセスなどを使うなど、乗っ取りやボット化しない為のセキュリティ対策を講じましょう

*2:お客さま了承は得ましょう

この続きを読むには
購入して全文を読む

年中無休の飲食店に始業前の2時間でWi-Fiを敷設する #メッシュWi-Fi編

レストランのメッシュWi-Fi (イメージ)

こんにちは。既に年末進行の皆様もいらっしゃることでしょう。 ご多分に漏れず、私もその一人です。システムデザイナーの平田です。

システムデザイナーとは何ぞやと自問自答するほど、インフラ系、ネットワーク系の案件が最近多いです。今回はその中から、「メッシュWi-Fi」の事例を一つ。

昨今、スマホやPCだけでなく、なんでもかんでもWi-Fiです。 レストランでオーダーをポチポチ打つ、所謂「オーダー端末」などもWi-Fi化しています。

そうなると、開店当初には全く想定していなかった "全席Wi-Fiでカバー"といったニーズが発生してきます。

通信量は多くないのですが、確実に全エリアをカバーしようとすると、アクセスポイントを1~2台置いた程度では難しいケースも散見されます。

このような時、通常はこうします。

有線LANで構成されたWi-Fi APクラスタ

アクセスポイントの間をLANで接続し、電源の供給もLAN経由で行う構成です。

大体、天井裏に来ている100V線は照明のラインで、常時給電されていないことや、アクセスポイントの再起動(電源の抜き差し)が大元のPoEハブでのLANケーブルの抜き差しで可能であることから、このような構成を採ります。

しかし、今回のミッションはこんなかんじ。

  • 店舗は年中無休
  • 遅い日は朝5時まで営業
  • 開店前の朝9時~朝11時の2時間でサクッと工事

ただ、年中無休の店舗で、開店前の2時間ぐらいしか工事時間が取れない店舗があり、今回 "メッシュWi-Fi" と呼ばれる、アクセスポイント間の接続(バックホール)を無線で接続する構成を採りました。

無線で構成されたWi-Fi APクラスタ

メッシュWi-Fiと従来の中継機の違い

一時、Wi-Fiの「中継機」と呼ばれる機器が出ていました。しかし、以下のデメリットからほぼ利用することはありませんでした。

  • 中継機自体が、親機に端末としてぶら下がる為通信効率が悪い
  • 複数のSSIDを中継できない(ゲスト用, 業務用など)
  • 親機の設定を変更した時、中継機の設定も変更する必要がある
  • 適切なローミングが行われず、場所によっては中継機でなく親機の弱いWi-Fiにつながってしまう
  • 子機にさらに子機を無線でぶら下げる「多段接続」ができない

特に最後の多段接続については致命的で、元々エリアを広げる為のものなのですが、親機+子機1台ぐらいしか接続できません。 一方メッシュWi-Fiは以下のようなメリットがあります。

  • 子機のバックホールは端末とは別の専用の無線で接続され、通信効率が良い
  • バックホールが分離されているので、複数のSSIDを中継可能
  • 全ての機器が統合され動作するので、設定変更も親機のみで子機に伝搬。ローミング対応。
  • 子機間も連携し、親機以外の子機経由でも最適な通信経路でバックホール接続される(多段接続対応)
  • 一応、規格化(EashMesh)されており、異機種、異メーカー間でも使用可能 *1
  • バックホールは無線LANでも有線LANでも可能

そうです、業務用のクラスターAP(Aruba IAP)などは元々こんなでしたよね。(でした) SOHO/家庭用に降りてきたのが"メッシュWi-Fi"と呼ばれて、家電量販店の店頭に並んでいる感じです。

さて、ここで実際の施工の様子を見てみましょう。

実際の施工の様子

メッシュWi-Fiはコンセントから電源を取る必要があります。 また、店舗での設置の為、床に転がしておくわけにいきません。壁面に取り付けます。

今回は、下記の機器を選定しました。

  • 付属電源コードが長い(2m)
  • ACアダプタがコンパクトで端子一体型
  • 壁面に取り付ける為のマウンタが入手可能
  • 9台までのメッシュ構成が可能。多段(2段)まで接続可能

全体の構成は次の通りです。

<全体構成>

メッシュAP子機(1台目)
メッシュAP子機(2台目)

ペアリングは事前に親機と有線LANで挿して起動するだけです。 実際のとりつけは、電源に挿して壁に取り付けるだけですね。

親機ですが、このような構成を採る場合、通信品質を担保する重要な役割になりますので 回線が来ている場所から少し、ホール側へLANを延長して出してやりました。

メッシュAP親機(マスター)

通信品質

一番APから遠い場所での通信速度はこのような形でした。

速度測定(一番親機から遠い場所, 子機経由)

有線LANを敷設するとなると、敷設だけで2-3時間は見ておいた方が良いでしょう。 朝5時~11時の間でのお客さま立ち会いか、お店の営業時間を変更してとなりますので 投資対効果として、メッシュWi-Fiはその真価を充分に発揮したケースになりました。

というか、他の選択肢がなかなか無いケースでした。

さらに品質を高める為に

店舗内に遠隔操作(TeamViewer)で操作可能なWindowsPCを設置し、pingにより品質監視を行います。

・一定時間pingが切れた場合、また復帰した場合メールで通知 *2 ・施工後、数ヶ月pingで常時監視し、通信品質をチェック *3

これらの方法については以下。

blog.hapicom.jp

また、子機側でバックホールを2.4Ghz/5Ghzの切り替えが可能である為、上記の監視データを元にチューニングしていきます。

総括

従来、このようなケースは早朝や深夜工事として、お客さまや施工班に大きな負担のあるケースでした。 ゲストの方向けのWi-Fiなど、通信量の多いケースには向きませんが、一旦メッシュWi-Fiバックホールを無線)で展開し、支障があればバックホールも有線化できる形でひとまず導入していただける形を採れるメリットは大きいです。

なお、当社ではビルやモール、ホテルや工場などの全館Wi-Fi構築の実績があり、また、大きな規模だけでなく、フランチャイズやチェーン店様などで、Wi-Fiを一元的に管理、運用する多拠点への一括導入も手掛けております。

ネットワークでお困りの方はぜひお声掛けいただけましたらと。

*1:メッシュを構成可能な台数や、多段接続の段数は製品により大きく異なります。設計の段階でマニュアル等で充分に確認が必要です

*2:AX1800はメッシュ子機側のIPアドレスDHCP取得しかできません。ルータ等で固定払出が必要です

*3:子機の電波強度も子機本体LED表示でのみの確認になります。従い、今回pingによる品質監視を実施します

Googleフォームに回答があったときにサンキューメールを自動返信する無料アドオンを作りました

こんにちは、ハッピーコンピューターの白川です。

Googleフォーム、無料でお問い合わせとか参加者の把握とかに使えて便利ですよね。

ところで、Googleフォームで回答を入力してくれた人に自動で確認とお礼のメール(いわゆるサンキューメールというやつ)を送るようにしたいけど、デフォルトでは「回答のコピーを回答者に送信」しかできなくて、もどかしい気持ちになったことはありませんか?

ハッピーコンピューターでも時々そのような場面に遭遇することがあり、かつてはGoogle Apps Script (GAS) を使ってJavaScriptのコードを書いてサンキューメールを実装していた時期もありましたが、顧客側で文面を自由に変えられないなど運用面でいろいろと面倒な部分がありました。

ということで、メール通知機能をGoogleフォームに付加するだけのシンプルなアドオンを作って公開しました。

workspace.google.com

実際にアドオンとして公開したのは何年か前なのですが、知らない間に利用者が2万人ぐらいになっていてアドオンに関するお問い合わせも増えてきたので、このアドオンの特徴やインストール方法、使い方について本記事で紹介します。

メール通知アドオンの特徴

以下のような特徴があります。シンプルではありますが必要十分な機能は有していると思います。

  • 回答通知メール: 回答通知機能をオンにすると、回答の登録があるたびにメールで通知されます。
  • 自動返信メール: 自動返信機能をオンにすると、回答者にサンキューメールを自動で送信します。
  • 件名や本文を編集可能: それぞれのメールの件名や本文を自由に記述できます。
  • 文中に変数を利用可能: 回答結果やインクリメンタルIDなど、回答ごとに変化する要素を二重波括弧 {{ }} で囲うことで文中に埋め込めます。
  • 一切の制約なし: 1日の送信数上限が極端に少なかったり文末に広告を付加されたりすることはありません。

メール通知アドオンのインストール方法

Googleフォームの編集画面(どのフォームでも構いません)の右上にある設定を開いて「アドオンを取得」をクリックします。

Google Workspace Marketplaceの画面が開きますので「メール通知」で検索し、アドオンを選択します。

「インストール」をクリックしてアドオンをインストールします。

「続行」をクリックします。

Googleログインのダイアログ(同意画面)が開きますので、アドオンを使用したいアカウントを選択します。もしここでエラーになる場合はこちらをご覧ください。

回答があったときにメールを自動送信するための権限を許可します。

許可ボタンを押すとインストールが行われます。しばらくすると下記のようにインストールが完了します。

メール通知アドオンの使い方

メール通知アドオンには回答通知(回答があったことを特定の宛先に知らせる機能)と自動返信(回答者に確認やお礼のメールを送る機能)の2種類のメールを送る機能がありますが、以下では自動返信について説明します。

自動返信の場合は回答者のメールアドレスが必要ですので、フォームの設定でメールアドレスを収集するよう設定しておきます。Googleアカウントを持っていない人でも回答できるよう「回答者からの入力」を選択します。

その後、上部のアドオン設定を開き、「メール通知」をクリックします。

「通知設定」をクリックします。

すると、右下のほうに通知設定のパネルが表示されます。もしパネル内に設定が現れずエラーになる場合はこちらをご覧ください。

自動返信にチェックを入れ、件名や本文を作成します。テキストには以下の変数が使用可能です(最初の二重波括弧 {{ を入力すると入力補完で候補が出てきます)。

  • {{質問名}}→この質問に対する回答を表示
  • {{[全ての質問と回答]}}→質問名と回答の組を1行ずつ全て表示
  • {{[メールアドレス]}}→回答者のメールアドレスを表示
  • {{[インクリメンタルID]}}→回答が送信されるごとに1ずつ増加する数字を表示

件名と本文を設定したら「設定を保存」をクリックします。「保存しました」と表示されれば設定完了です。

試しにフォームに回答してみると、以下のようなメールが回答者に送られます。

設定保存時の注意事項

回答通知や自動返信はフォームではなくアカウントごとに設定されます。

そのため、一つのフォームを複数のアカウントで共同編集する場合は、代表となるGoogleアカウント(これが送信元メールアドレスとなります)でのみ送信設定を保存するようにしてください。

もし他のアカウントで設定を保存した場合、それぞれのアカウントを送信元として複数のメールが送信されてしまいます。

うっかり別のアカウントで設定を保存してしまった場合は、回答通知や自動返信のチェックを外した状態で再度設定を保存してから、代表となるアカウントで設定を保存するようにしてください。

インストールや通知設定時にエラーになる場合

Googleのアドオンは、複数のアカウントでログインしているとエラーが発生するという不具合があり、2017年にGoogle Issue Trackerで不具合が報告されてから6年ほど経過した2023年現在においても問題が解決されておらず、アドオン開発者の間ではGoogleの未解決問題として認知されています。

細かい経緯はさておき、この問題をとりあえず回避する方法としては以下の方法があります。

  • 一度全てのGoogleアカウントからログアウトし、アドオンを使いたいアカウントで最初にログインする(複数アカウントでログインしていても、最初にログインしたアカウントではエラーが発生しないようです)
  • シークレットウインドウ(プライベートウインドウ)を開き、アドオンを使いたいアカウントでログインする
  • アドオンを操作するとき用に別のウェブブラウザを使う

自動でメールが送信されない場合

うっかり権限を外してしまうなど何らかの理由によりアドオンに権限が付与されていない状態になると、回答時の自動メール送信が行われません。

きちんと権限が付与されているかどうか確認したい場合、Googleアカウントのサードパーティ製のアプリとサービスにアクセスすることで、「メール通知」に「ユーザー本人に代わってのメールの送信」を含むいくつかの権限をアドオンに付与できているか確認できます。

管理者によるインストールのバグについて

有料のGoogle Workspaceをご利用の方は、アドオンのインストールページで「管理者によるインストール」と「個別インストール」の二種類が表示されることがありますが、必ず個別インストールを行ってください。

管理者によるインストールを行うと、自動メール送信に必要な権限の付与が行われません(サードパーティ製のアプリとサービスに「メール通知」がないにも関わらず同意画面が表示されないバグ)。

個別インストールを行い、同意画面でアプリに権限を付与するようお願いします。

もし間違って管理者によるインストールを行ってしまった場合、Google管理コンソールに管理者アカウントでログインし、ドメインのインストール済みのアプリから「メール通知」を削除してから、改めて個別インストールを行ってください。

その他

  • メール通知アドオン 公式ページ: 利用規約やプライバシーポリシーなどを記載しています。

  • Textcomplete: テキストの変数部分の入力補完に利用しています。文面を作るときに変数部分を直書きさせるのは非エンジニアにはハードルが高いため、このライブラリがあって助かっています。