ICAP_BLOCK_FILE_SERVERで指定したホスト名がIPv6のAAAAレコードを持っており、
そのAAAAレコードのIPがISWFのホストとは異なるIPの時、HTTPの規制画面を
応答できず、filtering.logに以下のようなエラーが表示されます。
【filtering.logの抜粋】
WARN yyyy-mm-dd hh:mm:ss,xxx [08320:B35F5700] 040102 HTTP produce unexpected exception.
ERROR yyyy-mm-dd hh:mm:ss,xxx [08320:B35F5700] 041906 AMS_Exception_HTTP:042406 Failed to get a regulation html from proxy.
ERROR yyyy-mm-dd hh:mm:ss,xxx [08320:B35F5700] 041907 AMS_Exception_HTTP is cought.
ICAP版ではHTTP規制画面する際、ISWFのフィルタリングサービスから規制画面を
応答するサービスに対して疎通ができることが条件になります。
ICAP_BLOCK_FILE_SERVERで指定したホスト名がIPv6のAAAAレコードを持ち、
DNSでの名前解決でAAAAが応答され、そのIPがISWFの規制画面サーバのIPとは
異なる場合、フィルタリングサービスから規制画面のサーバへ疎通ができず
規制画面が表示されない場合があります。OS側のhostsファイルによって
ICAP_BLOCK_FILE_SERVERで指定したホスト名とIPv4を関連づけても、IPv6が
優先されるため、hostsによる名前解決ができないことがあります。
以下のいずれかの対応を行うことで、この現象を回避できます。
【対応方法1】 ISWFのサーバでDNSによる名前解決を行わない
/etc/nsswitch.confの"hosts:"エントリを"files dns"から"files"のみに
変更します。
変更前)hosts: files dns
変更後)hosts: files
上記のように変更することで、規制画面表示時にDNSによる名前解決が
行われず、hostsに記載したIPv4アドレスで名前解決されます。
※注意※
nsswitch.confで"hosts:"エントリを"files"のみに変更した場合、当該サーバでは
DNSによる名前解決ができません。ISWF以外のプログラムに影響がないことを
確認したうえで変更するようにしてください。
【対応方法2】 規制画面サーバへの接続にIPv6のループバックアドレスを使用する
ICAP_BLOCK_FILE_SERVERで指定したホスト名とIPv6のループバック(::1)を
関連付けることで、ISWFのフィルタリングサービスと規制画面サービスとの
疎通可能な状態にし、規制画面を表示せる方法があります。
【/etc/hostsの例】
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 [ICAP_BLOCK_FILE_SERVERで指定したホスト名]
上記設定を行ったうえで、規制画面サービスがIPv6でListenするように
amproxyexeの中のJava起動オプションを変更します。
<インストールディレクトリ>/bin/amsproxyexeを修正してください。
"-Djava.net.preferIPv4Stack=true"を
"-Djava.net.preferIPv4Stack=false"に変更します。
(変更前)
${_RUNJAVA} -Dns.prs=proxy -server -Xmx${HEAP}m -XX:NewRatio=1 -Djava.net.preferIPv4Stack=true -XX:ErrorFile=/usr/local/intersafe/hs_err_proxy.log -XX:HeapDumpPath=/usr/local/intersafe/oom_hd_proxy.hprof -XX:+HeapDumpOnOutOfMemoryError -Dns.path="${prefix_prop}" -Dns.cachePort=${NSCACHE_PORT} -jar "${NSCMMD}" start &
(変更後)
${_RUNJAVA} -Dns.prs=proxy -server -Xmx${HEAP}m -XX:NewRatio=1 -Djava.net.preferIPv4Stack=false -XX:ErrorFile=/usr/local/intersafe/hs_err_proxy.log -XX:HeapDumpPath=/usr/local/intersafe/oom_hd_proxy.hprof -XX:+HeapDumpOnOutOfMemoryError -Dns.path="${prefix_prop}" -Dns.cachePort=${NSCACHE_PORT} -jar "${NSCMMD}" start &
上記設定変更後、フィルタリングサービスを再起動します。