新しいアプリケーションをサーバーにデプロイし、アプリケーションはポート8443でリッスンします。アプリケーションをデプロイする前に、ネットワークチームにそのサーバーのポート8443のファイアウォールを開くように依頼しました。サーバー上のその特定のポートで現在リッスンしているアプリケーションはありません。
とにかくポート8443のファイアウォールが開いていることを確認できますか
OS:Linux/Windows
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
ファイアウォールすべきリクエストをブロックするときに ICMPメッセージ で応答します。ただし、これは必ずしもそうとは限りません( この素晴らしい記事 に興味があります)。
外部からテストして、ポートがファイアウォールを介してアクセス可能かどうかを確認できます。アクセスできる場合は、ポートで何かがリッスンしているかどうかを確認できます。 wireshark
またはその他のパケットスニファで確認できるtcpリクエストを含む3つの異なるシナリオと、表示される内容を次に示します。
1)ファイアウォールがリクエストを拒否しました
ICMPメッセージが返され、リクエストを行うツールはすぐにこの影響を通知します(「到達不能、管理者による禁止」など)。 「ツール」とは、リクエストの送信に使用しているクライアントを意味します(私はtelnet
を使用しました)。メッセージの詳細1 ファイアウォールの構成方法によって異なりますが、おそらく「ポート到達不能」が最も一般的です。
「ホストへのルートがありません」はこれを示している可能性がありますが、より微妙なルーティング問題を示している可能性もあります。
2)ファイアウォールがパケットをドロップする
返信がないため、タイムアウトになるか退屈するまで、ツールは待機します。
3)ファイアウォールはパケットを許可します(またはファイアウォールはありません)が、ポートで何もリッスンしていません。
TCP RST/ACKメッセージが返されます。TCPプロトコルではこれが必要です。つまり、ポートで何も待機していない場合、OSそれ自体がこの返信を送信します。これは、ツールが報告する内容だけに基づいてこれを#1と区別するのが難しい場合があります。これはmay両方のケースで同じことを言うためです(ただし、おそらくこれを「接続が拒否されました」と#1、「ネットワークに到達できません」)。クライアントマシンのパケットスニファで観察されます。シナリオ#1(ICMP拒否メッセージ)と#3(TCP RST/ACKメッセージ)は明確に区別されます。
ここでの唯一のオプションは、パケットがファイアウォールによって許可され、何かがリッスンしているため、接続が成功することです。
言い換えると、一般的にネットワークが適切に機能していると想定します。#1または#2を取得した場合、ファイアウォールがポートへのアクセスをアクティブに妨げていることを意味します。 #3はサーバーが稼働していないがポートにアクセスできる場合に発生します。もちろん(暗黙的)#4は接続に成功しています。
コマンド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アドレスの後のコロンに続く番号です(たとえば、0.0.0.0:111はポート111になります)。
IPアドレスはLocalおよびForeign Addressesを示します。 Localはシステムですが、ForeignはTCPポートに接続するか、TCPポートの1つに接続するアドレスです。
したがって、ポート22の場合、それは私のシステムで実行されているsshデーモンです。つまり、接続の場合は[〜#〜] listening [〜#〜]です。誰かがssh
デーモンに接続しようとすると、自身のコピーを分岐し、その接続を別のポートにプッシュします。TCPポート22は、追加の接続のために開いたままにしておきます。
ファイアウォール構成の構成とステータスは、ファイアウォール/ OS固有です。
あなたができることはserver2からそれを試すことです:
nmap server1
最近同じリクエストがあり、スレッドに来ました。次のようにncコマンドを使用して、FWで開いているポートをスキャンし、出力をクエリすることができました。
nc -v -w 1 -z -s *srcIP destIP port* 2>&1 | grep timed > /dev/null && echo closed || echo open
基本的に、「タイムアウト」になった場合、FWでポートが開いていないことを意味します。
Www.firewallruletest.comなどのオンラインツールを使用して、外部ホストがTCP接続を確立できるかどうかを確認できます。