引きこもりによる自宅インフラ整備
この記事はTUT Advent Calendar 2024の20日目の記事です。
はじめに
お世話になっております、はっちゃんです。今年になってようやくバイトを始めたら、案外仕事ができたので「もしかして漏れって"しごでき"って奴なのではァ???」と調子に乗りながら豊橋技術科学大学でB2 3系の学生として日々を怠惰に過ごしています。休日はだいたいインターネッツでの活動にかまけており、無意味なツイートを生み出したり、初音ミクの素晴らしいイラストに涙を流したりしています。
さて、今回の記事ではそんな私の快適な引きこもりライフを支えるために構築された素敵なインフラシステムたちを特別に紹介しよう……紹介するだけなのでオチもまとめも無いです、すまんな(*^^*)
構成の概観
私が住んでいる部屋(宿舎ではなくアパートだお)は、居間の広さが6畳のワンルームで、1階。技科大と某大手コンビニが近いという立地の良さと家賃がまぁまぁ安いことからこの物件を選びました。公開記事なので詳しいことは言えませんが、まあ一人で住むには必要十分な部屋だと思ってます。
で、本題なのですが、私は家では基本的にパソコンばっかり使ってます。スマホなら充電器と寝てるよ。でも学マスとアークナイツやるときはスマホ…の代わりにiPadを開きます。iPadはいいぞ。買ってよかったものランキング2024 堂々の1位とさせてください
話が逸れましたね。さて、PCもiPadもスマンホホもインターネットに接続しなければまともな娯楽がありません。そして私はストレスなく娯楽を享受した↑ぁい!そういう思いから作られた通信環境がこちら。
通信系(ほんへ)
2023年の夏ごろから大学とは関係ないお勉強をしてある程度知識を得たので、自宅サーバーに手を染めて出してみたいな、なんて思い始めていました。まずは通信周りを業務用機器にリプレースしたかったので、手始めにこのアパートの通信方式の確認からしましょう。部屋のどっかにある情報コンセントを見れば大体分かります。
先日医師にVDSLと診断されました……
わかりました。俺の負けです。次引っ越すまで上限100Mbpsで戦ってやります。
それから契約プランの確認もしたところソフトバンク光(NTTコラボ)の1Gプラン、動的IPでPPPoE方式らしい。何言ってるか分かんないね。なんだよPPPoEって。ぽぽぽえー
材料
イカれたメンバーを紹介するぜ!
VDSLモデム
伝統的で貫禄のある電話線ジャックを窓口にインターネットに接続するのに必要。固定電話用のアナログ信号を、デジタル信号に変換します。室内まで新鮮な光ファイバが届いていればONUという終端装置を代わりに使います。ルーター NEC UNIVERGE IX2207
NAPTとか説明がめんどくさいので、ChatGPTにでも訊いてください。
網内の機器に自動でIPアドレスを配るDHCPサーバーはルーターに持たせてます。L2スイッチ AlliedTelesiss SH510-28GTX
複数の通信機器やぱそんここを束ねる機械。配下に接続されたパソコンなどの物理アドレスを見て通信の経路を決める機械です。IPアドレスを見てゴニョる上位存在がL3スイッチWi-Fiアクセスポイント Baffalo-C900、GLiNet GL-SFT1200
ルーターがイーサネット(有線接続)のみなので、Wi-Fiで通信するための電波塔が要ります。イマドキなWi-Fi 6E対応の無線LANルーターをブリッジモードにして流用しています。シリアルコンソールケーブル
ルーターやスイッチにさしてコマンドを投入するのに使います。無ければ無いでWebUIなりSSHすればいいLANケーブル
elec〇mとかのCAT 6Aかつ安いやつ。うちでは間違えて買ったCAT 7のケーブルも一部で使われています
これらの機材をなんかいい感じに組んで、実際にPCやスマホから有線および無線でインターネットに接続できるようにしましょう。
なんだかごちゃごちゃしていますが、実はみなさんも使っているであろう無線LANルーターを機能ごとに別々の装置に分けて再現しているだけです。まず無線LANルーターに含まれるルーターの部分(構文ではない)があって、無線の部分(構(ry)があって、おまけでLANポートがいっぱいある って感じです。NEC IX2207もAT-SH510-28GTXも賢い奴なのでもっと高度なこともやろうと思えばやれるんですが、如何せん需要とやる気がないもんでその高みに達することができていません。この構成で一般のご家庭とまったく異なる部分があるとすれば、VLANを切ってるとことかですかね。
VLAN
VLANとはVirtual LANのことで、ひとつのLANという大きな空間を仮想的にぶった斬って、隔絶された小さな部屋に分けることができる仕組みです。それぞれのVLANは接続されていない限り互いに干渉することがないので、わるいひとがアクセスポイントから一つのVLANに侵入しても他のVLANの中を見ることはできず被害を抑えることができます。
うちの環境ではBuffaloのルーターの本体にSSIDとパスワードがきちんと記載されており全然セキュアじゃないので、もうBuffaloしかいないVLAN(画像中のVALN2)を作成してゲスト用Wi-Fiとして来客の皆さんに提供する方針にしています。あとは来客を待つだけです。
クリスマスにピッタリな、綺麗なイルミネーションですね。もはやこれのために逸脱した買い物したまである。そしてこれがずっとベッドの下でチカチカしているという……幸せ。
なにが豊橋駅前だ。
なにがなばなの里だ。
私はネットワーク機器だ。
おまけ・自動でラクしてSpeedtest
インターネットの通信速度を計測するサイトは、Speedtest.netや、マルチコネクション時はアテにならないfast.comなどがあります。以前はiNonius Speed Testをゴリ推ししていたんですが、最近UIが改悪されたので今はSpeedtest.netにゾッコンです。で、このSpeedtestさん、実はCLI版があるらしい。
これ、Linuxの自宅サーバー使って定期的に実行されるようにすれば速度の監視と速くなりやすい時間帯を割り出せるやん。いっちょやってみますか。
#コピペがしたかったので、WindowsからSSH
PS C:\Users\Hatchan> ssh hatchan@192.168.1.2
#インストール魔法の詠唱
~$ curl -s https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.deb.sh | sudo bash
~$ sudo apt-get install speedtest
早速`speedtest`で実行してみましょう。IDを指定して、東京にあるIPA CyberLab 400Gという速いサーバーに接続するオプションをつけます(サーバー側が遅いと結果に影響するため)。初回は規約に同意しろ みたいなのが出てきます。
$ /usr/bin/speedtest --server-id=48462
==============================================================================
You may only use this Speedtest software and information generated
from it for personal, non-commercial use, through a command line
interface on a personal computer. Your use of this software is subject
to the End User License Agreement, Terms of Use and Privacy Policy at
these URLs:
https://www.speedtest.net/about/eula
https://www.speedtest.net/about/terms
https://www.speedtest.net/about/privacy
==============================================================================
Do you accept the license? [type YES to accept]: yes
License acceptance recorded. Continuing.
Speedtest by Ookla
Server: IPA CyberLab 400G - Tokyo (id: 48463)
ISP: SoftBank Corp.
Idle Latency: 27.37 ms (jitter: 0.07ms, low: 27.31ms, high: 27.56ms)
Download: 93.78 Mbps (data used: 106.5 MB)
38.58 ms (jitter: 1.10ms, low: 27.51ms, high: 40.86ms)
Upload: 94.37 Mbps (data used: 93.1 MB)
41.45 ms (jitter: 14.50ms, low: 29.35ms, high: 262.57ms)
Packet Loss: 0.0%
Result URL: https://www.speedtest.net/result/c/c87cade5-3832-41ac-8ad8-18e0fc99f1d8
通信速度はほぼ上限の↓89/↑94Mbps、パケットロスは驚異の0.0%!なんか上手く行ってそうですね。あとはこれを毎時0分に自動的に実行して、結果をDiscordの専用チャンネルに通知するようにします。
Discordの自前のサーバーに結果通知用のチャンネルを作り、ウェブフックを作成&URLをコピーします。
Discordに通知するshellスクリプトをAIに書いてもらいます。
#!/bin/bash
# Speedtest を実行して結果を取得
result=$(speedtest --format=json)
# 必要なデータを JSON から抽出
download_speed=$(echo "$result" | jq '.download.bandwidth' | awk '{print $1 / 125000}') # Mbps
upload_speed=$(echo "$result" | jq '.upload.bandwidth' | awk '{print $1 / 125000}') # Mbps
ping=$(echo "$result" | jq '.ping.latency')
# Webhook URL (Discordからコピーしたものに置き換える)
webhook_url="YOUR_DISCORD_WEBHOOK_URL"
# メッセージの作成
message="{
\"content\": null,
\"embeds\": [
{
\"title\": \"Speedtest Results\",
\"description\": \"Here are the results of the latest speed test:\",
\"fields\": [
{ \"name\": \"Download Speed\", \"value\": \"${download_speed} Mbps\", \"inline\": true },
{ \"name\": \"Upload Speed\", \"value\": \"${upload_speed} Mbps\", \"inline\": true },
{ \"name\": \"Ping\", \"value\": \"${ping} ms\", \"inline\": true }
],
\"color\": 16776960
}
]
}"
# Discord に送信
curl -H "Content-Type: application/json" -X POST -d "$message" "$webhook_url"
実行権限を付与
$ sudo chmod +x speedtest_discord.sh
crontabに次の詠唱を行い1時間ごとに実行されるようにします。
$ crontab -e
#これを追記する (パスは個人の環境に合わせる)
0 * * * * /bash/speedtest_discord.sh
うおおおおおおおおおお完成や!!!!!!!!なんか上りが実際よりはるかに遅く出てる気がするので精度に問題アリかな?でも動いたのでヨシ!!俺は寝るぞ!!
テレビ
今ではNetfixやらPrime Videoやらで色んなテレビ番組が配信されて、スマホを使ってどこでも視聴ができる良い時代になりました。でもやっぱりテレビでテレビが見たいときもある(?)。なので地デジとBSが見れる環境、作っちゃおう。
TS抜き
目次でこの文言を見て、
エッチなのはダメ!死刑!!
とか思ったそこの貴方、何か勘違いしているので今すぐ冷水でも浴びてもろて…
ここでのTSというのは、TransSexualではなくTerrestrial(地上波)とSatellite(衛星放送、BS)のことです。MPEG2-TSという厄介なデータ形式を、お家のパソコンで扱いやすい別の形式に変えてついでにコピーガードも解除しちゃうZO☆という行為をTS抜きと呼びます。これについて詳細を語りだすと普通に記事1個書けてしまうので、詳しく知りたい・やってみたいと思った猛者は検索一位のブログを見てください。
用意するもの
デスクトップぱそこん(Windows10または11)
言わずもがなPLEX社製TVチューナー
本日の主役
B-CASカード
(胡散臭いオークション以外の)任意の手段で調達します。はっちゃんはハードオフで投げ売りされてたレコーダーから拝借しましたICカードリーダー
あった方がいいアンテナケーブル
いや多いわ。そうです。テレビ見るにはめっちゃ金かかるんです。パソコンも併せたら普通にテレビ買えちゃうね…
ひとしきり購入して財布を破壊したら、いよいよ環境構築です。つくみさんのブログを参考にしながら丸一日かけて作業します。
本当につらかった。
これ録画もPCで出来るんですが、生の録画データは非圧縮でめちゃ重いため、Amatsukazeというソフトウェアを使ってMP4への変換を行います。録画終了時に自動でエンコーダを走らせることができて大変便利。
そんな感じで放送波の受信→予約録画→MP4エンコードという流れを全自動でやってくれる環境が回っております。すごい!ありがとう!!
おわり
いかがだったでしょうか。実際に機材を触ってみると座学より直感的に学べていいなーという思いでこういった環境を作ってみたわけですが結構楽しい、金かかるし本当にオススメしにくいけど。ほとんどの人にとっては関係のない話だと思うのにここまで読んでくださった方には感謝しかありません。素敵なあなたに、美しい世界に、ありがとう――――――
次回は、わにわにパニックさんの記事です。お楽しみに!