1

リモート サーバーから RMI サービスにアクセスしたいと考えています。ローカルではすべて正常に動作します。しかし、リモート側から次の例外が発生します。

java.net.ConnectException: 接続がタイムアウトしました

サーバーは、リクエストがパブリックIPアドレスxx.yy.zzではなく127.0.0.1に送信されると信じているIPテーブルを使用しました

iptables -t nat -A PREROUTING -p tcp -d xx.yy.zz --dport 1099 -j DNAT --宛先 127.0.0.1:1099

サーバーは、JVM-Argument として「-Djava.rmi.server.hostname=127.0.0.1」で起動されます。

よろしく、 マーカス

4

2 に答える 2

1

私にとって、これは iptables の誤用のように見えます。以下をせよ:

  1. アプリケーションがパブリック アドレスにバインドされていることを確認します。たとえば、「-Djava.rmi.server.hostname=127.0.0.1」を削除します。
  2. それでもアプリにアクセスできない場合。次のようなファイアウォール ルールを iptables に追加します。
    $iptables -A INPUT -p tcp --dport 1099 -j ACCEPT
于 2011-04-26T11:35:34.700 に答える
0

DNAT はパケットの送信元ではなく送信先のみを変更すると思われます。iptables を使用してパケットを書き換えようとする代わりに、信頼できる LAN または VPN からのパケットを RMI サーバーに受け入れさせる方がはるかに理にかなっているのではないでしょうか?

于 2011-04-26T10:27:52.987 に答える