なぜか squid proxy を通すとニコニコ動画が見れないので調べてみた.Debian GNU/Linux で squid は squid3 3.3.8-1.1+b1.
どうやらアクセスログによると
1408960XXX.XXX 31 ::1 TCP_MISS/400 231 GET http://smile-fnl00.nicovideo.jp/smile? - HIER_DIRECT/119.110.89.1 - 1408960XXX.XXX 31 ::1 TCP_MISS/400 231 GET http://smile-fnl00.nicovideo.jp/crossdomain.xml - HIER_DIRECT/119.110.89.1 -
みたいな感じになっており,通常は最後の - の箇所が content-type になるのだがそうなっていない.tcpdump や telnet 等で調べてみると smile-fnl00.nicovideo.jp が問答無用で Bad Request,つまり,
HTTP/1.1 400 Bad Request Date: Mon, 25 Aug 2014 10:XX:XX GMT Server: lighttpd Connection: close
を返すらしい.これは squid proxy が
X-Forwarded-For: ::1という怪しげな Header をつけていたのが原因. 127.0.0.1 ならOKだったので ::1 を 127.0.0.1 にすれば良いのだが, やり方がわからないので(どこのIPv6をdisableしたらいいか不明), squid.conf で以下で X-Forwarded-For を付けない設定とする.
-# forwarded_for on +forwarded_for off