当初、この質問を stackoveflow に投稿しましたが、このサイトの方が適しているというアドバイスを受けました。
あるマシンに展開されたJettyサーバーにLAN外の別のマシンからアクセスしようとしていますが、うまくいきません。このスレッドそして、@ヨアキム・エルドフェルトしかし、動作しませんでした。私のコードは以下の通りです:
Server server = new Server();
// HTTP connector
ServerConnector serverConnector = new ServerConnector(server, 1, 1);
serverConnector.setHost("0.0.0.0"); <-
serverConnector.setPort(8080);
serverConnector.setIdleTimeout(30000);
// Set the connector
server.addConnector(serverConnector);
次のコードを使用して、別のリモート サーバーからサーバーにアクセスしようとしました。
String postUrl = "http://" + myIP + ":8080"; // myIP is set to the public IP address of Jetty Server
System.out.println("Post URL: " + postUrl);
RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(120 * 1000).build();
try (CloseableHttpClient httpClient = HttpClientBuilder.create().setDefaultRequestConfig(requestConfig).build();) {
HttpPost httpPostRequest = new HttpPost(postUrl);
...
ただし、次の例外がスローされます。
HttpPostConnectException: Connect to 123.4.56.78:8080.. failed: Connection refused: connect
このエラーの原因は何ですか? プロンプトが表示されたらファイアウォール アクセスを許可したので、ファイアウォールの問題ではないと思います。ポートは8080
他のプロセスにも使用されていません。複数のポートを試しましたが、効果はありませんでした。
ありがとう
答え1
私の推奨事項のいくつかを回答に移します。基本的なネットワークの知識が不足していますので、少し読んでみてください(ここたとえば、次のような基本事項があります。
- ローカル IP (ネットワーク 192.168.xx、10.xxx など) はインターネットからアクセスできません。インターネット プロバイダーに直接接続されているデバイス (自宅のルーター) のみがインターネットから直接アクセスできます。
- 自宅のルーターに接続してインターネットを閲覧すると、いくつかのことが起こります。ローカル IP はインターネットからアクセスできないため、自宅のルーターはローカル IP を隠し、パブリック IP に置き換えます。これを行うと、ルーターは接続を記録して応答を処理できるようにします。応答が到着すると、同じプロセスが逆になります。ルーターがテーブル内で着信パケットに一致する接続を見つけた場合、パブリック IP はプライベート IP に置き換えられ、応答はネットワーク内の適切なデバイスに転送されます。このプロセスは、NAT(ネットワークアドレス変換)
- NAT は、ホーム ネットワーク内のデバイスを保護します (デバイスはインターネットに接続できますが、インターネットはデバイスに接続できません)。ただし、ホーム ネットワークのデバイスをインターネットから接続可能にする場合は困難になります。これは、ルーターがすべての着信データ パケットの処理方法を把握する必要があるためです。デフォルトでは、ホーム ネットワーク内のどのデバイスもその接続を開かなかった場合、着信データ パケットはドロップされます。
これで、なぜ複数のIPアドレスを持っているのかが明らかになったはずです。GoogleはパブリックIPしか見ることができません。Jettyサーバーをインターネットからアクセスできるようにするには、ポート転送基本的には、自宅のルーター内にルールを作成します。ポート8080で受信したすべてのTCPパケットを内部デバイスXYに転送します。「これを行う方法については、ルーターのマニュアルを確認する必要があります。ほとんどのルーターには、設定用の Web インターフェイスがあります。これで混乱が解消されることを願っています...