よくあるご質問

キーワードから探す

  • FAQ検索
  • ID検索

※スペースで区切って複数検索が可能です。

カテゴリで絞り込む

カテゴリから探す

ID:4791
作成日: 2015/11/30
ICAP_BLOCK_FILE_SERVERに指定するホスト名がIPv6を持っている場合、HTTPの規制画面が表示されない

ICAP版でICAP_BLOCK_FILE_SERVERキーによって規制画面表示時の規制画面
ホスト名をデフォルトから変更した時、指定したホスト名がIPv6のAAAAレコード
を持つホストである場合、HTTPサイトの規制画面が表示されません。
HTTPS規制サイトへのアクセス時の規制画面は表示されます。
ICAP_BLOCK_FILE_SERVERに何も指定しない場合、IPアドレスとなりますが
HTTP規制画面は表示されます。原因および対策はありますか。

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 &

上記設定変更後、フィルタリングサービスを再起動します。
対象バージョン
All
対象ビルド
 
一般情報
この内容は参考になりましたか?
ご回答いただきまして、ありがとうございます。
今後の参考にさせていただきます。
Powered by i-ask
Page Top