ポート8080でリッスンしているソフトウェアを備えた仮想化CentOSマシンがあります。SELinuxをオフにして、すべてのiptablesをフラッシュしました(したがって、ルールは設定されていません)。 netstat -nap | grep 8080
で、ポートが実際に開いていることを確認しました。 IPアドレスは192.168.1.3です。
他のマシンから、プログラムでそのポートに接続したいのですが、失敗します。 nmap -p 8080 192.168.1.3
を実行すると、ポートが閉じていると表示されます。
Wiresharkで確認すると、接続しているコンピューターがSYNパケットを送信しているのに、応答しているコンピューター(IP 192.168.1.3)がSYN/RESETで応答して接続を中断し、SYNで応答しないことがわかります。/ACKし、送信を継続します。シーケンス番号は正しく、送信側のコンピューターは0を送信し、受信側のコンピューターは1を受信します。
奇妙なことに、他のポートはクライアントマシンからNmapで開いていると検出できますが、8080では検出できません。
何が問題なのですか?
[〜#〜]編集[〜#〜]:
わかりました、今何を信じたらいいのかわかりません。これは私が発見したものです:
「サーバーマシン」で8080をリッスンしているポーグラム(そう呼びましょう)は、Java(サードパーティライブラリを使用)に組み込まれているカスタムメイドのWebサービスです。 EclipseLinkなど)。「サーバーマシン」でnmap localhost
を実行すると、ポートが開いていることがわかります。「クライアントマシン」からnmap 192.168.1.3
を実行すると、ポートが閉じていることがわかります(上記のとおり)。
そして新しい発見:私は単純なJavaアプリを作成しました。このアプリはServerSocketクラスを使用して8080でリッスンし、ポートは「クライアントマシン」から検出可能です。 、それはWebサービスアプリの問題ですか?Webサービスの実行時に「サーバーマシン」(自身をスキャンする場合、localhost)からポートを検出できるのに、「クライアントマシン」からは検出できないのはなぜですか?また、両方のマシンからポート8080を検出できるのはなぜですか? 8080でリッスンする単純なJavaアプリを実行していますか?
netstat -ntpl
tcp 0 0 ::ffff:127.0.0.1:8080 :::* LISTEN 3481/Java
編集2:
バカだ! ::ffff:127.0.0.1:8080
は、プログラムがローカルホストからのみ到達可能であることを意味します。 :-D
すべての人から聞くようにどこを変更すればよいですか?
8080ポートが別の場所にバインドされている可能性がありますか?
ホストマシン上?
とにかく、ネットワーク構成、ブリッジ内の仮想マシンを表示しますか?
古いバージョンのcentosの場合は、「/ etc/hosts。{allow、deny}」に問題がある可能性がありますが、iptablesがある場合は、おそらくそれらを使用していません。それらのファイルが存在するかどうかを確認してください。