
IPv4アクセス対応
今年の6月から我が家のネットワークが100M光から10G光になったことで、IPv4のみのネットワークからのアクセスができなくなりました。IPv4とIPv6の共存が進んできた現状、IPv4だけのネットワークは日本の場合、約1割程度ということでIPv6での自宅サーバー運用に踏み切りましたが、思いのほかIPv4だけで運用しているプロバイダーが多くあるようで私も少し驚きました。 またスマホ回線でもIPv6対応ができていないプロバイダーがあるようです。
そんなわけで、6月から約2か月間、IPv6だけの対応になっていましたが、IPv4だけサポートしているプロバイダーが多いこと、そしてこの秋から計画しているあるプロジェクトでどうしても全世界、ユニバーサルな情報提供が必要となるため、重い腰を上げてIPv4対応をすることにしました。
やり方としては
- 家に来ている光回線のスピードダウンでPPPoEが可能なように設定する
- CloudflareのDNSを使う
- リバースプロキシを使う
この3つくらいあるのですが、1は絶対に避けたい、せっかく10Gにしたスピードダウンは論外です。 2については独自ドメイン名が必要、つまり選択肢は3のみです。
やり方としては、MyDNSの設定で、下の図のようにIPv6対応できているユーザーはそのまま自宅サーバーにアクセスしてもらい、IPv4だけのユーザーはVPSに構築したリバースプロキシに接続し、リバースプロキシと自宅サーバーの間はIPv6で接続するというものです。
リバースプロキシを作るためには外部のサーバーを借りる必要があります。 中継をするだけなので、容量的には最小限でOK。 私はさくらインターネットのVPSを借りて構築することにしました。
VPSにはNginxをいれて自宅サーバーまで中継させます。このVPSにはコンテンツは何も置いていないので、本当に最小限の構成でOK。 IPv4とIPv6の橋渡しをするだけです。
しかし、このリバースプロキシにもWebサイトの証明書を入れておく必要があります。 私は自宅サーバー側ではLet’s Encryptのサイト証明を使っていますが、VPSにおく証明書も同じものでOK。 このLet’s Encryptの証明書は、3か月に一度証明書の更新が必要です。 私はこれを自動更新させており、この証明書が更新されたかどうかを確認し、更新されていた場合は自宅サーバーからリバースプロキシに証明書を転送するスクリプトを作って全部自動化してあります。
今後IPv4だけしかアクセスできないプロバイダーは減る方向と思いますが、規格が作られてから30年以上たった日本でも普及はまだまだ、世界レベルではおそらく数十年規模で時間が必要と思われるので、しばらくはこれで運用しようと思います。
自宅サーバー内のコンテンツを全部VPSに移すことも一案ですが、費用がおそらく膨大になることと、自由度の点でやはりこの構成が自分にとってはベストかなと思っています。
光ネットのスピードアップでPPPoEが使えず困っている方の参考になれば幸いです。

