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