Windows10でTelnetサーバを立てる(WSLを使う)

結論から書くと、Windows10自体でTelnetサーバは立てられないのでWSLでTelnetを使います。
Windows11でも有効な手順だと思います。

WSLを有効化する

コントロールパネル>プログラム>Windowsの機能の有効化または無効化
LinuxWindowsサブシステム
にチェックを入れてOKを押し、再起動を求められたら再起動します。

Windows10 WSL有効化

WSLをインストールする

WSL (Windows Subsystem for Linux) をインストールします。
(WSLはWindowsで動くLinuxです。)
Microsoft Storeで入手可能です。
あるいは、PowerShellで wsl --install します。
ディストリビューションはどれでも大丈夫だと思います(一部手順は異なってきます)が、私はUbuntuを入れました。
再起動を求められたら再起動します。

WSLを起動する

初回はユーザ名とパスワードを設定します。

WSLでtelnetをインストールする

先にaptをアップデートしてから、telnetをインストールします。
sudoで実行するコマンドではパスワードが聞かれるので、パスワードを入力してください。

sudo apt update
sudo apt install telnetd
sudo apt install inetutils-inetd

WSLでtelnetを起動する

sudo /etc/init.d/inetutils-inetd start

このとき、ファイアウォールが接続を許可するか聞いてきたら許可してください。

# 私は何故か初回で聞いてこず、再起動して再実行したら聞かれました。

# Windows10のファイアウォールの設定の仕組みをよく知らない、詳しい方がいらしたら教えて下さい。

WSL1の場合はこれでtelnetサーバのセットアップ完了です。
WindowsIPアドレスtelnetでアクセスしてください。

telnetを終了するには下記のコマンドを用います。

sudo /etc/init.d/inetutils-inetd stop

(WSL2の場合)PowerShellでポートフォワーディングする

WSLには、WSL1とWSL2があり、ネットワークの仕組みが異なります。
WSL1のtelnetサーバにはWindowsと同じIPアドレス(の23番ポート)でアクセスすることができます。

WSL2にはホストのWindowsと異なるプライベートアドレスが割り振られるので、他のマシンから直接アクセスすることができません。(2022年2月時点のWindows10の場合。現在この仕様は変更が検討されているようです。)
このため、WSL2の場合はポートフォワーディング(ポート転送)が必要になります。

WSLのバージョンを確認するには、PowerShellで wsl --list --verbose と入力します。

wsl --list --verbose
  NAME      STATE           VERSION
* Ubuntu    Running         2

VERSIONが2であれば、管理者権限のPowerShellで下記ポートフォワーディングの設定も行います。

netsh interface portproxy add v4tov4 listenport=23 connectaddress=localhost

WSL2の初期バージョンでは、localhostだと上手くいかないかもしれません。
その場合、WSL2のバージョンを上げるか、
WSL2のIPアドレスをifconfigなどで確認し、そのアドレスをconnectaddressに指定してください。
※WSL2のIPアドレスは起動のたびに変化します。

ポートフォワーディングの状況を確認するには下記コマンドを用います。

netsh interface portproxy show all

WSL2の場合はこれでtelnetサーバのセットアップ完了です。
WindowsIPアドレスtelnetでアクセスしてください。

ポートフォワーディングを終了するには下記コマンドを用います。

netsh interface portproxy delete v4tov4 listenport=23

あとがき

Windows10やWindows11では、Telnetサーバは使えなくなりました。比較的脆弱なためです。
Telnetクライアントは設定すれば使えます。)
代わりにSSHを使ってねというところですが、わけあってTelnetサーバが必要なこともあります。
しかし、ぐぐってもTelnetクライアントの方を使う記事ばかり上位に出てきたので自分用のメモを兼ねて書きました。