Httpページを提供するリモートサーバーのポート9100で実行しているアプリがあります。サーバーにsshした後、localhost 9100をカールし、応答を受け取ります。
ただし、http://ip:9100
を使用してブラウザから同じアプリにアクセスすることはできません
また、ローカルPCからtelnetを使用できません。どうすればデバッグできますか?特定のIPとポートの組み合わせをtracerouteして、ブロックされている場所を確認する方法はありますか?
Linuxのツール/コマンド/ユーティリティは大歓迎です。
ありがとう、ムルタザ
まず、アプリケーションがバインドされているIPアドレスを確認します。たとえば、ローカルアドレスにのみバインドできます。これは、ファイアウォールの状態に関係なく、別のマシンからは表示されないことを意味します。
Nmapなどのポートスキャナーを使用して、ポートが開いていて外部から見えるかどうかを確認できます。ポートが閉じている(そこにリッスンしていない)、開いている(正常に表示できる)、またはフィルターされている(たとえば、ファイアウォールによる)。
この目的でデフォルトのtraceroute
コマンドを使用すると、インストールするものは何もありません。
traceroute -T -p 9100 <IP address/hostname>
-T
引数は、UDPの代わりにTCPプロトコルが使用されるように必要です。
tcptraceroute xx.xx.xx.xx 9100
見つからなかった場合はインストールできます
yum -y install tcptraceroute
または
aptitude -y install tcptraceroute
サーバーで tcpdump
を使用して、クライアントがサーバーに到達するかどうかを確認できます。
tcpdump -i any tcp port 9100
また、ファイアウォールが着信接続をブロックしていないことを確認してください。
編集:コンソールで読みたくない場合は、ダンプをファイルに書き込んで、クライアントのwiresharkで表示することもできます。
2番目の編集:経由でポートに到達できるかどうかを確認できます
nc ip 9100 -z -v
ローカルPCから。
次のコマンドを使用して実行できます:tcptraceroute -p destination port destination IP
。など:tcptraceroute -p 9100 10.0.0.50
ただし、システムにtcptracerouteパッケージをインストールすることを忘れないでください。 tcpdumpおよびncはデフォルトでシステムにインストールされます。よろしく