ufwはポート9999を許可しますが、接続が拒否されました。

ufwはポート9999を許可しますが、接続が拒否されました。

ポートは許可されますが、接続は拒否されますか?

# sudo ufw allow 9999/tcp
  Rule added
  Rule added (v6)

状態を確認してみる

# sudo ufw status
  9999/tcp           ALLOW       Anywhere
  9999/tcp (v6)      ALLOW       Anywhere (v6)

すべてが大丈夫に見えますが、接続はまだ拒否されます。ローカルコンピュータからリモートでログインしようとしています。

# telnet 127.0.0.1 9999
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused

と外部コンピュータ(実際のIP編集)

# telnet 1.1.1.1 9999
Trying 1.1.1.1...
telnet: Unable to connect to remote host: Connection refused

別のポート接続が可能であっても、新しく追加されたこのポートは機能しません。なぜですか?

PS。サーバーオペレーティングシステムはUbuntu 16.04です。

答え1

接続するには、このポートでリッスンする必要があります。簡単なテストには、ncまたは以下を使用できますnetcat

nc -l -p 9999

これでポートがncリッスンしているため、他の端末(またはコンピュータ)からこのポートにアクセス9999できます。telnet

$ telnet localhost 9999
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

接続したら、ある端末に入力してをタップすると、Enter別の端末にテキストが表示されます。

答え2

今はファイアウォールを無視しましょう。クライアントプロセスがホストへのTCP接続を作成しようとすると、ホストはそのポートから着信接続を「受信」するためにいくつかのサーバープロセスを実行する必要があります。ポートが「開いていない」場合、つまりポートでリッスンしているプロセスがない場合、クライアントプロセスが接続しようとすると、ホストカーネルはポートでリッスンしているプロセスがないことを示す応答を返します。Connection refusedクライアントから見ると、これが意味するものです。

ファイアウォールを入力します。ホストにファイアウォールがインストールされている場合、ファイアウォールはホストに入って来るネットワークトラフィックをブロックできます。その後、クライアントプロセスは指定されたポートでサーバープロセスに接続しようとすることができ、そのポートでリッスンしているサーバープロセスがあってもファイアウォールによって接続が拒否されます。しかし、これはあなたが持っている問題ではありません。

関連情報