Squidでv4アクセス優先を強制する

IPv6関連の話が(一部で)盛り上がってきてるし、実際にIPv6アドレスでのアクセスが出来るWebサイトもちらほら出てきているんだけど、なぜかIPv4/IPv6のデュアルスタックなWebサーバなはずなのに、IPv6だとアクセスに失敗するサイトが、ちらほらとあるのがわかってきた。
どっちかというと、Webサイト側の問題であることが多いのだけど、Squidでアクセス先がIPv4/IPv6デュアルスタックであっても、v4でのアクセスを優先するように出来るので、備忘録的にメモ。


設定自体は、3.1以降で ”dns_v4_first" というパラメータを "on" にすればいいと、squid.confには書いてあるんですが、

#  TAG: dns_v4_first
# With the IPv6 Internet being as fast or faster than IPv4 Internet
# for most networks Squid prefers to contact websites over IPv6.
#
# This option reverses the order of preference to make Squid contact
# dual-stack websites over IPv4 first. Squid will still perform both
# IPv6 and IPv4 DNS lookups before connecting.
#
# WARNING:
# This option will restrict the situations under which IPv6
# connectivity is used (and tested). Hiding network problems
# which would otherwise be detected and warned about.
#Default:
# dns_v4_first off

実際のところ、configureする際に "--enable-internal-dns" オプションをつけてから、コンパイルしないとこの設定が有効にならないという…。
まぁ、公式サイトにあるリファレンスを読めば、

Requires:	--enable-internal-dns

って、書いてあるんですけどね。

で、ディストリビューション付属のSquidパッケージだと "--enable-internal-dns" が付いてない状態でパッケージングされているものがあるようなので、必要に応じてリコンパイルなり、パッケージの作り直しをする必要があります。
ちなみに、debパッケージでは、 "--enable-internal-dns" ナシでした。

"--enable-internal-dns" 付きでコンパイルしたsquidで、 "dns_v4_first on" にすると

  • IPv4オンリー →フツーにアクセスできる
  • IPv4/IPv6デュアルスタック →IPv4の経路でアクセス
  • IPv6オンリー →フツーにアクセスできる
    #知っている限りでは、http://ipv6.sony.co.jp/は、AAAAレコードしか無い

と、いう形でアクセスするようになります。

なんで、こんな設定のことを調べたかというと、「アクセス出来ないサイトがあるよ~」と言われて調べてみると、Aレコード、AAAAレコードの両方が指定されているのに、IPv6で見に行くと "404 Not Found" を返してくるWebサーバがあったり、タイムアウトしてしまうというWebサーバがあったりすることが判ったからなのですよ…。orz

IPv4ネットワークとIPv4/IPv6デュアルスタックネットワークに繋がっているProxyサーバでSquidを動かしているので、デュアルスタックなWebサイトであれば、フツーにデュアルスタックなネットワーク側からアクセスが出来る環境なんですけどねぇ。
Proxyサーバの/etc/hostsに、そのサイトのIPv4アドレスを書いてやればいいんだけど、「いちいちhostsファイルをメンテするのは面倒。当面デュアルスタックなWebサイトでも、v4でのアクセスを優先出来るようにしておけば…。」ってのが事の発端だったりします。

トラックバック(0)

コメントする