西山和広です。
あるサーバーから RSS をチェックしているとたまに 404 Not Found が出ていて、 手元のブラウザーで開くと正常に見えるので、何かおかしいミラー があるのでは ないかと思っているのですが、報告先がよくわからない&英語で説明できる気が しないので、誰か報告をお願いします。
問題がおきているサーバーからアクセスすると以下のような感じになっています。
% curl -v http://www.debian.org/security/dsa.rdf * Hostname was NOT found in DNS cache * Trying 2001:41c8:1000:21::21:4... * Trying 130.89.148.14... * Connected to www.debian.org (2001:41c8:1000:21::21:4) port 80 (#0)
GET /security/dsa.rdf HTTP/1.1 User-Agent: curl/7.38.0 Host: www.debian.org Accept: */*
< HTTP/1.1 404 Not Found < Date: Wed, 01 Nov 2017 14:22:01 GMT * Server Apache is not blacklisted < Server: Apache < X-Content-Type-Options: nosniff < X-Frame-Options: sameorigin < Referrer-Policy: no-referrer < X-Xss-Protection: 1 < Content-Length: 278 < Content-Type: text/html; charset=iso-8859-1 < <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>404 Not Found</title> </head><body> <h1>Not Found</h1> <p>The requested URL /security/dsa.rdf was not found on this server.</p> <hr> <address>Apache Server at www.debian.org Port 80</address> </body></html> * Connection #0 to host www.debian.org left intact % curl -v http://www.debian.org/ * Hostname was NOT found in DNS cache * Trying 2001:41c8:1000:21::21:4... * Trying 5.153.231.4... * Connected to www.debian.org (2001:41c8:1000:21::21:4) port 80 (#0)
GET / HTTP/1.1 User-Agent: curl/7.38.0 Host: www.debian.org Accept: */*
< HTTP/1.1 200 OK < Date: Wed, 01 Nov 2017 14:27:43 GMT * Server Apache is not blacklisted < Server: Apache < X-Content-Type-Options: nosniff < X-Frame-Options: sameorigin < Referrer-Policy: no-referrer < X-Xss-Protection: 1 < Last-Modified: Fri, 08 Jan 2016 22:27:31 GMT < ETag: "1d8-528da17d9b160" < Accept-Ranges: bytes < Content-Length: 472 < Vary: Accept-Encoding < X-Clacks-Overhead: GNU Terry Pratchett < Content-Type: text/html < <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> <HTML> <HEAD> <TITLE>Welcome to senfter!</TITLE> </HEAD> <BODY>
<H1>Welcome to senfter!</H1>
This is senfter, a system run by and for the <a href="https://www.debian.org/"
Debian Project</a>.
She does stuff. What kind of stuff and who our kind sponsors are you might learn on <a href="https://db.debian.org/machines.cgi?host=senfter">db.debian.org</a>.
<P> <HR NOSHADE /> <FONT size="-1">DSA</FONT>
</BODY> </HTML> * Connection #0 to host www.debian.org left intact % host www.debian.org www.debian.org has address 5.153.231.4 www.debian.org has address 149.20.4.15 www.debian.org has address 130.89.148.14 www.debian.org has address 128.31.0.62 www.debian.org has IPv6 address 2001:4f8:1:c::15 www.debian.org has IPv6 address 2001:67c:2564:a119::148:14 www.debian.org has IPv6 address 2001:41c8:1000:21::21:4
-- |ZnZ(ゼット エヌ ゼット) |西山和広(Kazuhiro NISHIYAMA)
https://www.debian.org/security/dsa.rdf ではどうでしょうか。
From: Kazuhiro NISHIYAMA zn@mbf.nifty.com Subject: [debian-users 00172] www.debian.orgのミラーが変? Date: Wed, 1 Nov 2017 23:43:38 +0900 (JST)
あるサーバーから RSS をチェックしているとたまに 404 Not Found が出ていて、
逆に、OKな場合もありますか?
問題がおきているサーバーからアクセスすると以下のような感じになっています。
私のマシンからでも * Connected to www.debian.org (5.153.231.4) port 80 (#0) ではありますが(IPv4環境なので)、
< HTTP/1.1 404 Not Found
となります。
普通のウェブブラウザでHTTPアクセスすると、HTTPSに、つまり対応する https://www.debian.org/%E3%80%9C にリダイレクトされるので、HTTP側は もうメンテされていないのでは、と思われます。
curlは、-Lオプションを付けないとき、レスポンス302でリダイレクト しないようです。
結論としては、 ・www.debian.orgのウェブサービスはHTTPS化された ・HTTPアクセスはHTTPSに302リダイレクトされる ・「RSSをチェックしている」プログラムが302リダイレクト非対応 ということでしょうか。
ちなみに、強制HTTPS化によって使い物にならなくなっていた “www.jp.debian.org”ですが、現時点でDNSで引けなくなっています。 (HTTPアクセスは無条件で https://www.debian.org にリダイレクト、 直接URL指定だと、証明書も単純にミラーしていたので警告が出ていた)
ftp.jp.debian.orgは生きていて、cdn.debian.or.jpのCNAMEに なっているようです。
西山和広です。
On Fri, 03 Nov 2017 20:31:17 +0900, KISE Hiroshi wrote:
https://www.debian.org/security/dsa.rdf ではどうでしょうか。
今は正常なサーバーに繋がっていたので、 /etc/hosts で 2001:41c8:1000:21::21:4 www.debian.org に固定して試して見たところ、https だと大丈夫でした。
あるサーバーから RSS をチェックしているとたまに 404 Not Found が出ていて、
逆に、OKな場合もありますか?
OK なときはちゃんと https にリダイレクトされて情報が取れています。 (たぶん繋がっている IP アドレスが違う。)
問題がおきているサーバーからアクセスすると以下のような感じになっています。
私のマシンからでも
- Connected to www.debian.org (5.153.231.4) port 80 (#0)
ではありますが(IPv4環境なので)、
< HTTP/1.1 404 Not Found
となります。
普通のウェブブラウザでHTTPアクセスすると、HTTPSに、つまり対応する https://www.debian.org/%E3%80%9C にリダイレクトされるので、HTTP側は もうメンテされていないのでは、と思われます。
なるほど。
https でアクセスした時の応答ヘッダーをよく見てみると HSTS (HTTP Strict Transport Security) が Strict-Transport-Security: max-age=15552000 と設定されるようなので、ブラウザーでみるときには一度正常に https に繋がってしまうと、HSTS を覚えてしまって http に アクセスしにいかないので、普通は問題が起きなさそうな感じに 見えました。
curlは、-Lオプションを付けないとき、レスポンス302でリダイレクト しないようです。
これは問題の切り分けのためリダイレクトを追いかけないように curl を使っているだけで、実際に使っている RSS チェッカーは ruby の open-uri を使っているので、リダイレクトに対応しています。
結論としては、 ・www.debian.orgのウェブサービスはHTTPS化された ・HTTPアクセスはHTTPSに302リダイレクトされる ・「RSSをチェックしている」プログラムが302リダイレクト非対応 ということでしょうか。
- HTTPS 化されて HTTP 側がちゃんとメンテナンスされていないミラーがある - 正常に https で見たことのある HSTS 対応ブラウザーを使うと http に つなぎに行かないので、問題に気づかない - RSS チェッカーは HSTS に対応していないので毎回 http にアクセスしに いって、ちゃんとメンテナンスされていないミラーにあたると、ちゃんと リダイレクトされずに 404 エラー
ということのようです。
とりあえず手元では https にすれば回避できる(し、その方が安全)と わかったので、参照する URL を変更しておこうと思います。
ちなみに、強制HTTPS化によって使い物にならなくなっていた “www.jp.debian.org”ですが、現時点でDNSで引けなくなっています。 (HTTPアクセスは無条件で https://www.debian.org にリダイレクト、 直接URL指定だと、証明書も単純にミラーしていたので警告が出ていた)
ftp.jp.debian.orgは生きていて、cdn.debian.or.jpのCNAMEに なっているようです。
From: Kazuhiro NISHIYAMA zn@mbf.nifty.com Subject: [debian-users 00176] Re: www.debian.orgのミラーが変? Date: Sat, 04 Nov 2017 12:54:23 +0900
- HTTPS 化されて HTTP 側がちゃんとメンテナンスされていないミラーがある
- 正常に https で見たことのある HSTS 対応ブラウザーを使うと http に つなぎに行かないので、問題に気づかない
- RSS チェッカーは HSTS に対応していないので毎回 http にアクセスしに いって、ちゃんとメンテナンスされていないミラーにあたると、ちゃんと リダイレクトされずに 404 エラー
ということのようです。
なるほど。HSTSの機能でhttpsに切り換えていたわけですね。 curlの実行結果でhttp側の「<H1>Welcome to senfter!</H1>」が 見えていた理由がわかりました。 (このホストは、senfter.debian.org らしい)
「curlで見れば、http側が実は古いミラー状態で放置されて いるかわかるかも」と思いつきました。そこで、対応する IPv4のIPアドレスに直接curlでアクセスしてみたところ、 senfter以外は302リダイレクトを返してきました。
よって、「httpがいまだにメンテされている」ホストではなくて 「httpにアクセスすると302を返す設定がまだ生きている」ホスト なののかもしれません。 senfter.debian.org は最近導入された(予想)のでhttp側の リダイレクト設定はされていない、のではないかと。 それで良いのか悪いのかはわかりません。
いま試したところ、senfter以外につながったので、それっぽい 結果になりました。
rubyのopen-uriは、リダイレクトには対応しているとのことなので、 たまたまこのようなサーバーにつながれば、結果として正常な出力が 得られていた、ということですね。
$ curl -v http://www.debian.org/security/dsa.rdf * Trying 130.89.148.14... * TCP_NODELAY set * Trying 2001:41c8:1000:21::21:4... * TCP_NODELAY set * Immediate connect fail for 2001:41c8:1000:21::21:4: ネットワークに届きません * Trying 2001:4f8:1:c::15... (中略) * Connected to www.debian.org (130.89.148.14) port 80 (#0)
GET /security/dsa.rdf HTTP/1.1 Host: www.debian.org User-Agent: curl/7.56.1 Accept: */*
< HTTP/1.1 302 Found (中略) < Location: https://www.debian.org/security/dsa.rdf < Content-Length: 287 < Content-Type: text/html; charset=iso-8859-1 < <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>302 Found</title> (以下略)
補足。
$ host senfter.debian.org senfter.debian.org has address 5.153.231.4 senfter.debian.org has IPv6 address 2001:41c8:1000:21::21:4 senfter.debian.org mail is handled by 10 muffat.debian.org. senfter.debian.org mail is handled by 10 mailly.debian.org.
西山和広です。
At Sat, 04 Nov 2017 16:34:12 +0900 (JST), KISE Hiroshi wrote:
補足。
$ host senfter.debian.org senfter.debian.org has address 5.153.231.4 senfter.debian.org has IPv6 address 2001:41c8:1000:21::21:4 senfter.debian.org mail is handled by 10 muffat.debian.org. senfter.debian.org mail is handled by 10 mailly.debian.org.
k-of.jp/2017 の時に BTS に報告すればいいと聞いたので、 確認方法を調べてから報告しようかと思っていたら、 いつの間にか直っていたようです。
% curl -H 'Host: www.debian.org' 5.153.231.4 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>302 Found</title> </head><body> <h1>Found</h1> <p>The document has moved <a href="https://www.debian.org/">here</a>.</p> <hr> <address>Apache Server at www.debian.org Port 80</address> </body></html> % curl -H 'Host: www.debian.org' 2001:41c8:1000:21::21:4 curl: (3) IPv6 numerical address used in URL without brackets zsh: exit 3 curl -H 'Host: www.debian.org' 2001:41c8:1000:21::21:4 % curl -H 'Host: www.debian.org' '[2001:41c8:1000:21::21:4]' <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>302 Found</title> </head><body> <h1>Found</h1> <p>The document has moved <a href="https://www.debian.org/">here</a>.</p> <hr> <address>Apache Server at www.debian.org Port 80</address> </body></html>