これが方法です-
public static String getHostByAddr(byte[] addr) throws UnknownHostException {
Name name = ReverseMap.fromAddress(InetAddress.getByAddress(addr));
final String[] servers = new String[] {"208.67.220.220", "208.67.222.222"};
final Resolver res = new ExtendedResolver(servers);
final Lookup lookUp = new Lookup(name, Type.PTR);
lookUp.setResolver(res);
Record[] records = lookUp.run();
if (records == null) {
throw new UnknownHostException();
}
return ((PTRRecord) records[0]).getTarget().toString();
}
そして、これが上記のメソッドへの呼び出しです-
final InetAddress ip = InetAddress.getByName("198.154.218.168");
final byte[] bytes = ip.getAddress();
final String host = getHostByAddr(bytes);
System.out.println("Host - " + host);
ほとんどの場合は問題なく動作しますが、IP が複数のドメインにマップされていると失敗します (???)
ここに例があります-
- ここからsecuronix.comの IP を取得します。198.154.218.168 です。
- このIPを上記のメソッドに渡すと、エラーが発生します
- しかし、ここで同じ IP を試してみると、4 つのドメインが一覧表示されます。
DNSJavaでこれを行うことは可能ですか?