【技術記事】インターネットを使おう【Telnet + ngrokで個人サイト公開】

Pozdrav!わたしです。
突然ですが、皆さんはインターネット、使っているでしょうか?
わたしはインターネットの使い方があまり得意ではないです。
ということで、今日は普段使っていないインターネットを使ってみたいと思います。

インターネットを使う

今回使うのはインターネットです。SNS運用とかそういう話でなく、文字通りインターネットを使います。
使いたかったインターネットはTelnetです。

はい、Telnetです。
HTTPSなんて使っても仕方がないというか、このブログ自体がHTTPSを使っていますよね。

さて、どうしてこんなことをしているのかというと、それはこちらの記事を読んだからです。なんでも某社団法人が公式サイトにTelnetを使用しているとのこと。

わたしのような所謂デジタルネイティブ世代にとって、インターネットといえばHTTP/HTTPSです。ほかのプロトコルでの接続なんて考えられません。
でも、そういうインターネットって味気ないじゃないですか。わたしは古いインターネットに触りたいわけです。
ということで今回の目標はTelnetによる個人サイト(と呼べるのか?)制作と、その公開までです。

使用する言語・ライブラリ・その他ソフト

Telnetサーバー構築にはPythonを使用します。一番慣れてるのでこれで。
使用ライブラリはtelnetlib3です。こんなライブラリがあったこと自体今日初めて知りました。マニュアルにおんぶにだっこ。

サーバーのソースコードは以下の通りです。
# coding: UTF-8

import asyncio
import telnetlib3

counter = 0

async def shell(reader, writer):
    global counter
    counter += 1

    text = rf"""
    (省略)
"""

    text = text.replace("\n", "\r\n")

    for c in text:
        writer.write(c)
        await asyncio.sleep(0.05)  # 秒間20文字

    await writer.drain()
    writer.close()


async def main():
    server = await telnetlib3.create_server(port=6023, shell=shell, encoding="cp932")
    await server.wait_closed()


asyncio.run(main())
文字の表示については意図的に遅くしています。その方が雰囲気出るし。この辺はこちらの記事の真似です。

サーバーの公開にはngrokを使用します。ポート開放とかめんどくさいですし。
ngrokについてざっくり説明すると、Localhost上にあるものをインターネット上に公開するソフトです。
普通はhttpで使うことが多いですが、実はtcp接続ならなんでも使えます。つまりTelnetだろうとSSHだろうと公開できるということ。強い!

接続にはWindows公式のTelnetクライアントを使用します。これも存在を今日まで知りませんでした。
使用するにはコントロールパネルから機能を有効化する必要があります。

ちなみにWindows公式クライアントの使用文字コードはShift-JISです。せめてUTF-8を使ってください。

接続の様子
ということでいざ接続!

表示途中

うおおおおお!

「ウェブサイト」

やったぜ!

感想

ということで無事にインターネット上に作ったコンテンツを表示させることができました。
作った感想ですが、やっぱりこういうプリミティブなものを作るのって良いなって思いました。「インターネット上のサービス」ではなく正しく「インターネット」を使用している感じがします。
わたしのような所謂デジタルネイティブ世代にとっては貴重な経験。もう二度と使わない技術でしょうけども。

ところで改行コードの\r\nなんて初めて使いました。Telnetだと\nではダメなんですね。

そんな感じでTelnet使ってみたの記事でした。
皆さんもやってみてください……と普段なら言うところですが、Telnetは脆弱性とかが色々アレなのであまり使わないようにしましょう。

それではまた次の記事で。Do viděnja!

コメント

このブログの人気の投稿

【2026-05-16】所有衣装一覧

カクヨムに鬼才を見た

EDFのアイテム回収周りについて言語化したい