結論から言うと、出来る。(改善点はたくさんある)
“出来ない”とするサイトも多いようだが、間違いなく出来る。
ドコモnetの光クロスにするとMAP-EのIPv6環境になるので、ISPが指定してきたポートでしかIPv4を使うことが出来ない。
※MAP-Eは1つのIPv4を複数の家庭で共有し、通信をポート毎に切り分けて配信している。
例
123.456.789.1:1~10000 →A宅
123.456.789.1:2~20000 →B宅
123.456.789.1:3~30000 →C宅…
このとき、ポート番号は契約者側から選ぶことは出来ないし、実際に割り当てられるポート番号も断続的。
2000~2100,3600~3650等
我が家の取得しているIPが下記の通りだったとして。
v6:2400:4051:0:0:123:456:789:1
v4:123.456.789.1
本来であればhoge.asami.chiba.jpに対するレコードを
AAAA 2400:4051:0:0:123:456:789:1
A 123.456.789.1
と設定しておけば良いのだが、これだとipv4の通信はポートが指定できないので通らない。
解決策その1
IPv6とIPv4をサブドメインで切り分け、IPv4接続の場合はMAP-Eで割り当てられたポート番号で通信をする。
IPv6.asami.chiba.jp = 2400:4051:0:0:123:456:789:1
IPv4.asami.chiba.jp:8080 = 123.456.789.1:8080
これで証明書周りは解決出来るが、面倒臭い。
解決策その2
cloudflareのproxyを使う。
cloudflareにAAAAレコードで登録しておけば、
ユーザーはCDN側と通信してくれるため、IPv4でも通信が出来る。
※自宅サーバー <=IPv6=> cloudflare <=IPv6 or IPv4=> client
ただし、無料プランだとクライアント側の最大アップロード容量が100MBに制限されてしまう。
私の環境ではファイルサーバーなども使うので採用出来なかった。Webサーバーなどであればこの方法が一番良いと思う。
解決策その3
VPSでIPv4&IPv6の両方を持つプロキシサーバーを立て、(IPv4環境から使うときは)経由させる。
ConoHaVPSでubuntu辺りを立て、squidを使って通信する。
※自宅サーバー <=IPv6=> PROXY <=IPv4=> client
自宅サーバーは基本的に限られたユーザーでしか利用していないため、今回はこの方法を採択した。
proxy経由でも60Mbps~80Mbpsは出してくれるので問題ない。
解決策その4
オレオレCDNを自前で用意…というよりはキャッシュサーバーを用意して、そっちと通信する。
イメージとしてはその2+3。ドメインのA&AAAAはcacheを示し、リダイレクトで自宅サーバーとやりとりさせる。
※自宅サーバー <=IPv6=> cache <=IPv6 or IPv4=> client
本来であればこの方法が一番利便性が高いので、実際問題とても悩んだ…のだが。
折角10Gで通信してるのに回線を落としたくないなあ、と。※サーバーは5Gbpsで動いている
実際に使うかはさておいてIPv6の環境では5Gbpsという数値を維持したいので採択しなかった。
ということで現状は1+3の両方で運用している。
IPv4でしか通信出来ない環境下ではプロキシをONにし、プロキシが使えない場合は泣く泣くポート番号を打って通信。
IPv4からの攻撃(他国からのランダムなアタック)が激減したと思えば、まあ許せるのかなあ。