VPN構築・Rogue構築失敗から次の目標が見えた件(Arch Linux使いへの道19)
外出先から家のサーバーに入ろうと思ったが・・・
せっかくスタバdeCUIも実行できたところ、家でメディアサーバーとして運用しているUbuntu Serverがあるので、外からそこにつなげばスタバでシャレオツな音楽聞けるやん!と新たな野望が芽生え始めました。昨年末、TryHackMeでいろいろサーバー侵入法を勉強しつつセキュリティを多少学んだ私、外からサーバーに入るには殊更セキュリティに気を付けなければ!確かVPN接続(バーチャル専用線で家のネットワークに繋げる手法)がセキュア(ちょっと凄腕っぽい言い回し)だったはず。で、コパイロットが提案してきたのは、最適解は「WireGuard VPN + SSH + CUIクライアント」とのことでした。そのために必要なコマンドやパッケージのインストールをし、またまたスタバdeCUIをやってみましたが、いろいろやっても外出先からは家のサーバーにつながらず・・・。
結局ルーターの問題から断念
いろいろコパイロットと対話&TRY&ERRORを続けたのですが、最終的にわかったのは、「そもそも家のONUとルーター環境では、IPv6のポート開放ができないから無理(一言でいうと最初から無理)」ということでした。それ、最初に言ってくれや・・・。一応、フレッツのルーターの機能制限をし、代替の機能を外部メーカーのルーターを持って来てIPv4を使えばできるらしいのですが、なんかセキュアじゃなさそうというただの私の感想で断念することにしました。
騒音発生問題を解消(数少ないチャレンジ成功)
私のArch Linuxは、スタバで使っているときに、CUIコンソールでBackspaceキーを連打し過ぎたときなどに、ThinkPad本体からクソでかビープ音が出て、周りから冷たい視線を投げかけられることがしばしばありました(涙)。これはコパイロット曰く、Arch Linux の “pcspkr” というカーネルモジュールが原因だそうです。こいつを「ブラックリスト化」すると音が鳴らなくなるそう。
やり方は/etc/modprobe.d/nobeep.confというファイルをテキストエディタで作成し、内容を次のとおりにします。
blacklist pcspkr
blacklist snd_pcspで、次のコマンドで有効化し、システムを再起動すればOK
sudo mkinitcpio -Pなお、TTYのベル音を消すのならば、テキストエディタで/etc/profileというファイルに次を加筆する
set bell-style noneKmsconのベル音を消すのならば、テキストエディタで/etc/profileというファイルに次を加筆すればよいそうです。
setterm -blength 0ローグライクRPGってご存じですか?
さてさて、硬派のCUI環境を突き進んだ私のThinkpadX13gen1AMDですが、CUI環境であれば絶対にプレイすべきRPGがあります。それは「Rogue(ローグ)」!パソコンゲーム黎明期の1980年に発表された、コンピューターRPG三大始祖の一つです(残り2つはUltima(ウルティマ)とWizardry(ウィザードリィ))。日本ではドラゴンクエストがRPGの始祖のように語られがちですが、そのドラクエはUltimaの移動システムとWizardryの戦闘システムで出来上がったものという解釈をするおっさんは多いと思います。私もその一人。もっとディープに言うとドラクエはウルティマ3とウィザードリィから生み出されたであろうリバーヒルソフトの夢幻の心臓2のインスパイア・・いやこれは私の感想ですよね。今はローグの話。ローグのシステムを踏襲して作られているRPGが「ローグライク」RPGです。プレイするたびに迷宮が自動生成されるってやつですね。トルネコの大冒険、風来のシレンの始祖というのがわかりやすい説明でしょうか。ローグのプレイ画面は100%CUI環境で成立しています。ウルティマやウィザードリィがGUIを使うのとは対照的に。硬派なCUI環境でローグをプレイすることこそ、CUI使いを語れるというもの(Arch Linux使いから逸れている気がしますが)。
あの「悪夢」再び!
CUI世界の雄のローグであれば、CUI環境ですぐインスコできる・・・そう考えたのが甘かった・・・。最初はコパイロットもこいつは公式リポジトリに入っているから、pacmanコマンドで簡単導入ですぐにプレイできるよ!みたいな雰囲気を醸し出しやがったのです。結局公式リポジトリにもAURリポジトリにもなく、ソースコードからビルドさせられますが、そもそものプログラムが昔のものですから、現代のC言語体系とは構文も解釈も違うわけでして・・・CUIブラウザW3Mの導入と全く同じ、現代C言語プログラムへの修正を余儀なくされたのです。コパイロットも「20世紀の古典的C言語ソースを現代文法に修正する歴史的意義がある(恍惚)」みたいなことを血迷って言い出す始末。これはまずい!もう少し新しいモノはないかと言って見つけたのが、ローグの進化版で日本語版も存在する「Nethack」でした。これは1987年に発表されたこちらもCUI環境で成立する大型RPGです。ですがこれも完全CUI環境下ではソースが古く、ビルドエラーの嵐・・・。
結局GUI前提なんすよ・・・まともに動くの
そこで更なる代替を探すと、このCUI型ローグライクRPGの最高到達点に「Brogue」ってのもあるそうで(英語版のみ)。Brogueのプレイ画面見たら、100%CUI環境なのに「これ夢幻の心臓2のダンジョンやんけ」くらいの素晴らしい出来栄え。これなら新しいやろ!と思って導入したら、タイトル画面からマウス入力待ちで動かなくなるGUI前提仕様。新し過ぎるって!
結局、ここまで出てきたゲーム、最新修正パッチが入って動くソースは、基本的にGUI環境の中のターミナル(ウィンドウCUI環境)じゃないと、なんならWindowsじゃないと動かないっぽいです。
ではどうするのか?見さらせーー!男塾名物直進行軍じゃ!!
ではどうするのか?賢明な読者諸兄姉であれば、GUI環境の導入を選ぶでしょう。だってどう見てもそっちの方が楽だし、Steamゲームまでできちゃいそうな予感するし・・・。でも自分、不器用なもんで・・・。この渡世の純粋CUI環境道をまだ進んで行かねばならねぇのです。現代C言語へのプログラミング、W3Mの時はコパイロットの言うがままに奴隷のように単純作業をしていたのが悪かったのです。もし修正方法を自分が理解しながら進めたら、それは苦行ではなく楽しい行軍になるのではないか?RogueもNethackもC言語で書かれているソース・・・You C言語学んじゃいなyo!
プロフィールにもあるとおり、私はプログラマーでもSEでもなくIT業界に1ミリも関係のない生き方をしてきましたが、男塾塾生は直線を前進しかせんのんや!C言語勉強してオープンソースを自ら修正したろうやないけ!(飛行帽コパイロットに教えてもらいながら)
というわけで次回からはArch Linux使いへの道改めNethackから学ぶC言語となる予定です(酒飲んで書いてます)。
