client PC IP: 10.49.46.5/24
とserver PC IP: 10.49.46.2/24
は、同じネットワークにリンクされた2台のコンピューターです。コマンドtelnet
を使用してこれらの2台のコンピューター間でインタラクティブな通信を作成しようとすると、次のようになります。
[root@xxx:~]# telnet 10.49.46.2
Trying 10.49.46.2...
Connected to 10.49.46.2.
Escape character is '^]'.
Connection closed by foreign Host.
[root@xxx:~]#
サーバーxinetd.conf
は次のとおりです。
defaults
{
instances = 60
log_type = SYSLOG authpriv
log_on_success = Host PID EXIT
log_on_failure = Host ATTEMPT
cps = 25 30
}
includedir /etc/xinetd.d
サーバーtelnet.config
は次のとおりです。
service telnet
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/telnetd
log_on_failure += USERID
instances = 10
disable = no
}
TCPWrapper hosts.allow
は次のとおりです。
telnetd: /etc/telnetd.hosts
tfdpd: /etc/tftpd.hosts
sshd: /etc/sshd.hosts
TCPWrapper hosts.deny
は次のとおりです。
ALL:ALL
今:
ssh
を確認したところ、port 22
で実行されています。/var/log/message
を確認したところ、コマンドxinetd
が開始され、すぐにTelnetを終了することがわかりました。iptables
がtelnetパッケージを削除しないことを確認しました:iptables -L
何が問題なのか、どうすれば修正できるのかを教えてくれませんか。
[root@xxx:~]# telnet 10.49.46.2
Trying 10.49.46.2...
Connected to 10.49.46.2.
Escape character is '^]'.
これは、リモートデーモンへのTCP=接続を正常に確立したことを意味します。どのデーモンですか?ハブとして機能するxinetd
の1つです。接続されたので、xinetd
は、特定のサービス(telnet
)の起動を試みます。
Connection closed by foreign Host.
これは、telnet
サービスの起動に失敗したことを意味します。 telnetd
コマンドラインにデバッグオプションを追加し、xinetd
ログを読み取って、何が失敗したかを確認することができます。
BusyBoxバージョンのtelnetd
を実行しているようです。 telnetd
の従来のバージョンとは異なり、Busyboxで提供されるのはスタンドアロンのデーモンであり、inetd
とのインターフェースに-i
オプションが必要です(inetd
スタンドアロンデーモンと互換性のない特定のインターフェース:ソケットを開いてリッスンしてはならず、stdin/stdoutを介してクライアントと通信する必要があります)。
したがって、xinetd
構成は次のようになります。
service telnet
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/telnetd
server_args = -i
log_on_failure += USERID
instances = 10
disable = no
}
telnet 10.49.46.2 24
でTelnetポートを指定します。
コグネックスのカメラマニュアルによると、「ポート番号を指定すると、Unixのユーザー名/パスワード認証が無効になり、Unixシステムがユーザー名とパスワードの入力を要求するようになります。」