ポート8443でリッスンしているサーバーに新しいアプリケーションをデプロイします。アプリケーションをデプロイする前に、このサーバーのポート8443でファイアウォールを開くようにネットワークチームに依頼しました。現在、サーバーの特定のポートをリッスンするアプリケーションはありません。
とにかく、ファイアウォールでポート8443が開いていることを確認できますか?
オペレーティングシステム: Linux/Windows
答え1
リモートシステムでTCP接続を設定できることを確認するには、そのシステムとターゲットシステムにOpenCSWをインストールし、両方のシステムにnetcatをインストールします。以下は、netcatを使用してTCP接続をテストする構文です。
nc -vz targetServer portNum
たとえば、「homeServer1」でSSHを確認するには、次のようにします。
nc -vz homeserver1 22
これにより、リモートシステムでTCPレベルの接続をテストできます。クライアントとして機能する代わりに、ポートでリッスンするようにNetcatを設定することもできます。 TCP/8443で受信するには:
アプリケーションをホストするサーバーで:nc -l homeserver1 8443
ファイアウォールの外側のコンピュータから:nc -vz homeserver.fqdn 8443
成功した実行の例は次のとおりです。
[jadavis6@ditirlns01 ~]$ nc -vz ditirlns01.ncat.edu 8443
Connection to ditirlns01.ncat.edu 8443 port [tcp/pcsync-https] succeeded!
実行失敗:
[jadavis6@ditirlns01 ~]$ nc -vz ditirlns01.ncat.edu 8443
nc: connect to ditirlns01.ncat.edu port 8443 (tcp) failed: Connection refused
答え2
ファイアウォールしなければならない返信するICMPメッセージリクエストをブロックするとき。しかし、必ずしもそうではありません(興味があるかもしれません)。この良い記事)。
外部でテストしてファイアウォールを介してポートにアクセスできるかどうか、その場合はそのポートでリッスンしているエントリがあるかどうかを確認できます。以下は、wireshark
他のパケットスニファを使用して監視できるTCP要求に関連する3つのシナリオと表示される内容です。
1) ファイアウォールが要求を拒否します。
ICMPメッセージを再受信すると、リクエストツールはすぐに関連情報(「アクセス不可能、管理禁止」など)を通知します。 「ツール」とは、要求を送信するために使用するクライアント(私が使用したクライアントtelnet
)を意味します。メッセージ1の詳細はファイアウォールの設定方法によって異なりますが、おそらく「ポートに接続できません」が最も一般的です。
「ホストへのパスなし」はこれを示すことがありますが、より微妙なルーティングの問題を示すこともあります。
2) ファイアウォールがパケットをドロップします。
応答がないため、ツールはタイムアウトまたは退屈するまで待ちます。
3)ファイアウォールはパケットを許可しますが(またはファイアウォールなし)、ポートでリッスンしているエントリはありません。
TCP RST/ACK メッセージを受信します。私の考えでは、TCPプロトコルにはこれが必要だと思います。つまり、ポートでリッスンしているエントリがない場合、オペレーティングシステム自体はこの応答を送信します。ツールが報告する内容だけでは、これを#1と区別するのが難しい場合があります。可能どちらの場合も同じことを言います(ただし、「接続が拒否されました」と#1「ネットワークに接続できません」と区別される可能性があります)。クライアントシステムのパケットスニファで見られるように、シナリオ#1(ICMP拒否メッセージ)と#3(TCP RST / ACKメッセージ)はかなり異なります。
ここで唯一の他のオプションは、ファイアウォールがパケットの通過を許可し、リッスンしているものがあるため、成功した接続を取得できることです。
つまり、ネットワークが全体的にうまく機能していると仮定すると、1番または2番が表示された場合、ファイアウォールがそのポートへのアクセスを積極的にブロックしていることを意味します。サーバーが稼働していないがポートにアクセスできる場合、#3が発生し、もちろん(暗黙的に)#4は接続の成功です。
- たとえば、「ポートにアクセスできません」、「ホストが禁止されています」など、さまざまな組み合わせがあります。ホスト/ポート/管理者そして接続できない/禁止;IPファイアウォールが使用中であることが明確に示されているので、メッセージでそれを見つけてください。
答え3
netstat
このコマンドを使用して、ポートが開いていてリッスンしていることを確認できます。
はい
$ netstat -anp | less
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:41716 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:17500 0.0.0.0:* LISTEN 3034/dropbox
tcp 0 0 0.0.0.0:17501 0.0.0.0:* LISTEN 3033/dropbox
tcp 0 0 127.0.0.1:2143 0.0.0.0:* LISTEN 3191/ssh
tcp 0 0 127.0.0.1:2025 0.0.0.0:* LISTEN 3191/ssh
出力にはプロセスが表示されます。(一番右の列)TCP ポートでリッスンしています。ポート番号は、IPアドレスの後のコロンの後の数字です(たとえば、ポート111の場合は0.0.0.0:111)。
IPアドレスの表示地元のそして海外住所。地元のあなたのシステムになります外国のこれは、TCP ポートに接続されたアドレス、または接続された TCP ポートのいずれかです。
ポート22に関する限り、これは私のシステムで実行されているSSHデーモンです。聞く接続のため。誰かがデーモンに接続しようとするとすぐに、ssh
デーモンはTCPポート22を開いたままにして、自分のコピーを作成し、接続を別のポートにプッシュし、同時に他の接続が入るようにします。
答え4
最近私も同じ要求を受けてこのスレッドに来ました。出力を照会するのと同じように、ncコマンドを使用してファームウェアのオープンポートを取得できました。
nc -v -w 1 -z -s *srcIP destIP port* 2>&1 | grep timed > /dev/null && echo closed || echo open
デフォルトでは、「タイムアウト」が発生すると、ファームウェアのポートが開いていないことを意味します。