IPv6 で IPv6 Ready なサーバの Nginx にアクセスしようとしたら 404 になったのと IPv6 のこれからの話し

IPv6 で自分のブログ(:80)にアクセスしたら 404 になってた件について

私のブログのリファラを辿ってどこからリンクされているのかなと興味があって見てみたのが発端。
なんかはてなブログから参照されているなーと思って私のブログへのリンクが貼られているのに加えてちょっと上に iframe の埋め込みと思われる Nginx の 404 画面が表示されていた。

はてなブログにほほえまーって思ってたらほほえましいのは私の方だった。
そして自分のブログへのリンクを踏んだら 404 になった。
リダイレクトされるはずだと思ってたが Nginx 404 になってる。
もしかして iframe で表示されてた 404 は私のサーバの Nginx が吐き出していたのである。

ここでの原因は Nginx 自身は IPv4 でしかリッスンしない設定になっていたことによるものである。

80 番ポートなんてリダイレクト専用のバーチャルホスト設定する以外に使わない。
こうでもしないと気付かなかったでしょう。

半年前ぐらいに、はてなブログから自分で持ってるこの WordPress ブログに移行してリダイレクトも設定したのだが
リダイレクトの設定したのははてなと WordPress の記事 URL の体系が異なっていたため。
旧来の記事参照アクセスはしばらくこのはてなブログの URL 体系でアクセスしてくるとかんがえられるため 301 リダイレクトをかましている。

IPv6 は最近のキャリア(ISP)はデフォルトでデュアルスタックでインターネット接続可能な IPv6 アドレスを払い出しているので、限界集落一歩手前の実家もご多分に漏れず IPv6 アドレスが払い出されていた。

さくらの VPS 上にサーバーを構築しているので IPv6 GUA(Global Unicast Address) はデフォルトで付与されていたので Route 53 に DNS レコードとして AAAA レコードも一緒に登録しておいたのでした。
IPv6 で遊んでみたいというのもあった。

Nginx のログを抜粋。ちなみに IPv6 のプレフィックスはドキュメント用のものに置換してあります。
IPv4 用の TEST-NET があったり、ドメイン名を example.com にするのと同様に IPv6 にも TEST-NET 相当のものがあります。

2001:db8::50:d7f8:c233:1 - - [01/Jan/2018:10:12:59 +0900] "GET /entry/2014/11/09/232916 HTTP/1.1" 404 564 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Geck
o) Chrome/63.0.3239.84 Safari/537.36" "-"


2001:db8::50:d7f8:c233:1 - - [01/Jan/2018:10:24:34 +0900] "GET /entry/2014/11/09/232916 HTTP/1.1" 404 564 "http://example.com/entry/2015/08/02/022855" "Mozilla/5.0 (Macintosh; Intel Mac
 OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36" "-"


2001:db8::50:d7f8:c233:1 - - [01/Jan/2018:10:29:54 +0900] "GET /entry/2014/11/09/20141109232916/ HTTP/1.1" 404 63388 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML
, like Gecko) Chrome/63.0.3239.84 Safari/537.36" "-"

2001:db8::50:d7f8:c233:1 - - [01/Jan/2018:10:30:55 +0900] "GET /embed/2014/11/09/232916 HTTP/1.1" 404 63358 "http://example.com/entry/2015/08/02/022855" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36" "-"

IPv6 からのアクセスとなっている。
盛大に自分のブログが見れなくなってれば実家についてさて記事書くぞと思ったら気付くはずだったんですが、
SSL 版は default の設定が入っていたので影響を受けなかったのでした。

/embed/ アクセス oEmbed があったのでそのリダイレクトルールも追記しておいた。
こうゆう標準的な埋め込みプロトコルアクセスもあるのね。

Before

server {
    listen 80;

    # from hatenablog access (normal)
    rewrite ^/entry/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/(.+)$ https://blog.pg1x.com/$1/$2/$3/$1$2$3$4/ permanent;
    rewrite ^(.*)$ https://blog.pg1x.com$1 permanent;

}

