GNU/Linux >> Linux の 問題 >  >> Linux

Netcatを使用したネットワークサービスのテスト

警告: Netcatのソフトウェア作成者は2006年以降ソフトウェアを更新していません。したがって、Rackspace Technologyは、Netcatの品質がお客様の期待に応えることを保証しません。

Netcatの使用

ネットワークサービスが誤動作しているが、サービスがネットワークポートをリッスンしていることがわかっている場合は、プログラム接続を確認して問題のトラブルシューティングを行うことができます。

Netcatコマンドncを使用します 、サービスにアクセスします。 RedHat®ベースのディストリビューションを実行していて、ncがない場合 インストールされている場合は、コマンドラインで次のコマンドを入力します。

$ sudo yum install nc`

Debian®ベースのディストリビューションの場合、コマンドラインで次のコマンドを入力します。

$ sudo apt-get install Netcat`
基本テスト

簡単なテストを実行して、ポートが接続を受け入れることを確認します。

ncと入力します コマンドラインの後に-vzが続きます IPアドレスとポートのオプション:

$ nc -vz IP_address port

IPアドレスは、サービスが接続を受信するアドレスである必要があります。

次の例は、可能な出力メッセージを示しています。

接続は成功します
$ nc -vz 203.0.113.96 21
Connection to 203.0.113.96 21 port [tcp/ftp] succeeded!
接続が拒否されました
$ nc -vz 203.0.113.96 80
nc: connect to 203.0.113.96 port 80 (tcp) failed: Connection refused
接続要求への応答がありません
$ nc -vz 203.0.113.96 80
nc: connect to 203.0.113.96 port 80 (tcp) failed: Connection timed out
接続が拒否されました

サービスが実行されていないか、ファイアウォールが接続を拒否しています。 psを実行して、プロセスのステータスを確認します コマンドラインで。その他のオプションについては、Linuxで実行中のサービスを確認するを参照してください。

注: サービスが実行されている場合、ファイアウォールが接続を拒否する可能性があります。 接続がタイムアウトしましたをお読みください ファイアウォールのトラブルシューティングの手順については、セクションをご覧ください。

接続がタイムアウトしました

接続がタイムアウトしました 応答は、接続が機能していないことを示しています。これは、ファイアウォールがポートをブロックしていることを意味している可能性があります。必要なポートでの接続を受け入れるルールを追加して、接続ステータスをテストします。

次の例では、入力チェーンの1行目に、ポート80ですべてのTCP接続を受け入れるルールを挿入します。 (HTTP)。 Apache®などのWebサーバーをテストするときにこのルールを使用します。

$ sudo /sbin/iptables -I INPUT 1 -p tcp --dport http -j ACCEPT

IPテーブルは、加えられた変更を即座に反映します。 ncでテストを繰り返します 応答に変化があるかどうかを確認します。

追加したルールを削除する場合は、-Dを使用できます。 チェーン内のルールの位置と組み合わせたオプション。前の例では、チェーンの一番上にある1行目にルールを追加しました。次の例は、それを削除する方法を示しています。

$ sudo /sbin/iptables -D INPUT 1

コマンドラインで次のコマンドを実行すると、現在のファイアウォール構成をいつでも確認できます。

$ sudo /sbin/iptables -L -v
接続に成功しました

初期接続が成功すると、Netcatはサービスに接続できます。接続の詳細を確認してください。

まず、-vtを使用します サービスが基本的なネットワーククエリに応答できるかどうかを確認するオプション:

$ nc -vt IP Address Port

コマンドをサービスデーモンに送信して応答を受信できる場合は、プログラムにアクセスできることを示しており、問題はクライアントの接続構成が原因である可能性があります。

接続したら、サービスをテストして応答を取得します。 GETを送信してサービスをテストできます Webサーバーへのリクエスト、またはサーバーに応答を求めるその他の適切なデータ。

接続を閉じる

Ctrl-C を押すと、接続を終了できます。 または、サービス固有のquitコマンドを入力します。

たとえば、QUITを使用して、ファイル転送プロトコル、FTP、サーバーへの接続を閉じることができます。 コマンド:

$ nc -vt 203.0.113.96 21
Connection to 203.0.113.96 21 port [tcp/ftp] succeeded!
220 (vsFTPd 2.0.5)
$ QUIT
221 Goodbye.
拒否されたコマンド

ncと仮定します 成功を報告しますが、コマンドを送信することはできません。または、サービスが利用できないことを報告するサービスデーモンから応答を受け取ります。その場合、伝送制御プロトコルラッパー、TCPラッパーがある可能性があります。 、アクセス制御を提供します。

TCPラッパーによってブロックされているFTPサービスは、次の例のようになります。

$ nc -vt 203.0.113.96 21
Connection to 203.0.113.96 21 port [tcp/ftp] succeeded!
421 Service not available.

TCPラッパーと互換性のあるプログラムは、libwrapでコンパイルされます。 。プログラムがTCPwrappersを使用できるかどうかを確認するには、次のコマンドを使用します。

$ ldd /path/to/binary | grep libwrap

次の例では、vsftpdをチェックします libwrapのプログラム 共有ライブラリファイル。

ldd /usr/sbin/vsftpd | grep libwrap
libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f62c734a000)

プログラムがTCPラッパーと互換性がない場合は、前のgrep コマンドは何も返しません。

ログの確認

ブロックされた接続はログエントリを生成します。プログラムのログで関連するメッセージを確認してください。

vsftpd内 ログ、 /var/log/vsftpd.logにあります 、tcpラッパーが原因でブロックされた接続は次の例のようになります:

Tue Jun  7 16:14:21 2011 [pid 28599] CONNECT: Client "203.0.113.43", "Connection refused: tcp_wrappers denial."

hosts.deny

/etc/hosts.deny ファイルは、ブロックされた接続の定義を確立します。ファイルにサービスのエントリが表示されない場合は、grepを使用してください 検索します。

次のコマンドを実行して、ファイルでプログラム名を検索します。

$ sudo grep "vsftpd" /etc/hosts.deny
vsftpd : ALL

ハッシュ(#)を使用して、問題のある行をコメントアウトしてみてください。このファイルへの変更は自動的に有効になります。サービスを再起動する必要はありません。

TCPラッパーはデフォルトで接続を許可するため、問題の原因である場合は、 /etc/hosts.denyにエントリが存在する必要があることに注意してください。 サービスのために。ファイルの名前を/etc/hosts.denyに変更できます すべての拒否ルールを一時的に削除します。たとえば、sudo mv /etc/hosts.deny /etc/hosts.deny.oldを実行します。 。このコマンドは、TCPラッパーを使用するすべてのアプリケーションに影響することに注意してください。必要に応じて、テスト終了後に元に戻すことを忘れないでください。

さらなる調査

この記事のすべてのテストを問題を特定せずに完了した場合、サービスは正常に実行されている可能性があります。次のステップは、pingを使用してサーバーへの接続をテストすることです。 およびtraceroute ユーティリティ。


Linux
  1. nmcliを使用してLinuxコマンドラインからネットワーク接続を管理する

  2. Linuxファイアウォールの使用を開始する

  3. Nmapを使用して新しいネットワークを列挙する

  1. LinuxでNetworkManagerを使い始める

  2. RHEL7で静的IPアドレスを使用してネットワークインターフェイスを構成する

  3. Ubuntu リカバリからネットワーク接続を開始しますか?

  1. tcpdumpを使用してネットワークのトラブルシューティングを行う

  2. SSLyze、Nmap、またはOpenSSLを使用したSSL接続のテスト

  3. 自分のネットワークをテストできますか?