Telnet サーバーのセットアップ
このステップでは、LabEx VM 上に Telnet サーバーをセットアップします。Telnet は、仮想端末接続を使用して双方向の対話型テキストベースの通信機能を提供するために使用されるネットワークプロトコルです。Telnet は暗号化がないため一般的に安全ではないと考えられていますが、LabEx VM のような制御された環境でのテストやデモンストレーション目的には役立ちます。
LabEx VM は Docker コンテナを使用しているため、systemctl
を直接使用してサービスを管理することはできません。代わりに、xinetd
を使用して Telnet サービスを管理します。xinetd
(拡張 Internet デーモン) は、着信ネットワーク接続を待ち受け、適切なサービスを起動するスーパーサーバーデーモンです。
まず、telnetd
と xinetd
パッケージをインストールしましょう。LabEx VM のターミナルを開き、以下のコマンドを実行します。
sudo apt update
sudo apt install telnetd xinetd -y
このコマンドは、パッケージリストを更新し、telnetd
(Telnet サーバーデーモン) と xinetd
パッケージをインストールします。-y
フラグは、インストール中のすべてのプロンプトに自動的に「はい」と答えます。
次に、xinetd
を構成して Telnet サービスを管理する必要があります。/etc/xinetd.d/
ディレクトリに Telnet 用の構成ファイルを作成します。nano
を使用してファイルを作成し、編集します。
sudo nano /etc/xinetd.d/telnet
以下の構成を nano
エディターに貼り付けます。
service telnet
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
disable = no
}
この構成は、xinetd
に Telnet 接続を待ち受け、/usr/sbin/in.telnetd
サーバーを root として実行し、接続失敗をログに記録するように指示します。disable = no
は、サービスが有効になっていることを保証します。
Ctrl+X
を押し、次に Y
を押し、最後に Enter
を押して、ファイルを保存して nano
を終了します。
これで、変更を適用するために xinetd
サービスを再起動します。systemctl
を使用できないため、xinetd
プロセスに HUP シグナルを送信する回避策を使用します。まず、xinetd
のプロセス ID を見つけます。
ps -ef | grep xinetd
以下のような出力が表示されるはずです。
root 1234 1 0 10:00 ? 00:00:00 /usr/sbin/xinetd -stayalive -pidfile /run/xinetd.pid
labex 5678 5600 0 10:01 pts/0 00:00:00 grep --color=auto xinetd
xinetd
のプロセス ID (この例では 1234
) をメモします。以下のコマンドで、出力から得た実際のプロセス ID で 1234
を置き換えます。
sudo kill -HUP 1234
このコマンドは、xinetd
プロセスに HUP シグナルを送信し、構成を再読み込みさせます。
最後に、Telnet サーバーが実行されていることを確認しましょう。telnet
コマンドを使用して、同じマシンから接続を試みることができます。telnet
クライアントがデフォルトでインストールされていない場合があるため、接続をテストするために netcat
を使用します。
nc localhost 23
Telnet サーバーが実行されている場合、空白の画面または Telnet プロンプトが表示されるはずです。その後、Ctrl+]
を入力してから quit
を入力することで、接続を閉じることができます。「Connection refused」が表示された場合は、上記の手順を再確認してください。