2011-08-02 28 views
5

ホスト名を対応するIPに解決しようとしています。InetAddress.getByNameがプロキシの背後で失敗する

私の環境は、システム環境設定(自動プロキシ設定)を介して.pacファイルで設定されたプロキシサーバーの背後にある企業ネットワーク内のMacです。これまでのところすべてが正常に機能しており、社内ネットワークの内外にあるリソースにアクセスできます。 InetAddress.getByName("host.local");

しかし、私は外部のホスト名を使用する場合、私はUnknownHostExceptionが出る::私のネットワーク内のホストを解決

は完全に正常に動作 InetAddress.getByName("google.com");

Exception in thread "main" java.net.UnknownHostException: google.com 
    at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method) 
    at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:850) 
    at java.net.InetAddress.getAddressFromNameService(InetAddress.java:1201) 
    at java.net.InetAddress.getAllByName0(InetAddress.java:1154) 
    at java.net.InetAddress.getAllByName(InetAddress.java:1084) 
    at java.net.InetAddress.getAllByName(InetAddress.java:1020) 
    at java.net.InetAddress.getByName(InetAddress.java:970) 
    at Test.main(Test.java:67) 

を生成し(私はここで少し驚いたInet6AddressImpl

私が理解する限り、InetAddress.getByNameはネイティブメカニズムを使用してホスト名を解決します。だから私は、エラーは、Javaのjvm内のプロキシ設定が不足していることによって引き起こされるとは思わない。

他のすべてがうまくいけば、他に何ができますか?

一部(たぶん)有用な追加情報:

  • 私はMacBookの、ifconfigはlo0でインターフェースを示し、gif0、stf0、EN0、FW0、EN1使用しています - IPv4では、>ネットワークに接続します住所。コンソール上

  • nslookup google.comは同じ例外

このエラーの原因についての任意のアイデアを生み出し、ネットワーク内のWindowsマシン上** server can't find google.com: NXDOMAIN

  • 同じコードを返しますか? また、javaのホスト名を解決する他の方法はありますか?

  • 答えて

    5

    企業のDNSサーバは、Interentドメインを解決できないようにします。

    これは、nslookupクエリが失敗するという事実によってサポートされています。

    企業ポリシーに投票しておらず、開発マシンを会社の敷地内に置かなければならない場合は、何もできません。

    +0

    回答ありがとうございました。私はネットワーク専門家ではありませんが、企業ネットワーク内からgoogle.com(もちろんこのサイト)にアクセスできないというわけではありませんか? 私は、pacファイルがプロキシを使用するときと使用しないときのルールを定義していることを知っています。おそらく、jvmからの要求に対してpacを "実行"することに関連する問題でしょうか? – Benjamin

    +1

    アレクサンダーは正しいです。トラフィックはプロキシに送信されることでGoogleに到達します。プロキシは、トラフィックをGoogle Webサーバーに送信する前にDNSルックアップ自体を行います。 – EricLaw

    +0

    @ベンジャミン。企業のブラウザからgoogle.comにアクセスできる場合は、Javaプログラムのプロキシを設定する必要があります。この記事を読むにはヘルプ:http://download.oracle.com/javase/6/docs/technotes/guides/net/proxies.html –

    0

    this postで説明したように、カスタムDNSはSun-JVMのみの設定で設定できます。私はこの同じ解決問題を持っていましたが、それをDNSサーバとしても設定することによって、プロキシにルックアップを明示的に求めることができました。 YMMV

    System.setProperty("sun.net.spi.nameservice.nameservers", "<my-proxy-ip>"); 
    System.setProperty("sun.net.spi.nameservice.provider.1", "dns,sun"); 
    
    関連する問題