server {
    listen 443 default ssl;

After

server {
    listen 80;
    listen [::]:80;

    # from hatenablog access (normal)
    rewrite ^/entry/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/(.+)$ https://blog.pg1x.com/$1/$2/$3/$1$2$3$4/ permanent;
    # from hatenablog access (oEmbed)
    rewrite ^/embed/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/(.+)$ https://blog.pg1x.com/$1/$2/$3/$1$2$3$4/embed permanent;
    rewrite ^(.*)$ https://blog.pg1x.com$1 permanent;

}

server {
    listen 443 default ssl;
    listen [::]:443 ssl;

重要なのは listen [::]:80, [::]:443 の記述です。

また、 1.3.4 以上の Nginx であれば ipv6only=on は不要です。

Option ipv6only=on might not be needed anymore and on the contrary potentially create issues.

http://nginx.org/en/CHANGES

Changes with nginx 1.3.4 31 Jul 2012

*) Change: the “ipv6only” parameter is now turned on by default for
listening IPv6 sockets.

[wnoguchi@mx1 ~]$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
http://blog.pg1x.com/entry/2014/11/09/232916
http://blog.pg1x.com/entry/2014/08/12/175950-mac-mavericks-vagrant-omnibus-nokogiri-install-failure

リダイレクトも、 oEmbed もうまく表示されるのを確認したらこれで完了。

これからの IPv6 の話をしよう

これからは IPv6 だと 10 年以上前に言われてぜんぜん IPv4 グローバル IP アドレスがなくなる気配を見せず、当時は IPv6 は私の生きている間にメジャーとなるのだろうかと思っておりました。
どっかで 「 IPv4 は石油みたいなもんだからな 」というブコメを見てなるほどなと思いました。

こうして今に至るわけですが、最近になってじわりじわりと確実にグローバル IPv6 アドレスが浸透しているのを感じます。
Google は普通に IPv6 に対応してるし、 AWS EC2, VPC も IPv6 に対応し始めている。
NURO も INTERLINK も au光 も、UQ WiMAX 等のモバイルルータもデフォルトで IPv6 を払い出しています。
たぶんインターネット接続を電気水道ガスと同じ感覚で使っている人たちは IPv6 が広まってきていることには気付かないと思います。
まあ、気づかないうちに IPv6 が広まっていくのが理想だと思います。
こうしてインターネットはありふれたインフラとなっているわけですね。
IPv4 がレガシーな Layer 3 プロトコルになるのも近いなと思った次第です。

しかし先日のMITのクラスA IPアドレスを一部 Amazon に売却したのには驚いた。
クラスA グローバルIPアドレスなんて滅多なことではお目にかかれない。
具体的には 18.145.0.0/16 のネットワークを売ったのかな?
ゆうに 65536 個(ネットワークアドレスとブロードキャストアドレスを除けば 65534 個)の連続したアドレス空間。

  1. MIT No Longer Owns 18.0.0.0/8 – Slashdot
  2. Whois-RWS
  3. MIT no longer owns 18.0.0.0/8

マイナンバーの通知が来たので個人番号カード通知申請をPCからしてみた

本日国保国民年金、住民税という年貢を納付してきました。
占めて1.5MBA。
お財布が・・・。

ついに我が家(独身)にもマイナンバーが

そしてついに土曜日に郵便で来ました。
簡易書留で来ました。

とりあえず「通知カード」でマイナンバーが届いてこれで終わりかなって思っていたら「個人番号カード交付申請書」なるものが同封されていた。
なにこれ?って見てみると、個人を証明する個人番号カードと電子証明書の交付を申請する書類を追加で書く必要があるらしい。

f:id:wnoguchi0727:20151102125636j:plain

私は車を持っていない地方の交通弱者なので、はがき一本出すのも結構大変。
とりあえず最近撮影した履歴書用の写真があったなと思ったらサイズが合っていない・・・。
写真撮影からかーと妙なだるさを覚えて案内書を繰っていくと「こんな申請方法も」という節が。

f:id:wnoguchi0727:20151102125659j:plain

なるほど、スマホ、PC、証明写真機から申請できるらしい。
証明写真データならDropboxに保存してある。
国税調査のときのインターネットでの調査といい、便利な世の中になったなー。

さっそく手続きしてしまう

個人番号カード 申請」で検索して出てくる以下のページにアクセスする。

個人番号カード総合サイト https://www.kojinbango-card.go.jp/kojinbango/

f:id:wnoguchi0727:20151102125128p:plain

SSL

さすがにかなり機密性の高い個人情報を扱うだけあって SSL 証明書はしっかりしているようだ。
サイト全体も SSL 化されている。

  1. どうやら最新の TLS1.2 を使っているらしい。
  2. SHA-256 で発行されいるようなので Chrome で見ても問題ない。
  3. 「接続は古い暗号スイートにより暗号化されています」というのは微妙に気になった。

f:id:wnoguchi0727:20151102131419p:plain

f:id:wnoguchi0727:20151102131424p:plain

f:id:wnoguchi0727:20151102132504p:plain

中身解析

ソースとレスポンスヘッダを見ると Apache を採用しているよう。
なんと Shift_JIS(CP932) 。
かつ HTML5 というアグレッシブなコーディング。

Content-Type:text/html;charset=windows-31j

画面遷移のURLを見ると *.do になっていたので Struts 臭がするが、 Struts1 は使っていないはずと信じてそこは気にしない。

使い勝手

僕の画像は横になっちゃってる。アップロードしたらうまいことやってくれないかなーと思っていたけど、
アップロードした画像を右回転できるところ。
便利だなーと思った。

f:id:wnoguchi0727:20151102134207p:plain

最後に

もろもろの申請を終わらせてふぅと一息をつく。
最後に見ると交付通知書がきたら取りに行くステップがあるらしい。うーむ。まあしょうがないかな。

f:id:wnoguchi0727:20151102125547j:plain

参考リンク

  1. nginx – httpsだからというだけで安全?調べたら怖くなってきたSSLの話!? – Qiita
  2. Google ChromeにおけるSHA-1版SSLサーバ証明書に対する警告表示等について|お知らせ|SSLサーバ証明書 ジオトラスト
  3. Extended Validation 証明書 – Wikipedia