Windows10でTelnetサーバを立てる(WSLを使う)
結論から書くと、Windows10自体でTelnetサーバは立てられないのでWSLでTelnetを使います。
Windows11でも有効な手順だと思います。
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サーバのセットアップ完了です。
WindowsのIPアドレスに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サーバのセットアップ完了です。
WindowsのIPアドレスにtelnetでアクセスしてください。
ポートフォワーディングを終了するには下記コマンドを用います。
netsh interface portproxy delete v4tov4 listenport=23