2011-04-26 84 views
1

我想從遠程服務器訪問RMI服務。 本地一切工作正常。但是從遠端我得到以下異常:使用iptables從遠程訪問RMI端口

java.net.ConnectException:連接超時

我使用的IP-表,服務器認爲該請求涉及到127.0.0.1,不要在公共IP地址XX.YY.ZZ

的iptables -t NAT -A PREROUTING -p tcp的-d XX.YY.ZZ --dport 1099 -j DNAT --to目的地127.0.0.1: 1099

服務器以「-Djava.rmi.server.hostname = 127.0.0.1」作爲JVM-Argument啓動。

問候, 馬庫斯

回答

1

對我來說,這看起來像濫用iptables。請執行以下操作:

  1. 確保您的應用程序綁定到公共地址。例如通過刪除「-Djava.rmi.server.hostname = 127.0.0.1」。
  2. 如果你仍然無法訪問你的應用程序。添加一個防火牆規則,如iptables:
    $iptables -A INPUT -p tcp --dport 1099 -j ACCEPT
+0

剛剛添加了-s選項以將源IP限制到您的解決方案並且工作正常! – markus 2011-07-28 15:28:09

0

我懷疑DNAT只改變數據包的目的,而不是源。讓RMI服務器接受來自受信任的LAN或VPN的數據包,而不是試圖用iptables重寫數據包是否更有意義?

+0

如果我刪除我的iptable規則我得到以下異常。 java.rmi.AccessException:Registry.Registry.rebind不允許;原產地/xx.yy.zz是非本地主機 – markus 2011-04-26 10:48:30