問題はこれらの2つの機能です
1)java.net.InetAddress.getAllByName(String)
と
2)javax.servlet.ServletRequest.getRemoteAddr()
非常に異なります。最初の関数は標準のJavaランタイムの一部であり、2番目の関数はJavaEEコンテナによって実装されます。Tomcat7を使用しているため、オプションのゾーンパラメータ%0が追加されています。
結論として、あなたはあなたのようにIPアドレスで文字列比較を行うべきではありません。
あなたが本当にしなければならないことは、を使用することorg.apache.catalina.filters.RemoteIpFilter
です。これは、明確に定義された方法で実行しようとしていることを実行します。
例:
<filter>
<filter-name>RemoteIpFilter</filter-name>
<filter-class>org.apache.catalina.filters.RemoteIpFilter</filter-class>
<init-param>
<param-name>allowedInternalProxies</param-name>
<param-value>192\.168\.0\.10|192\.168\.0\.11</param-value>
</init-param>
<init-param>
<param-name>remoteIpHeader</param-name>
<param-value>x-forwarded-for</param-value>
</init-param>
<init-param>
<param-name>remoteIpProxiesHeader</param-name>
<param-value>x-forwarded-by</param-value>
</init-param>
<init-param>
<param-name>protocolHeader</param-name>
<param-value>x-forwarded-proto</param-value>
</init-param>
</filter>
詳細については、 http://tomcat.apache.org/tomcat-7.0-doc/config/filter.html#Remote_IP_Filterを参照してください。