web-dev-qa-db-ja.com

「ポート9000:接続が拒否されました」エラーの発生源と解決策は何ですか?

port 9000: Connection refusedエラーに悩まされています。

私はUbuntu 14.04に取り組んでおり、Hadoopを単一のJavaプロセスとして非分散モードで実行しようとすると問題に直面しました(比較 Hadoop 2.4.1ドキュメント ) 。このエラーに関するHadoop Wikiの提案に従うことを試みました( hadoop/ConnectionRefused )が、成功しませんでした(私は初心者Ubuntuユーザーであり、与えられた提案を100%理解することさえ難しいと感じています)。私は stackoverflowの質問 を投稿しましたが、そこからport 9000 Connectionに何らかの一般的な問題があると結論付けました。

telnet出力:

martakarass@marta-komputer:~$ telnet localhost 9000
Trying 127.0.0.1...
telnet: Unable to connect to remote Host: Connection refused

nmap出力:

martakarass@marta-komputer:~$ nmap localhost

Starting Nmap 6.40 ( http://nmap.org ) at 2015-04-27 11:09 CEST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00022s latency).
Not shown: 995 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh
139/tcp open  netbios-ssn
445/tcp open  Microsoft-ds
631/tcp open  ipp
902/tcp open  iss-realsecure

Nmap done: 1 IP address (1 Host up) scanned in 0.08 seconds

Netcat設定:

次のコマンドを使用して、9000ポートを強制的に開いてみました。

nc -k -l 9000

しかし、それはうまくいきませんでした(上記のリンクされたスタンドアロン操作を実行できませんでした)。

Googleの調査結果から判断すると、この問題は非常に一般的であり、特に「管理者ジョブ関連の問題」が苦手な人にとっては大きな闘争を引き起こしていることがわかります。私はそれらに属しているので、私は親切に以下の質問への答えを求めます:

  • Q1:そのような問題の一般的な原因は何ですか? (一部の素人向け入門的な言葉/ポートや接続などに関連する基本的な問題についての参照は非常に歓迎されます)。

  • Q2:この問題への対処方法は?

更新。

Sudo netstat -nlp | grep :9000

何も返しません。

1
Marta Karas

最終的に、私はなんとかmake私のポート9000をリッスンしました/etc/ssh/sshd_configファイルに次の行を追加します。

Port 9000

私はこれに従いました serverguide/openssh-server (元のファイルのコピーの作成、sshdサーバーアプリケーションの再起動などに関する重要なコメントも含まれています)

この後、私は見ることができます:

telnet出力:

martakarass@marta-komputer:~$ telnet localhost 9000
Trying 127.0.0.1...
Connected to localhost.

nmap出力:

martakarass@marta-komputer:~$ nmap localhost

Starting Nmap 6.40 ( http://nmap.org ) at 2015-05-01 18:28 CEST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00023s latency).
Not shown: 994 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
139/tcp  open  netbios-ssn
445/tcp  open  Microsoft-ds
631/tcp  open  ipp
902/tcp  open  iss-realsecure
9000/tcp open  cslistener

Nmap done: 1 IP address (1 Host up) scanned in 0.05 seconds

netstat出力:

martakarass@marta-komputer:~$ Sudo netstat -nlp | grep :9000
tcp        0      0 0.0.0.0:9000            0.0.0.0:*               LISTEN      16397/sshd      
tcp6       0      0 :::9000                 :::*                    LISTEN      16397/sshd 
0
Marta Karas

TL; DR最初、詳細は次のとおりです

「接続拒否」は、指定したTCPポートでリッスンしていないときに、コンピューターまたはサーバー(またはローカルの自分のコンピューター)のサービスに接続しようとしたときに表示されるエラーです。間違ったポートまたはサービスが開始されなかった場合)、またはファイアウォールがリクエストを無視する代わりに明示的に接続を拒否した場合(非常に一般的な動作ではありません)。

そしてもう少し詳細:

TCP(UDPサービスはセッションレス)でのみ発生する可能性があり、このエラーはシステム管理者にとって非常に一般的です。

クライアントアプリケーションがTCPサービスに接続すると、SYNフラグが設定された最初のパケットが送信されます。単純化すると、それに対する2つの可能な答えがあります。

  • サーバーは、必要なTCPポートで実際にリッスンし、SYN-ACKパケットで応答してSYNパケットを確認します。その後、クライアントはACKパケットを受け取って、SYN-ACKがあったことをサーバーに「確認」します受け取りました。 TCPセッションを確立し、サーバーとの「会話」を開始できる瞬間です。
  • サーバーはSYNパケットを受信しますが、要求されたポートをリッスンしていません。接続は、RST(リセット)フラグが設定されたパケットで拒否されます。これは、悪名高い「接続が拒否された」という状況の99%です。

これを修正するにはどうすればよいですか?

確認できることがいくつかあります。クライアント側の適切なポートを照会していますか?サービスは開始されましたか?適切なポートでリッスンしていますか?

これらの3つの質問は、一般的に問題の解決に役立ちます。

server(サービスを実行するマシン)に入力するクイック汎用コマンド

サービスが予期されるポートでリッスンしていることを確認する

ss -nat | grep <enter port number here> | grep LISTEN

古いシステムの一部の人々もこれを使用する可能性があります

netstat -an | grep <enter port number here> | grep LISTEN

ポート番号のように見えるものがここに表示されない場合、サービスは開始されていないか、指定したポート番号でリッスンしていないかのいずれかです。

サービスが実行されていることを確認する

service <service name> status
1

Iptablesを無効にしてみてください:

Sudo service iptables stop && Sudo service ip6tables stop

次に、hadoopを再起動します。これで問題が解決した場合、ファイアウォールを適切に構成する必要があります。

1
UNIm95